ELK Stackでシステム監視 FreeBSDにMetricbeatをインストールしてみる

FreeBSDのportsのbeatsは暫く壊れたまま放置されていたが、2018年3月に入ってようやく直してくれたみたい。このbeatsというports/pkgは以前は個別のbeat (Filebeat, Metricbeat, Packetbeat) だったports/pkgを統合したもの。統合後にHeartbeatを追加して現在は4つのbeat(s)になっている。
Beatsはシリーズ名(ファミリー名)みたいなもので4種以外にもたくさんあるのでこのports名はどうなんだろうというのが正直な気持ち。
そんなことはどうでもいいので、とりあえずインストールしてみた。

Go言語とBeatsをportsでインストール
# cd /usr/ports/lang/go
# make install clean
# cd /usr/ports/sysutils/beats
# make install clean

ビルドするBeatを選ぶ画面が出るので基本的にはFilebeat, Heartbeat, Metricbeat, Packetbeatの4つにチェック(初期値のまま)。ただし、この記事ではその内のMetricbeatしか扱わない。

/etc/rc.conf (1行追記)
metricbeat_enable="YES"
Metricbeatで使用可能なモジュールを確認する。
# metricbeat modules list -path.config /usr/local/etc
Enabled:
metric_system

Disabled:

Systemモジュールしか使えないのかしら?
なんかこのコマンド全然意味をなさないっぽいんだけど使い方が違うのかしら。 Debugログを表示したところ以下が使えるみたい。

モジュール
  • docker
  • mongodb
  • mysql
  • postgresql
  • system
  • uwsgi

MetricSet
  • aerospike/namespace
  • apache/status
  • ceph/cluster_disk
  • ceph/cluster_health
  • ceph/cluster_status
  • ceph/monitor_health
  • ceph/osd_df
  • ceph/osd_tree
  • ceph/pool_disk
  • couchbase/bucket
  • couchbase/cluster
  • couchbase/node
  • docker/container
  • docker/cpu
  • docker/diskio
  • docker/healthcheck
  • docker/image
  • docker/info
  • docker/memory
  • docker/network
  • dropwizard/collector
  • elasticsearch/node
  • elasticsearch/node_stats
  • etcd/leader
  • etcd/self
  • etcd/store
  • golang/expvar
  • golang/heap
  • graphite/server
  • haproxy/info
  • haproxy/stat
  • http/json
  • http/server
  • jolokia/jmx
  • kafka/consumergroup
  • kafka/partition
  • kibana/status
  • kubernetes/container
  • kubernetes/event
  • kubernetes/node
  • kubernetes/pod
  • kubernetes/state_container
  • kubernetes/state_deployment
  • kubernetes/state_node
  • kubernetes/state_pod
  • kubernetes/state_replicaset
  • kubernetes/system
  • kubernetes/volume
  • logstash/node
  • logstash/node_stats
  • memcached/stats
  • mongodb/collstats
  • mongodb/dbstats
  • mongodb/status
  • mysql/status
  • nginx/stubstatus
  • php_fpm/pool
  • postgresql/activity
  • postgresql/bgwriter
  • postgresql/database
  • prometheus/collector
  • prometheus/stats
  • rabbitmq/node
  • rabbitmq/queue
  • redis/info
  • redis/keyspace
  • system/core
  • system/cpu
  • system/diskio
  • system/filesystem
  • system/fsstat
  • system/load
  • system/memory
  • system/network
  • system/process
  • system/process_summary
  • system/raid
  • uwsgi/status
  • vsphere/datastore
  • vsphere/host
  • vsphere/virtualmachine
  • zookeeper/mntr

意外と使えるのね。意外なところでドキュメントに書かれてるsystem/uptimeが存在しないの。いやそれは使えるようにしようよ。

とりあえず、この記事ではSystemモジュールで出力できる設定を作成する。
なお、動作確認のためだけの単純な設定とする。

/usr/local/etc/metricbeat.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
metricbeat.config.modules:
  path: ${path.config}/beats/metric_*.yml     #ここが初期値と変わってるので注意
  reload.enabled: false

