0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pythonを使ってzabbixのホストグループを全て取得する

Posted at

概要

  • zabbixのホストグループを全て取得する方法を記載します。

TL;DR

  • zabbix_apiモジュールを使えばhostgourpを全て取得することができる
  • filterをかけなければ全てのhostgroupがとれてそう
  • pandasで表形式にすることで人にとってみやすくなる

目次

  1. zabbix_apiモジュールをインストールする
  2. hostgroupを取得するためのコードを書く
  3. 実行し情報を取得する
  4. 取得したデータを整形する

使用するモジュール

zabbix_api
pandas
json

zabbix_apiを使ってhost groupを全て取得する

1. zabbix_apiモジュールをインストールする

  • 下記のコマンドを実行する
pip install zabbix_api

2. hostgroupを取得するためのコードを書く

  • 最低限全てのホストグループを取得するためのコード
from zabbix_api import ZabbixAPI
import json

url = "http://localhost:8081"
user = "Admin"
password = "*****" #環境に応じて置き換えてください

zx = ZabbixAPI(url)
zx.login(user, password)

all_hostgroup_list = zx.hostgroup.get(
    {
        "output": ["groupid", "name"],
    }
)

zx.logout()

if __name__ == "__main__":
    print(json.dumps(all_hostgroup_list))

解説

  • zabbixのurl,ログインユーザー名,パスワードを変数として定義する
    • 今回使用しているzabbixはdockerで開発環境用に容易しています
      • dockerでzabbixを立ち上げる方法はこちら
url = "http://localhost:8081"
user = "Admin"
password = "*****" #環境に応じて置き換えてください
  • こちらのzabbix_apiのREADMEに沿ってZabbixにログインする
zx = ZabbixAPI(url)
zx.login(user, password)
  • hostgroupを取得するためのコードを書く
all_hostgroup_list = zx.hostgroup.get(
    {
        "output": ["groupid", "name"],
    }
)
  • ログアウトする
zx.logout()

3. 実行し情報を取得する

>>>python3 zabbix_hostgroup.py
[{"groupid": "5", "name": "Discovered hosts"}, {"groupid": "7", "name": "Hypervisors"}, {"groupid": "2", "name": "Linux servers"}, {"groupid": "1", "name": "Templates"}, {"groupid": "12", "name": "Templates/Applications"}, {"groupid": "13", "name": "Templates/Databases"}, {"groupid": "8", "name": "Templates/Modules"}, {"groupid": "9", "name": "Templates/Network devices"}, {"groupid": "10", "name": "Templates/Operating systems"}, {"groupid": "18", "name": "Templates/Power"}, {"groupid": "16", "name": "Templates/SAN"}, {"groupid": "11", "name": "Templates/Server hardware"}, {"groupid": "15", "name": "Templates/Telephony"}, {"groupid": "17", "name": "Templates/Video surveillance"}, {"groupid": "14", "name": "Templates/Virtualization"}, {"groupid": "6", "name": "Virtual machines"}, {"groupid": "4", "name": "Zabbix servers"}]

4. 取得したデータを整形する

pip install pandas

データ整形するためのコードを追加

from zabbix_api import ZabbixAPI
import json
import pandas as pd #←追加

url = "http://localhost:8081"
user = "Admin"
password = "zabbix"

zx = ZabbixAPI(url)
zx.login(user, password)

all_hostgroup_list = zx.hostgroup.get(
    {
        "output": ["groupid", "name"],
    }
)

hostgroup_df = pd.DataFrame(all_hostgroup_list) #←追加
hostgroup_df.to_csv("all_hostgroup.csv", encoding="utf_8_sig") #←追加

zx.logout()

if __name__ == "__main__":
    print(json.dumps(all_hostgroup_list))
  • 生成されたcsv file
    • encoding="utf_8_sig"にしているため文字化けもしない
,groupid,name
0,5,Discovered hosts
1,7,Hypervisors
2,2,Linux servers
3,1,Templates
4,12,Templates/Applications
5,13,Templates/Databases
6,8,Templates/Modules
7,9,Templates/Network devices
8,10,Templates/Operating systems
9,18,Templates/Power
10,16,Templates/SAN
11,11,Templates/Server hardware
12,15,Templates/Telephony
13,17,Templates/Video surveillance
14,14,Templates/Virtualization
15,6,Virtual machines
16,4,Zabbix servers
  • 確認

zabbix_hostgroup.png

  • 全部でホストグループは17なので間違いなさそうですね。

最後に

  • データ整形の仕方は色々あるのでpandasで自分の使いやすいデータの形にしてみてください
    • 今後pandasの使い方も記事を書いていく予定です-
  • このやり方でtemplateなど他のzabbixの情報も取れるので試してみてください。時間があれば記事にしていきます。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?