現在位置: ホーム / みらくるブログ / Hatohol serverに監視対象サーバをコマンドラインで登録する

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をファイルに落とす場合などには不要です。