#output.elasticsearch:             #動作確認ではelasticsearchには出力しない
#  hosts: ["localhost:9200"]

output.logstash:
  hosts: ["localhost:5044"]

#output.console:                   #コンソールに出力
#  pretty: true

#logging.level: debug
logging.to_syslog: true
logging.to_files: false

# mkdir /usr/local/etc/beats
/usr/local/etc/beats/metric_system.yml (新規)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
- module: system
  metricsets: ["cpu"]
  cpu.metrics: [percentages, normalized_percentages, ticks]
  enabled: true
  period: 10s

- module: system
  metricsets: ["load"]
  enabled: true
  period: 10s

- module: system
  metricsets: ["filesystem"]
  filesystem.ignore_types: [nfs, smbfs, autofs]
  enabled: true
  period: 60s

- module: system
  metricsets: ["fsstat"]
  enabled: true
  period: 60s

- module: system
  metricsets: ["memory"]
  enabled: true
  period: 10s

- module: system
  metricsets: ["network"]
  interfaces: [em0]    #ネットワークIFとしてem0(だけ)を指定
  enabled: true
  period: 10s

- module: system
  metricsets: ["process"]
  processes: ['.*']    #全プロセス
  enabled: true
  period: 10s
  processors:
  - drop_fields:                          #processで出力しないフィールドの設定例↓
      fields: ["system.process.cmdline"]  #system.process.cmdlineフィールドを除外
    #↑ここは字下げ必要(drop_fields:と並べない)

上の様に設定ファイルを分けずに全部/usr/local/etc/metricbeat.ymlに書くのでも良い。(上の/usr/local/etc/metricbeat.ymlファイルのpath: ${path.config}/beats/metric_*.yml行と置き換える)
また監視項目別の個別設定が不要なら下のような書き方でも。(elastic社のドキュメントより)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
metricbeat.modules:
- module: system
  metricsets:
    - cpu
    - load
    #- core
    #- diskio
    - filesystem
    - fsstat
    - memory
    - network
    - process
    # Sockets (linux only)
    #- socket
  enabled: true
  period: 10s
Metricbeatを起動
# service metricbeat start

データ受信側にLogstashを使うが、テスト用のLogstash設定ファイル(本番稼働用のLogstash設定ファイルとは別)を作成する。

/usr/local/etc/logstash/test.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
input {
        beats {
                port => 5044
        }
}
output {
        stdout {
                codec => rubydebug
        }
}

Beat(s)からデータを受けて標準出力に出すという内容。
既に本番稼働しているBeatsがあってそれがポート5044を使っているなら別のポート番号を指定する。テスト用のMetricbeatの設定ファイルのポート番号もそれに合わせる。とにかく本番稼働で使用しているのとは別のポートを使うこと。

Logstashを起動してテスト
# /usr/local/logstash/bin/logstash --path.data /tmp -f /usr/local/etc/logstash/test.conf

Logstash起動コマンド実行からMetricbeatのデータが流れるまで暫く待たされる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
   "@timestamp" => 2018-03-05T04:22:37.536Z,
          "beat" => {
            "name" => "hoge.example.com",
        "hostname" => "hoge.example.com",
         "version" => "6.2.2"
    },
      "@version" => "1",
          "host" => "hoge.example.com",
     "metricset" => {
          "name" => "memory",
           "rtt" => 40,
        "module" => "system"
    },
         "error" => {
        "message" => "memory: open /compat/linux/proc/meminfo: no such file or directory"
    },
          "tags" => [
        [0] "beats_input_raw_event"
    ]
}

上の出力例の15行目にエラーメッセージがある。
/compat/linux/proc/hogeが無いということはLinux互換モードが必要。う〜ん、Linuxに寄りすぎだわね。
仕方がないのでFreeBSDをLinux互換モードにして/compat/linux/proc/hogeを使えるようにしてやる。

/etc/rc.conf (追記1行)
linux_enable="YES"

これでOSを再起動するとカーネルにlinux.ko, linux_common.ko, linux64.ko おそらくこの3つあたりが読み込まれている筈。
惜しいことにこれだけではlinprocfs.koを読んでくれてない。

