Windows用Zabbixエージェントについて

Windows用のZabbixエージェントですが通常のZabbixエージェントといくつか異なる点が有ります。

- - -
<b>■その１ オプション</b>
左がWindows用、右が通常のZabbixエージェントで--helpオプションを実行したものです。

```
>zabbix_agentd.exe --help                                                       ]# zabbix_agentd --help
usage:                                                                          usage:
  zabbix_agentd.exe [-c config-file]                                              zabbix_agentd [-c config-file]
  zabbix_agentd.exe [-c config-file] -p                                           zabbix_agentd [-c config-file] -p
  zabbix_agentd.exe [-c config-file] -t item-key                                  zabbix_agentd [-c config-file] -t item-key
  zabbix_agentd.exe [-c config-file] -i [-m]                                      zabbix_agentd [-c config-file] -R runtime-option
  zabbix_agentd.exe [-c config-file] -d [-m]                                      zabbix_agentd -h
  zabbix_agentd.exe [-c config-file] -s [-m]                                      zabbix_agentd -V
  zabbix_agentd.exe [-c config-file] -x [-m]                                    
  zabbix_agentd.exe -h                                                          A Zabbix daemon for monitoring of various server parameters.
  zabbix_agentd.exe -V                                                          
                                                                                Options:
A Zabbix daemon for monitoring of various server parameters.                      -c --config config-file        Absolute path to the configuration file
                                                                                                                 (default: "/etc/zabbix/zabbix_agentd.conf")
Options:                                                                          -f --foreground                Run Zabbix agent in foreground
  -c --config config-file        Absolute path to the configuration file          -p --print                     Print known items and exit
                                 (default: "C:\zabbix_agentd.conf")               -t --test item-key             Test specified item and exit
  -f --foreground                Run Zabbix agent in foreground                   -R --runtime-control runtime-option   Perform administrative functions
  -p --print                     Print known items and exit                     
  -t --test item-key             Test specified item and exit                       Runtime control options:
  -m --multiple-agents           For -i -d -s -x functions service name will          log_level_increase=target  Increase log level, affects all processes if
                                 include Hostname parameter specified in                                         target is not specified
                                 configuration file                                   log_level_decrease=target  Decrease log level, affects all processes if
Functions:                                                                                                       target is not specified
                                                                                
  -i --install                   Install Zabbix agent as service                      Log level control targets:
  -d --uninstall                 Uninstall Zabbix agent from service                    pid                      Process identifier
  -s --start                     Start Zabbix agent service                             process-type             All processes of specified type (e.g.,
  -x --stop                      Stop Zabbix agent service                                                       listener)
                                                                                        process-type,N           Process type and number (e.g., listener,3)
  -h --help                      Display this help message                      
  -V --version                   Display version number                           -h --help                      Display this help message
                                                                                  -V --version                   Display version number
Example: zabbix_agentd -c C:\zabbix\zabbix_agentd.conf                          
                                                                                Example: zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
Report bugs to: <https://support.zabbix.com>                                    
Zabbix home page: <http://www.zabbix.com>                                       Report bugs to: <https://support.zabbix.com>
Documentation: <https://www.zabbix.com/documentation>                           Zabbix home page: <http://www.zabbix.com>
                                                                                Documentation: <https://www.zabbix.com/documentation>
>

```

#### ●オプションの違いその１ -R(Runtime control)オプション
通常のZabbixエージェントは-Rオプションを使用することで再起動を行わなくてもログ出力のデバックレベルを変更できるのですが、Windows用は-Rオプションが使えないのでデバックレベルを変更する場合はzabbix_agentd.confのDebugLevelを変更してサービスの再起動が必要になります。

#### ●オプションの違いその２ サービスの登録(-i)、削除(-d)、開始(-s)、停止(-x)と-mオプション
WindowsではZabbixエージェントはWindowsサービスとして登録して使用します。
その為のオプションがサービスの登録(-i)、削除(-d)、開始(-s)、停止(-x)になります。
Zabbixエージェントをサービス登録するとサービス名は「Zabbix Agent」で登録されます。

