概要
- zabbixのホストグループを全て取得する方法を記載します。
TL;DR
- zabbix_apiモジュールを使えばhostgourpを全て取得することができる
- filterをかけなければ全てのhostgroupがとれてそう
- pandasで表形式にすることで人にとってみやすくなる
目次
- zabbix_apiモジュールをインストールする
- hostgroupを取得するためのコードを書く
- 実行し情報を取得する
- 取得したデータを整形する
使用するモジュール
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を立ち上げる方法はこちら
- 今回使用しているzabbixはdockerで開発環境用に容易しています
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
- 確認
- 全部でホストグループは17なので間違いなさそうですね。
最後に
- データ整形の仕方は色々あるのでpandasで自分の使いやすいデータの形にしてみてください
- 今後pandasの使い方も記事を書いていく予定です-
- このやり方でtemplateなど他のzabbixの情報も取れるので試してみてください。時間があれば記事にしていきます。