/boot/loader.conf (追記1行)
linprocfs_load="YES"

これで次回OS起動から自動でlinprocfs.koを読んでくれる。

OS起動後に手動でカーネルモジュールを読み込ませたいならkldload hoge、読み込んでいるカーネルモジュールをリスト表示したいならkldstat

# kldload linprocfs   #モジュール読み込みが正常なら何も返事してこない
# kldstat
Id Refs Address            Size     Name
 1   31 0xffffffff80200000 1f67a88  kernel
 2    1 0xffffffff82169000 1620     accf_data.ko
 3    1 0xffffffff8216b000 2678     accf_http.ko
 4    1 0xffffffff8216e000 4d18     coretemp.ko
 5    1 0xffffffff82173000 39d8     cc_htcp.ko
 6    1 0xffffffff82511000 5936     fdescfs.ko
 7    1 0xffffffff82517000 34d3c    pf.ko
 8    1 0xffffffff8254c000 42864    linux.ko
 9    3 0xffffffff8258f000 7b0f     linux_common.ko
10    1 0xffffffff82597000 3c93f    linux64.ko
11    1 0xffffffff825d4000 a877     linprocfs.ko
ディレクトリ作成
# mkdir -p /compat/linux/proc
linprocfsを手動マウントする。
# mount -t procfs proc /proc
# mount -t linprocfs /dev/null /compat/linux/proc
Logstashで結果を確認
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
    "@timestamp" => 2018-03-05T05:07:39.461Z,
        "system" => {
        "memory" => {
            "actual" => {
                "free" => 8512475136,
                "used" => {
                      "pct" => 2182392106.3244,
                    "bytes" => 18446744073649610752
                }
            },
             "total" => 8452534272,
              "used" => {
                  "pct" => 0.0762,
                "bytes" => 644132864
            },
              "free" => 7808401408,
              "swap" => {
                "total" => 0,
                 "used" => {
                      "pct" => 0,
                    "bytes" => 0
                },
                 "free" => 0
            }
        }
    },
          "beat" => {
            "name" => "hoge.example.com",
        "hostname" => "hoge.example.com",
         "version" => "6.2.2"
    },
      "@version" => "1",
          "host" => "hoge.example.com",
     "metricset" => {
          "name" => "memory",
           "rtt" => 216,
        "module" => "system"
    },
          "tags" => [
        [0] "beats_input_raw_event"
    ]
}

正常に値を取れていることが確認できたのでlinprocfsの自動マウント指定を/etc/fstabに書き込む。
linprocfsが正常に使えないのに/etc/fstabに書き込んだら次回にOSが正常に起動できなくてシングルユーザーモードで停まってしまう。 シングルユーザーモードの操作が解らないと途方に暮れることになるので注意。 mount -u / を実行して/etc/fstabを修正してumount -aをしてrebootだけのことだけど。

/etc/fstab (追記2行)
1
2
proc    /proc               procfs     rw  0   0
linproc /compat/linux/proc  linprocfs  rw  0   0

初稿ではlinprocfsだけ追加にしていたが、FreeBSD標準設定でprocfsが入っていないので追加した。

Metricbeatの出力データはおそらく加工無しにelasticsearchに読み込ませて良いかと思われるのでLogstashを介する必要は無いはず。テストが終わったらMetricbeatの出力先をLogstashからelasticsearchに変更する。

/usr/local/etc/metricbeat.yml (変更箇所)
1
2
3
4
5
output.elasticsearch:
    hosts: ["localhost:9200"]

#output.logstash:
#  hosts: ["localhost:5044"]
Metricbeatの再起動
# service metricbeat restart

そのうちportsに手が入ってLinux互換モード無しでMetricbeatが使えるようになるのかしら?

関連記事:

Windows 10の時刻同期設定

