1. 日本語情報はユーザーパスワード認証が主流
Zabbix 6.2 から導入された APIトークン (API token) 。Zabbix の Web ページのメニューにもありますよね。
しかし、日本語で Zabbix の API について検索すると、歴史的なものもあってユーザーパスワード認証の方法が多くヒットします。
2. ユーザーパスワード認証のリクエスト例
Zabbix API での認証リクエストは次のようになります。(公式ドキュメント より)
リクエスト例
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}
レスポンス例
{
"jsonrpc": "2.0",
"result": "0424bd59b807674191e7d77572075f33",
"id": 1
}
ユーザーパスワード認証の場合、"method": "user.login"
でユーザー名とパスワードを送信し、返ってきたトークンを以降のリクエストで "auth"
フィールドに埋め込みます。
3. API トークンは "auth"
に埋め込むのか?
では、6.2 以降で使える API トークンも同じように "auth"
に埋め込めばいいのかと思ったのですが、そうではありませんでした。
私の聞き方が悪かったのか、ChatGPT などの生成 AI に尋ねても、同じような説明が返ってきて、しばらくハマりました。
4. 正解は「ヘッダーに埋め込む」
Zabbix 7.2 の公式ドキュメント によると、API トークンはヘッダーで指定します。
正しい API リクエストの例
curl --request POST \
--url 'https://example.com/zabbix/api_jsonrpc.php' \
--header 'Content-Type: application/json-rpc' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--data '{"jsonrpc":"2.0","method":"apiinfo.version","params":{},"id":1}'
5. 英語のマニュアルもちゃんと読みましょう
Zabbix の API を正しく使うには、英語の公式ドキュメントを確認するのが一番確実です。機械翻訳も活用して、最新バージョンのマニュアルを読みましょう。