NTPとは
NTP(Network Time Protocol)、エヌティーピー。
時計を正しい時刻へ同期するための通信プロトコル。
UDPポート123を使用
NTPプロトコル上では協定世界時(UTC)を使って時刻を送受信する。
ntpd
ntpdは代表的なNTPの実装。
1000秒以上のズレを検知した場合は単純なクロック誤差ではないと判断し、同期しない。
ntpq
ntpdがシステムクロックを同期する様子を見るためのコマンド
ntpq -pの見方
remoteの左に同期しているサーバーに*がつきます。
また、複数設定している場合には、同期可能なサーバーに+がつきます。refid:参照しているサーバーの、更に上位のNTPサーバです。
st:stratum番号、サーバーが第何階層か示す
when:前回サーバーを参照してから経過した秒数です。pollに達すれば再度参照します。
poll:参照する間隔(秒数)です。
reach:過去8回の参照結果です。同期したした場合1、同期しなかった場合0です。
8進数で表示されており、
毎回同期されると377(8進数)となります。つまり11111111(2進数)です。
delay:ポーリングインターバルの遅延見積もり(単位:ミリ秒)
offset:NTPサーバとのずれ(ミリ秒)
jitter:NTPサーバがどのくらい正確なのかを示す指標です。値が小さいほど正確。
ntpdログの長期保存と監視方法
PCIDSS で必要になる ntpd のログの取得と監視体制の構築 | Developers.IO
Amazon Linuxの時刻
デフォルトの状態
https://dev.classmethod.jp/cloud/aws/clock-on-amazon-linux-and-ntp/
Amazon Linuxはntpdがインストール済みで動作している。ログは出力していない。
設定ファイルを読めば、同期しているNTPサーバも確認できる。
$cat /etc/ntp.conf 省略 server 0.amazon.pool.ntp.org iburst server 1.amazon.pool.ntp.org iburst server 2.amazon.pool.ntp.org iburst server 3.amazon.pool.ntp.org iburst 省略
注意事項:
- pool.ntp.orgはNTP POOL PROJECTが提供するタイムサーバーの仮想クラスタ。
- pool.ntp.orgはAWSが管理するタイムサーバではない。
- poolに参加するサーバにはあまり厳密な規格が無い。
- 場合によっては精度の低いNTPサーバが割り当てられてしまうこともある。
Amazon Time Sync Service
ntpdやchronydでの設定方法
AWS公式の時刻設定方法(chronyでの設定例)
chronyd
- 新しいNTPクライアント&サーバ
- ntpdとの同時使用はできない
- CentOS 7で"最小限のインストール"以外を選んだ場合にデフォルトでインストールされる
- システムクロックを ntpd より速くより正確に同期させることができる
- ntpd を使用する理由が特になければ chrony を使用することを推奨
サーバ時刻の取得例(zabbix 3.0)
各ホストの時刻のキーは「system.localtime」。
テンプレート「Template OS Linux」の取得アイテムにも「system.localtime」は含まれている。
テンプレート「Template OS Linux」を適用している場合、「監視データ > 最新データ > 名前に"local time" を設定し、フィルター」で、各ホストの時刻を確認できる
各ホスト毎に取得時刻が異なるため、当然"最新の値"は異なる。
サーバ時刻のズレを監視する例(zabbix)
Zabbix3.0での設定例:
https://qiita.com/miyahang55/items/9d1f99e9549143cdc8de
テンプレートを使ってntpqの情報を取得する:
https://qiita.com/qryuu/items/518a7167b728f2662ddd