家のWindows PCは最近NASの仕事も別のホストに奪われたのでほぼテレビの録画のためだけに存在している。だから24/365稼働もすでにしていない。
そのテレビ録画だが、なんか番組の頭が1,2分くらい撮れていない。数秒程度なら現在のテレビ放送の仕組みとしては理解できなくもないが、1分を超えるのは尋常じゃない。マザボの電池切れのときのような数時間ドカンとズレるとか何年も巻き戻るとかじゃないからクロックオシレータがおかしいのかしら。
と、思って調べたら、直近のWindowsクリーンインストールの後に時刻同期設定をするのを忘れてた。

Q. 何でWindowsの時刻同期設定を忘れたら時間が狂うの?
A. 現在のWindowsの初期値では時刻同期してくれないから。

いやいやtime.windows.comと定期的に同期するよね?
それは7日ごとの決まった時間(日曜日の深夜1時)に運良くWindowsが起動していて、且つtime.windows.comが正常に時刻を返してくれたらというハードルの高い条件付きよ。こんなので時刻合わせできると期待しちゃダメ。

そこで、時刻同期する設定を行う。

変なトリガー起動サービス削除

まず、Windowsに最初から設定されている週1実行のトリガー起動サービスを削除する。こいつが有効だと週1回の時刻同期の後にActive Directoryドメイン非参加のPCではw32timeサービスが(動いていたら)停められてしまう。マイクロソフトらしいなんとも意味不明なアホアホ仕様。

Windows10を最新状態に更新しているなら「スタートボタン」を左クリック、「Windowsシステムツール」を左クリック、「コマンドプロンプト」を右クリック、「その他」「管理者として実行」で管理者権限のコマンドプロンブトを開く。 Windows10が古い状態ならスタートボタンを右クリックして「コマンドプロンプト(管理者)」をクリック。
以下この記事中のコマンドはPowerShellでは絶対に実行しないこと。

C:\Windows\system32> sc triggerinfo w32time delete
[SC] ChangeServiceConfig2 SUCCESS
緑字のコマンドを入力して[Enter]、SUCCESSが返れば成功。

w32timeサービスの自動開始設定

C:\Windows\system32>  sc config w32time start= delayed-auto
[SC] ChangeServiceConfig SUCCESS
これでw32timeのサービス起動設定が「自動(遅延実行)」になった。
確認コマンドを実行。
C:\Windows\system32> sc qc w32time
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: w32time
        TYPE               : 20  WIN32_SHARE_PROCESS
        START_TYPE         : 2   AUTO_START  (DELAYED)
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\Windows\system32\svchost.exe -k LocalService
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Windows Time
        DEPENDENCIES       :
        SERVICE_START_NAME : NT AUTHORITY\LocalService
START_TYPE が AUTO_START (DELAYED) になっていればOK.

w32timeサービスを起動

C:\Windows\system32>  sc start w32time

SERVICE_NAME: w32time
        TYPE               : 30  WIN32
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x7d0
        PID                : 4772
        FLAGS              :
このコマンドでw32timeサービスを起動。すぐに結果を返してくれるのは良いが、まだSTATEがSTART_PENDINGになっている。
C:\Windows\system32>  sc query w32time

SERVICE_NAME: w32time
        TYPE               : 30  WIN32
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
このコマンドはw32timeサービスの起動コマンド実行から10秒以上経ってから実行。
STATEがRUNNINGになっていれば「実行中」になっている。これでOK.

個人的にはWindowsのGUI画面の情報なんか全然信用してなくてCUIの文字情報を盲目的に信じる傾向があるが、世の中には逆の人もいるということで、一応Windows窓アプリの画面で確認。

サービスの状態確認
スタートボタンを左クリック、「Windows 管理ツール」から「サービス」を起動して右列のリストを下にスクロールして「Windows Time」を探す。
状態が「実行中」でスタートアップの種類が「自動(遅延開始)」になっている筈。これだけのこと。

同期先指定

C:\Windows\system32> w32tm /config /manualpeerlist:"192.168.0.1,0x9"
コマンドは正しく完了しました。

C:\Windows\system32> w32tm /config /syncfromflags:manual /update
コマンドは正しく完了しました。

