2023年5月31日水曜日

Zabbix で 1000件を超えたホスト名が表示されない。

 



調子に乗って大量のホストを登録したわけではないのですが、1000件を超えると Zabbix の管理画面からホストの表示ができなくなることがわかりました...

SQL に詳しい人だったら SQLを操作してサクサクと上限値を変えることができるんでしょうが、自慢ではないがさっぱり自信がありません。

どうやら search_limit に設定されている値で表示件数が決まるようです。昨今の機種はスペック的に上限値を変えても問題はないと思うのですが、昔は 1000件辺りが表示のボーダーラインだったのでしょうか。

で、現在の search_limit の値を確認する、及び変更するスクリプトを作ってみました。1000 → 3000 へ値を変えて運用していますが、今のところ特に問題は起きておりません。お約束ですが、自己責任でお願いします。

search_limit_get.sh

##################################
### Zabbix の表示数を確認する  ###
##################################
ZabbixWeb=http://192.168.1.248/zabbix/

PRE_IFS=$IFS
IFS=$'\n'
auth=`bash zabbix_token_get.sh`
tempNAME=$1
curl -s -d '
{
    "jsonrpc": "2.0",
    "method": "settings.get",
    "params": {
        "output": "extend"
    },
    "auth": "'${auth}'",
    "id": 1
}
' -H "Content-Type: application/json-rpc" ${ZabbixWeb}api_jsonrpc.php | gawk '-F"' '{print $14}'
IFS=$PRE_IFS


2023年5月29日月曜日

Zabbix APIで楽してホストを登録する

 Zabbix APIがあるので、ファイル一覧を作成してホストの登録をすることとする。

作成するスクリプトは参考にしたwebページに掲載されているファイル名のまま。けっこう色々なサイトで公開されていますね。

デフォルトの管理者名が「Admin」になっていますが、うちの場合小文字の「admin」を他機器で使用しています。「Admin」は残したまま「admin」を Super Admin role で追加してあります。

以降、管理者は「admin」を使うこととします。

スクリプトは /root/shell/zabbix へまとめて置いてあります。

で、ホストを登録するには

  • 監視対象ホスト作成時に所属先ホストグループを1つ以上選択しなければならない

という決まりがあります。ホスト作成時に所属先ホストグループがないとエラーになってしまいホストを登録できません。

どんな風にホストグループを登録するかですが、会社の組織に沿って作ってみました。青山本社と相模原支社がありますので、それぞれの機器に対するグループを作ってみました。

作った後に気が付いたのですが、Zabbix の監視を停止したいことがあります。

具体例でいうと法定停電時の監視停止です。停電の日は違うので、青山全域・相模原全域を個別に監視停止できるようにできると便利だなと後から思いました。

まぁ使い勝手は後々考えるとして、取り敢えずはホストの自動登録ができるところまで進めることにします。

認証トークンの取得

認証トークン」とはざっくり説明すると 「Zabbix APIで、ユーザーのIDとパスワードでログイン認証する代わりに必要な32文字の文字列」です。

Zabbix操作時に IDとパスワードを入力する代わりに、JSONクエリの "auth"パラメーターにユーザーの認証トークンを指定します。

zabbix_token_get.sh

#!/bin/bash
#########################################
## Zabbix token get                    ##
#########################################
ZabbixWeb=http://192.168.1.248/zabbix/
#上記IPは自分の環境に合わせて変更
#ログインIDとPWも適宜変更のこと
curl -s -d '{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "admin",
        "password": "adminのパスワード"
    },
    "id": 1,
    "auth": null
}' -H "Content-Type: application/json-rpc" ${ZabbixWeb}api_jsonrpc.php | gawk -F'"' '{print $8}'