ab’s blog

インフラの呟きです。

Zabbix(ver6) 正規表現一覧をAPIで取得

hahahahahaha

目次

はじめに

Zabbix6からAPIでグローバル正規表現を取得できるようになりました。差分の比較とかに使えるかと。

サンプル

shellで一覧を取得するサンプルです、ユーザーは特権ユーザー(Admin)が必要です。

zbx_reg.sh

#!/bin/bash
#################################################################
TMPFILE=tmp.tmp
header='Content-Type:application/json-rpc'
apiurl='http://localhost/zabbix/api_jsonrpc.php'
RPC='"jsonrpc":"2.0"'

# ログイン
METHOD='"method":"user.login"'
PARAMS='"params":{"user": "Admin","password": "Abc12345"}'
ID='"id": 1'
AUTH='"auth": null'
json="{$RPC,$METHOD,$PARAMS,$ID,$AUTH}"

curl -sS -X POST -H "${header}" -d "${json}" ${apiurl} > $TMPFILE
zbxauth=$(jq -r .result < $TMPFILE)




# 正規表現一覧取得
METHOD='"method": "regexp.get"'
PARAMS='"params": {"output": ["regexpid", "name"],"selectExpressions": ["expression", "expression_type"],"preservekeys": true}'
ID='"id": 2'
AUTH='"auth": "'$zbxauth'"'
json="{$RPC,$METHOD,$PARAMS,$ID,$AUTH}"

curl -sS -X POST -H "${header}" -d "${json}" ${apiurl}




# ログアウト
METHOD='"method":"user.logout"'
PARAMS='"params":[]'
ID='"id": 3'
AUTH='"auth": "'$zbxauth'"'
json="{$RPC,$METHOD,$PARAMS,$ID,$AUTH}"

curl -sS -X POST -H "${header}" -d "${json}" ${apiurl} > $TMPFILE

exit 0

実行例

結果をjqで成型しています。

$ ./zbx_reg.sh | jq
↓
{
  "jsonrpc": "2.0",
  "result": {
    "1": {
      "regexpid": "1",
      "name": "File systems for discovery",
      "expressions": [
        {
          "expression": "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$",
          "expression_type": "3"
        }
      ]
    },
    "2": {
      "regexpid": "2",
      "name": "Network interfaces for discovery",
      "expressions": [
        {
          "expression": "^Software Loopback Interface",
          "expression_type": "4"
        },
        {
          "expression": "^(In)?[Ll]oop[Bb]ack[0-9._]*$",
          "expression_type": "4"
        },
        {
          "expression": "^NULL[0-9.]*$",以下続く

以上