上のコマンドの192.168.0.1の部分は同期させたいNTPサーバのアドレスに置き換えて。LAN内にNTPサーバがあるならそのアドレスを指定。家庭用ルーターにNTPサーバ機能があって有効にしているならそのルーターのアドレスを指定する。
NTPソースは複数指定できるので「192.168.0.1,0x9 192.168.0.2,0x2」のように半角スペースを挟んで指定する。
上では2つのw32tm /config を実行しているが、オプションを纏めて1回の実行でも構わない。

基本的に家庭や職場・学校の個々の端末から公開NTPサーバに時刻を取りに行くのは無しの方向で。特に福岡大のNTPサーバは今後時期不明に停止するとのことなので設定しないこと。家庭内・組織内にNTPサーバなんか無いよということであればヘタに公開NTPサーバを指定するよりは寧ろ初期値のtime.windows.comにしたままの方がマシ。(こっちは混んでもmicrosoftの自業自得)
どうしてもtime.windows.com以外の公開NTPサーバから時刻を貰わなくてはならない場合は同期頻度を1日1回(orそれ以下)に下げること。

以前(一時期だけど) INTAA.NETのNTPサーバをpool.ntp.orgに参加させたらNTPサーバとルーターが悲鳴を上げたので公開NTPサーバって大変だなって思った。だから公開NTPサーバの負荷にならないよう皆で協力しようね。


サーバアドレスの後の,0x?はフラグ。
  • 0x1:  指定するとSpecialInterval(同期間隔固定)、指定しないとMaxPollIntervalとMinPollIntervalを使用
  • 0x2:  UseAsFallbackOnly (フォールバック用NTPサーバのフラグに付ける)
  • 0x4:  SymmetricActive (相互同期モード NTPサーバ用かと)
  • 0x8:  Client (NTPクライアントとして要求)
  • 0x9:  0x1 + 0x8 (NTPクライアントとして固定間隔で時刻を取る)
  • 0xa:  0x2 + 0x8 (NTPクライアントとして代替NTPから時刻を取る)
上のコマンドで反映されるレジストリの値は
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\ParametersのNtpServer文字列値。だからレジストリファイルをダブルクリックで設定を適用という方法もある。(下の方にダウンロードリンク)
1
2
3
4
5
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
"NtpServer"="192.168.0.1,0x9"
"Type"="NTP"

同期間隔指定

  • SpecialPollInterval : 固定間隔 Windows独自の設定
  • MaxPollInterval : 最大間隔
  • MinPollInterval : 最小間隔

3つの値の内、SpecialPollIntervalとMaxPollInterval&MinPollIntervalは排他設定っぽいけど実際の動作は違う(不明な)ようなので注意。

SpecialPollIntervalは値(秒)毎に時刻同期するという指定で、10進数の秒で指定する。
MaxPollInterval(最大間隔)とMinPollInterval(最小間隔) の値は単純な秒数ではなく2の「べき乗」の秒数なので値が7なら7秒ではなく27(=128秒: 2分と少し)、値が8なら28(=256秒 : 約4分ちょっと)になるので注意。

実際にMaxPollInterval, MinPollIntervalの指定で使いそうな範囲
  • 29 : 512秒 (約8分半)
  • 210 : 1024秒 (約17分)
  • 211 : 2048秒 (約34分)
  • 212 : 4096秒 (約1時間8分)
  • 213 : 8192秒 (約2時間16分半)
  • 214 : 16384秒 (約4時間33分)
  • 215 : 32768秒 (約9時間6分)
  • 216 : 65536秒 (約18時間12分)
  • 217 : 131072秒 (約1日と12時間24分半)
  • 218 : 262144秒 (約3日と49分)
1
2
3
4
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient]
"SpecialPollInterval"=dword:00000384

16進数で384は10進数で900 = 15分。30分はdword:00000708、1時間はdword:0000e10、2時間はdword:00001c20 。

1
2
3
4
5
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config]
"MaxPollInterval"=dword:0000000f
"MinPollInterval"=dword:0000000a

