【5.0対応済】Python3でZabbix API – ホストグループの登録と削除

2021年9月28日Python,Zabbix,Zabbix API

こんにちは。プラットフォーム技術部の飯出(いいで)です。

前回の記事ではZabbixに登録したホストグループの情報をZabbix APIを使って取得する実装の仕方について説明しました。今回はホストグループをZabbixに登録する方法、そして削除する方法について解説します。

この記事の実装サンプルでは、以前の記事で実装した内容を再利用して説明しています。Googleなどの検索結果から直接この記事に訪れた方は、一度、以下の記事を読んでいただけますと幸いです。

ホストグループの情報を登録する

使用するメソッドは、hostgroup.createです。公式のマニュアルはこちらです。

要求フォーマット

{
    "jsonrpc": "2.0",
    "method": "hostgroup.create",
    "params": {
        "name": "Linux servers"
    },
    "auth": "********************************",
    "id": 1
}

応答フォーマット

{
    "jsonrpc": "2.0",
    "result": {
        "groupids": [
            "107819"
        ]
    },
    "id": 1
}

ホストグループの登録に成功すると、Zabbix APIはホストグループのIDを応答します。

登録パラメーターの概要

日本語化してみました。

プロパティ宣言型説明
name(必須)stringホストグループの名前

ホストグループの登録は非常に簡単で、ホストグループの名前を指定するだけです。

Pythonで実装する

では、実際にホストグループの情報をZabbixに登録してみましょう。

実装の土台には、以前の記事で紹介した「ログイン~ログアウト、一連の流れ」を使います。記事はこちらです。

プログラム

以下のプログラムの中で、ハイライトしている部分がホストグループ固有の実装です。ホストグループ「Sample Hostgroup」を追加しています。

import os
import traceback
from function import login, logout, invoke
  
def main():
    server = "http://hostname/zabbix"
    user = "Admin"
    password = "******"
    session_id = ""

    try:
        session_id = login(server, user, password)
        if 0 < len(session_id):
            request = {
                "jsonrpc": "2.0",
                "method": "hostgroup.create",
                "params": {
                    "name": "Sample Hostgroup",
                },
                "auth": session_id,
                "id": 1
            }
 
            response = {}
            if invoke(server, request, response):
                print("groupid(s): {}".format(response["result"]["groupids"]))
 
            else:
                print("{}: error: message={}, data={}, code={}".format(
                    os.path.basename(__file__),
                    response["error"]["message"],
                    response["error"]["data"],
                    response["error"]["code"])
                )
             
    except Exception as e:
        print("{}: exception: {}".format(
            os.path.basename(__file__),
            traceback.format_exc())
        )
 
    finally:
        if 0 < len(session_id):
            # ログインしたら、忘れずにログアウトしましょう
            logout(server, session_id)
 
if __name__ == "__main__":
    main()

実行結果

PS C:\zabbixapi\sample> python3 .\sample-09.py
groupid(s): ['26']
ホストグループを登録する

ホストグループがちゃんと登録されました!

このプログラムとホストの登録プログラムを組み合わせて使用すれば、監視対象の情報登録は一気通貫で対応できますね!ホストの登録プログラムについては、以下の記事で紹介しています。

ホストグループを削除する

ホストグループを削除するには、hostgroup.deleteメソッドを使います。せっかく登録したホストグループですが、ここで削除しちゃいます(笑)

要求パラメーター

{
    "jsonrpc": "2.0",
    "method": "hostgroup.delete",
    "params": [
        "107824",
        "107825"
    ],
    "auth": "********************************",
    "id": 1
}

応答パラメーター

{
    "jsonrpc": "2.0",
    "result": {
        "groupids": [
            "107824",
            "107825"
        ]
    },
    "id": 1
}

Pythonで実装する

実装を紹介します。

ハイライトしている部分が、実装の変更点です。複数のホストグループを削除したい場合は、変数 groupids の配列に当該ホストグループのIDを追加することによって実現できます。

プログラム

import os
import traceback
from function import login, logout, invoke
  
def main():
    server = "http://hostname/zabbix"
    user = "Admin"
    password = "******"
    session_id = ""
 
    groupids = [
        "26"
    ]
 
    try:
        session_id = login(server, user, password)
        if 0 < len(session_id):
            request = {
                "jsonrpc": "2.0",
                "method": "hostgroup.delete",
                "params": groupids,
                "auth": session_id,
                "id": 1
            }
 
            response = {}
            if invoke(server, request, response):
                print("groupid(s): {}".format(response["result"]["groupids"]))
 
            else:
                print("{}: error: message={}, data={}, code={}".format(
                    os.path.basename(__file__),
                    response["error"]["message"],
                    response["error"]["data"],
                    response["error"]["code"])
                )
             
    except Exception as e:
        print("{}: exception: {}".format(
            os.path.basename(__file__),
            traceback.format_exc())
        )
 
    finally:
        if 0 < len(session_id):
            # ログインしたら、忘れずにログアウトしましょう
            logout(server, session_id)
 
if __name__ == "__main__":
    main()

実行結果

PS C:\zabbixapi\sample> python3 .\sample-10.py
groupid(s): ['26']
ホストグループの削除

ホストグループが削除できました。簡単でしたね。
今回の実装は、ここまで。

Zabbix4.0→5.0の変更点

バージョンアップによる影響はありません。

まとめ

この記事では、Zabbix APIを呼び出してホストグループを登録、削除する実装について紹介しました。

多量のホストグループを一気に追加するケースは少ないと思いますが、社内で新しいシステムを既存のZabbixで監視したい。となった場合など、ホストグループ – ホストの関係性を合わせて登録かつ自動化することで効率よく対応できるのではないでしょうか。

アークシステムは Zabbix Japan LLC の認定パートナー企業です。 当社はZabbixバージョン1.1の時代から監視ソリューションの活用を進め、Zabbixに関する製品・サービスの販売に加え、Zabbix関連サービスの提供を行っています。

Zabbixに関するお問い合わせはこちらからお願いいたします。
  • 株式会社アークシステムの予約・来訪管理システム BRoomHubs
  • 低コスト・短納期で提供するまるごとおまかせZabbix