ELK Stackでシステム監視 collectdでNTPサーバの情報収集

collectdを使ってホストの情報を集めるのならついでにNTPサーバのoffsetやdelayなどの情報も集めたいというのはあるかと思う。

いつもFreeBSDばかりなので今回はdebian系のLinuxのホストにcollectdを入れるところから。

collectdのインストール

# apt-get update    ← パッケージ関係の情報更新
# apt-cache search collectd       ←collectdパッケージを検索
collectd - statistics collection and monitoring daemon   ←これを入れたい
collectd-core - statistics collection and monitoring daemon (core system)
collectd-dbg - statistics collection and monitoring daemon (debugging symbols)
collectd-dev - statistics collection and monitoring daemon (development files)
collectd-utils - statistics collection and monitoring daemon (utilities)
libcollectdclient-dev - client library for collectd's control interface (development files)
libcollectdclient1 - client library for collectd's control interface
fedmsg - Fedora messaging infrastructure system - general utilities
kcollectd - simple collectd graphing frontend for KDE
shinken-mod-collectd - Shinken mod-collectd module
shinken-mod-collectd-doc - Shinken mod-collectd module - Documentation
mtail - Extract monitoring data from logs for collection in a timeseries database
# apt-get install collectd    ←インストール
後略

collectdの設定

/etc/collectd/collectd.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
Hostname "hoge.localnet"
LoadPlugin cpu
LoadPlugin df
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
LoadPlugin network
LoadPlugin ntpd
LoadPlugin processes
LoadPlugin swap
<Plugin network>
    Server "192.168.12.1" "25826"         #ELK StackホストのIPアドレスとポート
    <Server "192.168.12.1" "25826">
    </Server>
</Plugin>
<Plugin ntpd>
        Host "127.0.0.1" 
        Port 123
        ReverseLookups false
        IncludeUnitID false
</Plugin>

collectdの再起動

# service collectd restart

おそらくcollectdをインストールしたらその時点で勝手にサービス起動されてしまう筈なので起動ではなく再起動。

上手くいかない場合

これだけだとntpdの情報が収集できないことが多い筈。大抵はcollectd側が悪いのではなくてntpdの設定(最近のバージョンの初期値)の問題。

/etc/ntp.conf (追加1行)
enable mode7

ntpdを再起動する。

# service ntp restart

不要だと思うけど、もしcollectdのntpdモジュールが読み込まれないなら

# ldd /usr/lib/collectd/ntpd.so

もし、これで上手くいくなら/etc/ld.so.conf.d下にでも書いておく。

collectdを再起動する。

# service collectd restart

動作確認

確認方法は以前の記事を参照。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
{
       "@timestamp" => 2018-02-09T00:28:58.786Z,
    "type_instance" => "GPS_NMEA",
           "plugin" => "ntpd",
             "host" => "ntp.localnet",
         "@version" => "1",
    "collectd_type" => "delay",
             "type" => "collectd",
            "value" => 0.00055908203125
}
{
       "@timestamp" => 2018-02-09T00:28:58.786Z,
    "type_instance" => "PPS",
           "plugin" => "ntpd",
             "host" => "ntp.localnet",
         "@version" => "1",
    "collectd_type" => "time_offset",
             "type" => "collectd",
            "value" => 0.0001209167316555977
}

こんな風にpluginがntpdであるデータが表示されればOK。
なお、上はntpdのdelayとtime_offsetだけ載せてるけど実際は他の情報もてんこ盛り。ntpdの情報だけでも参照する全てのNTPソース(NTPサーバ)がtype_instanceに登場するので結構すごい量の筈。

関連記事: