見出し画像

【Linux】「そのログ、本当に同時刻?」サーバー間の時差をミリ秒で暴くclockdiff

分散システムでの障害調査中、こんな経験はありませんか? 「Webサーバーのエラーログと、DBサーバーのスロークエリログ。タイムスタンプがズレていて因果関係がわからない……」

NTP(時刻同期)を設定していても、高負荷時やネットワーク障害時には一時的に時刻がズレることがあります。 そんな時、相手サーバーとの 「時差(delta)」 を即座に計測できるコマンドが、今回紹介する clockdiff です。

Pingの親戚?「ICMP TIMESTAMP」の力

clockdiff は、ネットワーク疎通確認に使われる ping と似ていますが、中身は少し違います。 通常のPing(Echo Request)ではなく、「ICMP TIMESTAMP」 という特殊なパケットを相手に送りつけ、「送信時刻」と「受信時刻」の差分を計算して返してくれます。

コマンド一発で delta=5ms のように表示されるため、「あ、こっちのサーバーが5ミリ秒遅れてるな」と瞬時に判断できます。

ブログで解説している「通らない」時の対処法

非常に便利なコマンドですが、現代のセキュリティ環境では一筋縄ではいかないこともあります。私の技術ブログでは、以下のポイントを解説しました。

  • 権限の壁: 生のソケット(Raw Socket)を扱うため、一般ユーザーでは実行できず sudo が必須な理由。

  • ファイアウォールの壁: 「Pingは通るのに clockdiff が通らない(タイムアウトする)」原因となる、ICMP Timestampパケットのブロック設定について。

  • IPオプション: 通常のICMPが弾かれる場合に、IPヘッダオプションを使う -o フラグの活用法。

  • リアルタイム監視: watch コマンドと組み合わせ、NTP再起動後に時刻が徐々に同期されていく様子(deltaが0に近づく様子)を可視化するテクニック。

「ログの時間が合わない」というミステリーを解くための探偵ツール。 いざという時のために、ぜひ以下の記事で使い方をチェックしておいてください。


いいなと思ったら応援しよう!