dword:0000000fは10進数では15でこの値では215秒の意味なので9時間余り、dword:0000000aは10進数では10で210秒(約17分)、これが初期値。 SpecialPollIntervalを使うつもりでもMaxPollInterval, MinPollIntervalに影響されるようなので、SpecialPollIntervalと矛盾しない範囲でそれぞれ設定しておく。SpecialPollIntervalがMaxPollInterval&MinPollIntervalの値の範囲内にあるようにすると矛盾しない。

レジストリファイル

レジストリを変更するコマンドもあるが、間違ったレジストリのコマンドが通ってしまうので怖い、同様にレジストリエディタで直に変更もあまり好ましく思っていないので、レジストリファイルを使って登録することにしている。(次回以降のクリーンインストール後の設定でも使えるし)まぁ、コマンドをバッチファイルでも良いんだけど。

「がとらぼ」のウェブサーバーではレジストリファイルをクリックするとテキストファイルとして表示されるようになっているので上のリンクを右クリックしてファイルとして保存する。
ダウンロードしたらメモ帳やエディタで開いて必要に応じて値の変更を行ってから上書き保存し、ファイルをダブルクリックするとレジストリが適用される。

ローカルグループポリシーエディタで変更

Windows 10 Proエディション以上の場合はローカルグループポリシーエディタでの設定も可(ただし、前述のNTPサーバ指定とSpecialPollIntervalだけ)。

時刻同期確認 5
ローカルグループポリシーエディタの左列から「コンピューターの構成」「管理用テンプレート」「システム」「Windows タイムサービス」「タイム プロバイダー」を辿る。
右列から「Windows NTPクライアントを構成する」をダブルクリック

時刻同期確認 6
上部の「有効」ラジオボタンを選択する。
NtpServerにNTPサーバとフラグを指定する。(前述参照)
SpecialPollIntervalの秒数を指定。(普通の10進数の整数)
「適用」「OK」を押す。

同様の手順で1つ前の画像の右列「Windows NTPクライアントを有効にする」の項目の上部の「有効」ラジオボタンを選択して適用・OKを押す。

確認

C:\Windows\system32> w32tm /query /status /verbose
閏インジケーター: 0 (警告なし)
階層: 4 (二次参照 - (S)NTP で同期)
精度: -23 (ティックごとに 119.209ns)
ルート遅延: 0.1493977s
ルート分散: 8.3389868s
参照 ID: 0xC0A80001 (ソース IP:  192.168.0.1)
最終正常同期時刻: 2018/03/04 19:18:20
ソース: 192.168.0.1,0x9
ポーリング間隔: 10 (1024s)

フェーズ オフセット: 0.4989077s
クロック レート: 0.0156250s
State Machine: 1 (保留)
タイム ソース フラグ: 0 (なし)
サーバーのロール: 0 (なし)
最終同期エラー: 0 (コマンドは正しく完了しました。)
最終正常同期時刻からの時間: 171.9005943s

コマンドプロンプトだとこんな感じ。
指定はSpecialPollInterval 900秒(15分)の筈だけどポーリング間隔は210(=1024)秒で約17分になってる。いろいろ試したけど2nな値にしかならないのでSpecialPollIntervalが使われないのは何でかしら。なんかドキュメントどおりじゃなくて納得できないけど、そういうものなのかな、所詮Windowsだし。というか「固定間隔」というWindows独自の変なのは使えない方が良いのか・・

一応、GUI画面でも確認しておく。

時刻同期確認 1
デスクトップの時計をクリックし、「日付と時刻の設定」をクリックする。

時刻同期確認 2
下にスクロールして、「日付、時刻、地域の追加設定」をクリックする。

時刻同期確認 3
「日付と時刻」または、「日付と時刻の設定」をクリックする。

時刻同期確認 4
「日付と時刻」窓の上部の「インターネット時刻」タブを選択する。
指定したNTPサーバと同期できていること、次回の同期予定日時と前回正常に同期した日時を比較して指定どおりかそれに近い間隔になっていることを確認する。

この画面の「設定の変更」を触るとここまで行った変更が上書きされる可能性があるので手を付けないのが無難。

関連記事:
Up