るいすのブログ

オタクエンジニアの雑記

Zabbix 3.0rc1 を使ってAPIを試してみたゾ!


Zabbix 3.0rc1 がちょっと前にリリースされた。 個人でもバイト先でも使ってるのでちょっとかじっとこうと思った。

新機能

p4_150618231720p4_150618231921p4_150618232148です! といっても色々と2.4からの変更は大きいです。 Webインターフェイスの自動アップデートなんかもあったりします。

APIはもちろん、予測機能とかいった意味分からないのもあります。 軽く使ってみた。

 

 

SnapCrab_NoName_2016-2-9_12-8-14_No-00

Zabbix のダウンロードページ見たら色んなのがあった。 今回はProxmoxに入れるのでqcowを選んだ。

 

FireShot Capture 2 - Zabbix Appliance_ ダッシュボード_ - http___192.168.20.14_zabbix_zabbix.php これがデフォルトのBlueテーマ UIがだいぶ良い意味で変わってます。 項目とかが変わったわけではないので2.4からでも困ることはなさそう。

 

FireShot Capture 3 - Zabbix Appliance_ ダッシュボード_ - http___192.168.20.14_zabbix_zabbix.php

もう1つはBlackテーマ 色の使い方がとてもしゅき♡

 

軽くAPIも触ってみた

<?php

$data = array(
    'jsonrpc' => '2.0',
    'method' => 'user.login',
    'params' => array(
        'user' => 'Admin',
        'password' => 'zabbix'
    ),
    'id' => 1,
    'auth' => null
);
$data = json_encode($data);

$header = [
    'Content-Type: application/json'
];

$context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => implode(PHP_EOL, $header),
        'content' => $data,
    )
));

echo file_get_contents('http://192.168.20.14/zabbix/api_jsonrpc.php', false, $context);
{
    "id": 1, 
    "jsonrpc": "2.0", 
    "result": "8e685e619309d120767050692f4eb7b0"
}

リクエスト先が "http://hogepi/zabbix/api_jsonrpc.php" これでPOSTするとauthkeyが返ってくるのでこれを使って色々するらしい。

 

<?php

$data = array(
    'jsonrpc' => '2.0',
    'method' => 'host.get',
    'params' => array(
        'output' => array(
            'hostid',
            'host'
        ),
        'selectInterfaces' => array(
            'interfaceid',
            'ip'
        ),
    ),
    'id' => 2,
    'auth' => '0e5672ca90c2257dcba19e00bb67ff72'
);
$data = json_encode($data);

$header = [
    'Content-Type: application/json'
];

$context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => implode(PHP_EOL, $header),
        'content' => $data,
    )
));

echo file_get_contents('http://192.168.20.14/zabbix/api_jsonrpc.php', false, $context);
{
    "id": 2, 
    "jsonrpc": "2.0", 
    "result": [
        {
            "host": "Zabbix server", 
            "hostid": "10084", 
            "interfaces": [
                {
                    "interfaceid": "1", 
                    "ip": "127.0.0.1"
                }
            ]
        }
    ]
}

監視対象のホスト名とIPが返ってくる。 APIを使えば何か便利なことができるんだろうか...。何も思いつかない...。

とここまで書いててあれなんですけど、APIって Zabbix 2.x からできたんだな...。 恥ずかしい...。新機能だと思ってた...。