Windowsサービスに単純に２つのZabbixエージェントを登録しようとするとサービス名がバッティングしてエラーになります。
![2016-12-03_001.png](https://qiita-image-store.s3.amazonaws.com/0/103473/52d9ef25-2c62-003d-ebbf-31ebeb4cf1ec.png)

複数のZabbixエージェントをサービス登録する場合は-mオプションを使います。(準備としてHostnameが異なるzabbic_agentd.confを用意します。)
そして、-mオプションを加えて実行すると以下の様に登録できます。
![2016-12-03_002.png](https://qiita-image-store.s3.amazonaws.com/0/103473/8205f1bb-6888-6f7c-a683-ae9ab16f061a.png)

サービスを見ると以下の様に登録されました。
![2016-12-03_003.png](https://qiita-image-store.s3.amazonaws.com/0/103473/29946175-39aa-3979-e99f-491538ced678.png)

-mオプションを付けるとサービス名は「Zabbix Agent [Hostnameに設定した文字]」で登録されるのでバッティングせずに登録することができます。
※：複数Zabbixエージェントを登録するときはListenPortもバッティングしない様に気を付けてください。

尚、-mオプションはサービスの登録(-i)以外の削除(-d)、開始(-s)、停止(-x)でも使用します。

- - -
<b>■その２ OSの文字コードの影響による違い</b>
Zabbixですが文字コードはUTF-8を使用しています。

日本語のWindowsはデフォルトがShift_JISに設定されている為、zabbix_agentd.exeを実行する際に下記の様な文字化けメッセージが表示される場合があります。
![2016-12-03_004.png](https://qiita-image-store.s3.amazonaws.com/0/103473/dc712965-21d9-12b7-99ab-1b1172f1afb6.png)

この文字化けはnkfwin32.exeを使うと簡単に回避できます。
![2016-12-03_005.png](https://qiita-image-store.s3.amazonaws.com/0/103473/f5dad6b0-a504-80dc-c8bc-28e6b5b6574c.png)

尚、下記のエラーですが「サービスマネージャに接続しようとしたけど権限がない」と言うエラーになります。

```
ERROR: cannot connect to Service Manager: [0x00000005] アクセスが拒否されました。
```

zabbix_agentd.exeを実行する場合、「コマンドプロンプト」は「管理者として実行」を選択して起動しないとサービス登録・削除・起動・停止すべてでこのエラーが発生しますので注意が必要です。

使用しているnkf32.exeですが、Vectorの下記リンクからダウンロードした物を使用しています。
[nkf.exe nkf32.dll Windows用](http://www.vector.co.jp/soft/win95/util/se295331.html)

<b>蛇足として…</b>
zabbix_sender.exeを使った監視でも同様でzabbix_sender.exeはデータをUTF-8で取り込みます。その為、監視データがShift_JISの場合、zabbix_sender.exeに引き渡す前にUTF-8に変換する必要があります。

- - -
<b>■その３ 使用できるアイテムとできないアイテム</b>
これについてはマニュアルの下記を見て頂ければ良いかなと…A(^_^;

[1 Items supported by platform](https://www.zabbix.com/documentation/3.2/manual/appendix/items/supported_by_platform)

[Windows-specific item keys](https://www.zabbix.com/documentation/3.2/manual/config/items/itemtypes/zabbix_agent/win_keys)

- - -
<b>■その４ 設定ファイルの違い</b>
以下の違いが有ります。

#### Windows用では使用できないパラメータ

- PidFile
- AllowRoot
- User
- LoadModulePath
- LoadModule

#### Windows用でのみ使用できるパラメータ
- PerfCounter

#### その他
- LogType … Windows用はsystemを指定するとsyslogではなくeventlogにログを出力します。
- MaxLinesPerSecond … Windows用はeventlogアイテムにも影響します。