🔖

ローカルな Zabbix アプライアンスのNTP設定

2020/09/23に公開

インターネットに繋がっていない環境下(正確にはVPN網で各拠点に接続)に設置している Zabbix アプライアンスにて、NTPサーバの指定がインターネット上のサーバを参照するように設定されているようで、気が付いたら時刻がずれていた。
(導入業者曰く、導入前に指示しないといけないらしい…導入前に言いなさいよそういうことは)

各拠点にはローカル NTP サーバが存在するので、Zabbix もローカルの NTP を参照するように設定し、時刻ずれを修正したメモ。

作業メモ

現在の状況をtimedatectlコマンドを実行して確認する。

~$ timedatectl
      Local time: Thu 2020-07-16 10:55:18 JST
  Universal time: Thu 2020-07-16 01:55:18 UTC
        RTC time: Thu 2020-07-16 02:04:47
       Time zone: Asia/Tokyo (JST, +0900)
 Network time on: yes
NTP synchronized: no
 RTC in local TZ: no

時間がずれていることと、Network time onyesと設定されているにも関わらずNTP synchronizednoとなっており、NTPサーバと同期が取れていないことが分かる。
(本例ではNTPサーバのIPアドレスを変更する必要があった)

現在のNTPクライアント設定を確認する。
NTPクライアントはNTPd、もしくはChronydを利用していない場合、大体systemd-timesyncdを利用しているはず。
(NTPサーバの機能を利用しないのであれば、systemd-timesyncdでクライアント機能だけを利用するのが好ましい)

まず設定ファイルの保存ディレクトリまで移動。

~$ cd /etc/systemd/
/etc/systemd$ ls
bootchart.conf  logind.conf  resolved.conf  system.conf     user
journald.conf   network      system         timesyncd.conf  user.conf

timesyncd.confが設定ファイルになるので、編集前にオリジナルのコピーを取得しておく。


/etc/systemd$ sudo cp -p timesyncd.conf timesyncd.conf.`date +%F`
/etc/systemd$ ls
bootchart.conf  logind.conf  resolved.conf  system.conf     timesyncd.conf.2020-09-28  user.conf
journald.conf   network      system         timesyncd.conf  user

バックアップ後、vi timesyncd.confで設定ファイルを開き、下記の通り`NTP=正しい内容に変更する。

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.

[Time]
NTP=xxx.xxx.xxx.xxx ←ここが正しくはローカルのNTPサーバのIPアドレスであるべきなので修正
FallbackNTP=0.jp.pool.ntp.org 1.jp.pool.ntp.org 2.jp.pool.ntp.org 3.jp.pool.ntp.org

修正した後に一応sysetmd-timesyncdのNTP機能を有効化。

/etc/systemd$ timedatectl set-ntp true

この時点ではまだ変更が適用されていないため、NTP同期が失敗したまま。
サービスの再起動を行って変更を適用する。

まだだめ。Status"Idle."になっており、待機中。

/etc/systemd$ systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-11-28 12:12:58 JST; 7 months 17 days ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 330 (systemd-timesyn)
   Status: "Idle."
   CGroup: /system.slice/systemd-timesyncd.service
           └─330 /lib/systemd/systemd-timesyncd

Jul 16 05:35:28 012S01ZA systemd-timesyncd[330]: Timed out waiting for reply from 192.168.0.2:123 (192.168.0.2).
Jul 16 06:09:46 012S01ZA systemd-timesyncd[330]: Timed out waiting for reply from 192.168.0.2:123 (192.168.0.2).
Jul 16 06:44:05 012S01ZA systemd-timesyncd[330]: Timed out waiting for reply from 192.168.0.2:123 (192.168.0.2).
Jul 16 07:18:23 012S01ZA systemd-timesyncd[330]: Timed out waiting for reply from 192.168.0.2:123 (192.168.0.2).
Jul 16 07:52:42 012S01ZA systemd-timesyncd[330]: Timed out waiting for reply from 192.168.0.2:123 (192.168.0.2).
Jul 16 08:27:00 012S01ZA systemd-timesyncd[330]: Timed out waiting for reply from 192.168.0.2:123 (192.168.0.2).
Jul 16 09:01:19 012S01ZA systemd-timesyncd[330]: Timed out waiting for reply from 192.168.0.2:123 (192.168.0.2).
Jul 16 09:35:37 012S01ZA systemd-timesyncd[330]: Timed out waiting for reply from 192.168.0.2:123 (192.168.0.2).
Jul 16 10:09:56 012S01ZA systemd-timesyncd[330]: Timed out waiting for reply from 192.168.0.2:123 (192.168.0.2).
Jul 16 10:44:14 012S01ZA systemd-timesyncd[330]: Timed out waiting for reply from 192.168.0.2:123 (192.168.0.2).

サービスを再起動。

/etc/systemd$ sudo systemctl restart systemd-timesyncd.service

修正が反映された。Status"Synchronized ~"となっており、同期が開始された。

/etc/systemd$ systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-07-16 11:00:19 JST; 12s ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 7616 (systemd-timesyn)
   Status: "Synchronized to time server 192.168.0.10:123 (192.168.0.10)."
   CGroup: /system.slice/systemd-timesyncd.service
           └─7616 /lib/systemd/systemd-timesyncd

Jul 16 11:00:19 012S01ZA systemd[1]: Starting Network Time Synchronization...
Jul 16 11:00:19 012S01ZA systemd-timesyncd[7616]: Synchronized to time server 192.168.0.10:123 (192.168.0.10).
Jul 16 11:00:19 012S01ZA systemd[1]: Started Network Time Synchronization.

最後に改めて現在の状況をtimedatectlコマンドを実行して確認。

/etc/systemd$ timedatectl
      Local time: Thu 2020-07-16 11:00:52 JST
  Universal time: Thu 2020-07-16 02:00:52 UTC
        RTC time: Thu 2020-07-16 02:00:52
       Time zone: Asia/Tokyo (JST, +0900)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

NTP synchronizedyesとなっており、NTPサーバと同期が取れていることが分かる。
もしも本設定を行っても時刻が同期されない場合は、大きく時刻がずれている可能性があるため、timedatectl set-time "時刻"コマンドにて手動で時刻合わせしてからサービスを再起動してみること。

Discussion