Hatohol serverに監視対象サーバをコマンドラインで登録する
Hatoholは、Server部とWebUI生成部で構成されています。Server部は、Rest APIを提供しているため、ブラウザを使わなくても、Serverを直接制御することが可能な設計になっています。本稿では、ZABBIXなどの監視サーバをコマンドラインツールのcurlを用いて登録する例を紹介します。
セッションIDの取得
Hatohol serverにログインして、セッションIDを取得します。以下の例ではHatohol serverのホスト名をserver.exampleとします。
$ curl -d 'user=Admin' -d 'password=hatohol' http://server.example:33194/login
成功すると、次のようなJSON形式で、sessionIdが返されます。今後、このIDを使用して各種操作を行います。
{"apiVersion":4,"errorCode":0,"sessionId":"12dba9dd-7c9f-476e-9a47-983bd156438c"}
セッションIDの有効期限はデフォルト10分です。ただし、そのIDを使った操作が行われると、そこから更に10分、期限が延長されます。
監視サーバの登録
以下の表に示した構成で、Zabbixサーバを登録します。
設定項目 | 内容 |
---|---|
ZABBIXサーバーアドレス | 172.16.0.61 |
ニックネーム | test-zabbix |
監視インターバル(秒) | 30 |
リトライインターバル(秒) | 15 |
$ curl -H 'X-Hatohol-Session:12dba9dd-7c9f-476e-9a47-983bd156438c' -d 'type=7' -d 'uuid=8e632c14-d1f7-11e4-8350-d43d7e3146fb' -d 'nickname=test-zabbix' -d 'pollingInterval=30' -d 'retryInterval=15' -d 'userName=Admin' -d 'password=zabbix' -d 'baseURL=http://172.16.0.61/zabbix/api_jsonrpc.php' -d 'passiveMode=false' -d 'brokerUrl=amqp://user:passwd@broker/vhost' http://server.example:33194/server
成功すると、次のような応答があります。
{"apiVersion":4,"errorCode":0,"id":1}
上記コマンドラインのパラメータtypeとuuidは、HAPI2.0を用いてZABBIXサーバから情報を取得する場合の固定値です。毎回この値を指定します。Nagiosなど他のサーバを追加する場合、HAPI2.0の仕様書からuuidを調べて使用してください。typeはHAPI2.0使用時、常に7です。
また、brokerUrlについても、実際の環境に応じて適宜、ユーザー名、パスワード、ブローカーアドレス、vhostを設定してください。
登録されたサーバの確認
Hatohol serverに登録されている監視サーバの一覧も、同様にコマンドラインでcurlを用いて取得することができます。
$ curl -H 'X-Hatohol-Session:12dba9dd-7c9f-476e-9a47-983bd156438c' http://server.example:33194/server 2>/dev/null | jsonpipe | less
/ {}
/apiVersion 4
/errorCode 0
/numberOfServers 1
/servers []
/servers/0 {}
/servers/0/id 1
/servers/0/type 7
/servers/0/hostName "test-zabbix"
/servers/0/ipAddress ""
/servers/0/nickname "test-zabbix"
/servers/0/port 0
/servers/0/pollingInterval 30
/servers/0/retryInterval 15
/servers/0/baseURL "http://172.16.0.61/zabbix/api_jsonrpc.php"
/servers/0/extendedInfo ""
/servers/0/userName "Admin"
/servers/0/password "zabbix"
/servers/0/dbName ""
/servers/0/passiveMode false
/servers/0/brokerUrl "amqp://user:passwd@broker/vhost"
/servers/0/staticQueueAddress ""
/servers/0/tlsCertificatePath ""
/servers/0/tlsKeyPath ""
/servers/0/tlsCACertificatePath ""
/servers/0/uuid "8e632c14-d1f7-11e4-8350-d43d7e3146fb"
/servers/0/tlsEnableVerify true
上記のコマンドライン例で、jsonpipeとlessは、出力を見やすくするために使用されています。生のJSONをファイルに落とす場合などには不要です。