【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の導入・構築でお困りですか?

Zabbixの導入・構築でお困りですか?アークシステムは、Zabbix Japan LLCの公式認定パートナーとして、豊富な実績と高い技術力でお客様をサポートします。

アークシステムが選ばれる理由

  • 豊富な経験: 多くのZabbix導入・構築プロジェクトを成功に導いた実績
  • 確かな技術力: Zabbix認定資格を持つエンジニアが対応
  • 独自のソリューション: 「監視定義テンプレート」を活用した迅速かつ高品質な実装
  • 最新情報へのアクセス: Zabbix社との強力なパートナーシップを活かした最新技術対応

こんな方に最適です

  • Zabbixの新規導入を検討している
  • 現行システムの運用に課題を感じている
  • 大規模環境での監視体制を整えたい

アークシステムでは、Zabbixの導入・運用に関する課題を解決し、最適な環境を構築します。どんなご相談でもお気軽にお問い合わせください!

  • Zabbix Enterprise Appliance
  • 低コスト・短納期で提供するまるごとおまかせZabbix