自動登録の設定をしようとした際、サービスが開始されないようになる。
スクリプトでのZabbixAgentのインストールとサービス開始まで出来るようになり、これに自動登録の機能を追加する際にサービスの開始ができなくなりました。
何か疑われる原因があれば、ご教示願います。
Zabbixのバージョン:Zabbix 2.2.10
監視対象のOS:Windows Server 2012 R2 Standard
■どうしたいか
・スクリプトでZabbixAgentインストール、サービス開始、Zabbixサーバへの自動登録を行いたい。
■設定
[confファイル]
LogFile=<指定のlogファイル>
Server=<ZabbixサーバのIPアドレス>
ServerActive=<ZabbixサーバのIPアドレス>
Hostname=<ホスト名>
HostMetadata=touroku
[confファイルの置換コマンド]
LogFile,Server,ServerActive,HostMetadataのコマンド
$conf= $conf.Replace(<置換前の文字列>, <置換後の文字列>)
Hostnameのコマンド
$result = hostname
$conf = $conf.Replace("Hostname=[MOD_HOSTNAME]", "Hostname=$result")
上記以外は変更していません。
■exeファイル実行からサービスの開始までのコマンド
# exe実行
cd
.\zabbix_agentd.exe -i -c
## スタートアップの種類:手動
Get-Service -DisplayName 'Zabbix Agent' | Set-Service -StartupType Manual
# サービス開始
.\zabbix_agentd.exe -s -c
# スタートアップの種類:自動
Set-Service -Name 'Zabbix Agent' -StartupType Automatic
■PowerShellの実行結果
zabbix_agentd.exe [54876]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [54876]: event source [Zabbix Agent] installed successfully
zabbix_agentd.exe [152240]: service [Zabbix Agent] started successfully
→サービス一覧では"Zabbix Agent"は"自動"で開始されていない状態です。
■Zabbixサーバ側での設定
設定>アクション>自動登録
名前:自動登録
[アクションの実行条件]
ラベル/名前
(A)/ホストメタデータ 含まれる touroku
[実行内容]
詳細
ホストを追加
■疑問に思ったこと
・"Hostname"はexeファイルを実行する時に必要で、"HostnameItem=system.hostname"は自動登録する時に必要だと思っているのですが、両方設定することは可能でしょうか?
・現在、テストしているホストは現在Zabbixサーバに既に登録されており、利用する際はZabbixサービスの削除とフォルダのリネームを行いZabbixサーバ側はホスト名とIPアドレスを変更してテストしています。もしかしてこちらも何か関係ありますでしょうか?
以上、宜しくお願い致します。
TNK - 投稿数: 4730
Windows上のサービス一覧の画面に情報が反映されていないだけな
のですか?
それとも、Zabbixエージェントのプロセスが起動できず、Zabbixエ
ージェントがZabbixサーバーからの要求に応答しないのですか?
サービス一覧の画面に反映されないだけなら、Windows上のサービ
スを起動するために、zabbix_agentd.exeを-sオプションで起動す
るのではなく、net startなりStart-Serviceを使って起動してみて
ください。
両方設定した場合には、「Hostname」が優先されます。
「Hostname」が設定されていない場合は、「HostnameItem」が使用
されます。
Zabbixサーバー上から削除されているのであれば、関係ないでしょ
う。
Windows上のサービスが起動するかどうかということなら、なおさ
らZabbixサーバー上の状態は全く関係ありません。
自動登録のアクションが実行されないとかなら、Zabbixサーバーの
ログを確認してください。
zazabi - 投稿数: 26
TNK様
回答ありがとうございます。
>Windows上のサービス一覧の画面に情報が反映されていないだけなのですか?
>それとも、Zabbixエージェントのプロセスが起動できず、
>ZabbixエージェントがZabbixサーバーからの要求に応答しないのですか?
Zabbixエージェントのサービス起動が出来ず、そのためZabbixサーバも反応していないような状態です。
試しに「Start-Service –Name 'Zabbix Agent' –PassThru」や「net start "Zabbix Agent"」のコマンドを使用してみたり、手動で開始しようとしたのですがどちらも反応がありません。
>両方設定した場合には、「Hostname」が優先されます。
>「Hostname」が設定されていない場合は、「HostnameItem」が使用されます。
では、自動登録をする際は「Hostname」と「HostnameItem」の両方の設定をした方がよろしいみたいですね…。
>Zabbixサーバー上から削除されているのであれば、関係ないでしょう。
>Windows上のサービスが起動するかどうかということなら、なおさ
>らZabbixサーバー上の状態は全く関係ありません。
承知しました、使用するホストに関してはこのままで作業しようと思います。
TNK - 投稿数: 4730
一度、zabbix_agentd.exeをコマンドプロンプト上で-cで設定ファ
イルを引数で指定して起動を試みてください。
設定ファイルのフォーマットエラーなどがあれば、そこでエラーが
表示されるはずです。
両方設定するのは無駄です。
どちらか設定するだけで十分です。
zazabi - 投稿数: 26
TNK様
コメントありがとうございます。
>一度、zabbix_agentd.exeをコマンドプロンプト上で-cで設定ファ
>イルを引数で指定して起動を試みてください。
.\zabbix_agentd.exe -s -c でやってみましたが、
「zabbix_agentd.exe [7612]: service [Zabbix Agent] started successfully」と出力されるものの
サービス一覧上では開始になりませんでした。
全体を洗ってみた結果、Logファイルの引数ミスでした。修正したらそのままのコマンドで開始できました。
>両方設定するのは無駄です。
>どちらか設定するだけで十分です。
confファイルのhostname= を無記名のままエージェントをインストールしようとすると、
「zabbix_agentd.exe [55240]: ERROR: invalid "Hostname" configuration parameter: ''」
というエラーが発生しました。
何度か試した結果、HostnameItem を使わなくても自動登録できました。
TNK - 投稿数: 4730
-sオプションが余計です。
設定ファイルの設定に誤りがあったりファイルのフォーマットに
問題があった場合は、-cオプションだけで起動するとエラーが表
示されたはずです。
zazabi - 投稿数: 26
TNK様
.\zabbix_agentd.exe -c
で実行してみたところ、以下の文が出力されました。
--------------------------------------------------------------------------------------------------------------------
zabbix_agentd.exe [26120]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [26120]: event source [Zabbix Agent] installed successfully
zabbix_agentd.exe [888]:
!!!ATTENTION!!! Zabbix Agent started as a console application. !!!ATTENTION!!!
--------------------------------------------------------------------------------------------------------------------
「-s」はスタート指示のオプションコマンドの事だと思いますので、現行-sは付けたままのスクリプトを使用しようと思います。
TNK - 投稿数: 4730
すでに起動されている状態で再度実行することは必要ありません。
起動できるようになったのであれば、改めて実行しなおす必要もあ
りません。
起動できない時、設定ファイルに誤りがないか確認するときのチェ
ック方法を示しただけです。