こんにちは、SCSK株式会社の小寺崇仁です。
このブログではZabbixのデータベース内部構成について紹介をしたいと思ってます。
第2弾としてアイテム、トリガーの設定を取得するSQLを作成してみます。
はじめに
私はZabbixの構築を主に担当しています。最近はZabbixと外部システムを連携しているお客様が増加傾向にあると感じています。外部システムと連携をしたいお客様にはサポート範囲内である、ZabbixAPIを使用した方法を案内しています。
しかし、Zabbixはオープンソースであり、RDBMSを使用しているため、DBを直接参照することが可能です。DBの知識がある方であれば、容易にデータ抽出ができますので、表の構造とサンプルSQLを記事にしたいと思います。
注意事項
- Zabbixのデータベース内部に関するは情報が少ないです。そのため私が個人的にDBを解析して情報発信を行う非公式情報になります。
- 当社ではZabbixの有償サポートを実施しております。Zabbixのデータベース内部に関する問い合わせはサポート範囲に含まれておらず、本ブログの内容をサポート宛に問い合わせをいただいても回答ができません。
- 個人的に作成したSQLです。自己責任でご利用ください。間違っていた場合イベント等でこっそり教えてください。
テーブル定義(MySQL)
items
アイテム情報が格納されるのテーブルです。
Field | 日本語名称 | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|---|
itemid | アイテムID | bigint unsigned | NO | PRI | NULL | |
type | タイプ | int | NO | 0 | 0 – Zabbix エージェント 2 – Zabbix トラッパー 3 – シンプル チェック 5 – Zabbix インターナル 7 – Zabbix エージェント (アクティブ) 9 – Web アイテム 10 – 外部チェック 11 – データベース監視 12 – IPMI エージェント 13 – SSH エージェント 14 – Telnet エージェント 15 – 計算済み 16 – JMX エージェント 17 – SNMP トラップ 18 – 依存アイテム 19 – HTTP エージェント 20 – SNMP エージェント 21 – スクリプト |
|
snmp_oid | SNMP OID | varchar(512) | NO | |||
hostid | ホストID | bigint unsigned | NO | MUL | NULL | |
name | 名前 | varchar(255) | NO | |||
key_ | アイテムキー | varchar(2048) | NO | MUL | ||
delay | 監視間隔 | varchar(1024) | NO | 0 | ||
history | ヒストリ保存期間 | varchar(255) | NO | 90d | ||
trends | トレンド保存期間 | varchar(255) | NO | 365d | ||
status | ステータス | int | NO | MUL | 0 | 0 – 有効なアイテム 1 – 無効なアイテム |
value_type | 値のタイプ | int | NO | 0 | 0 – 数値(浮動小数) 1 – 文字列 2 – ログ 3 -数値(整数) 4 – テキスト |
|
trapper_hosts | トラッパーホスト | varchar(255) | NO | |||
units | 単位 | varchar(255) | NO | |||
formula | 計算式 | varchar(255) | NO | |||
logtimefmt | ログ時間形式 | varchar(64) | NO | |||
templateid | テンプレートID | bigint unsigned | YES | MUL | NULL | |
valuemapid | 値のマップID | bigint unsigned | YES | MUL | NULL | |
params | パラメータ | text | NO | NULL | ||
ipmi_sensor | IPMIセンサー | varchar(128) | NO | |||
authtype | 認証タイプ | int | NO | 0 | ||
username | ユーザー名 | varchar(64) | NO | |||
password | パスワード | varchar(64) | NO | |||
publickey | 公開鍵 | varchar(64) | NO | |||
privatekey | 秘密鍵 | varchar(64) | NO | |||
flags | フラグ | int | NO | 0 | ||
interfaceid | インターフェースID | bigint unsigned | YES | MUL | NULL | |
description | 説明 | text | NO | NULL | ||
inventory_link | 在庫リンク | int | NO | 0 | ||
lifetime | 有効期間 | varchar(255) | NO | 30d | ||
evaltype | 評価タイプ | int | NO | 0 | ||
jmx_endpoint | JMXエンドポイント | varchar(255) | NO | |||
master_itemid | マスターアイテムID | bigint unsigned | YES | MUL | NULL | |
timeout | タイムアウト | varchar(255) | NO | 3s | ||
url | URL | varchar(2048) | NO | |||
query_fields | クエリフィールド | varchar(2048) | NO | |||
posts | 投稿 | text | NO | NULL | ||
status_codes | ステータスコード | varchar(255) | NO | 200 | ||
follow_redirects | リダイレクト追跡 | int | NO | 1 | ||
post_type | 投稿タイプ | int | NO | 0 | ||
http_proxy | HTTPプロキシ | varchar(255) | NO | |||
headers | ヘッダ | text | NO | NULL | ||
retrieve_mode | 取得モード | int | NO | 0 | ||
request_method | リクエストメソッド | int | NO | 0 | ||
output_format | 出力形式 | int | NO | 0 | ||
ssl_cert_file | SSL証明書ファイル | varchar(255) | NO | |||
ssl_key_file | SSL鍵ファイル | varchar(255) | NO | |||
ssl_key_password | SSL鍵パスワード | varchar(64) | NO | |||
verify_peer | ピア検証 | int | NO | 0 | ||
verify_host | ホスト検証 | int | NO | 0 | ||
allow_traps | トラップ許可 | int | NO | 0 | ||
discover | ディスカバー | int | NO | 0 | ||
uuid | UUID | varchar(32) | NO |
※参考:APIマニュアルhttps://www.zabbix.com/documentation/6.0/jp/manual/api/reference/item/object
triggers
トリガー情報が格納されるのテーブルです。
Field | 日本語名称 | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|---|
triggerid | トリガーID | bigint unsigned | NO | PRI | NULL | |
expression | 式 | varchar(2048) | NO | |||
description | 説明 | text | NO | NULL | ||
url | URL | varchar(255) | NO | |||
status | ステータス | int | NO | MUL | 0 | 0 – 有効 1 – 無効 |
value | 値 | int | NO | MUL | 0 | |
priority | 優先度 | int | NO | 0 | 0 – 未分類 1 – 情報 2 – 警告 3 – 軽度の障害 4 – 重度の障害 5 – 致命的な障害 |
|
lastchange | 最終変更 | int | NO | 0 | ||
comments | コメント | text | NO | NULL | ||
error | エラー | varchar(2048) | NO | |||
templateid | テンプレートID | bigint unsigned | YES | MUL | NULL | |
type | タイプ | int | NO | 0 | ||
state | 状態 | int | NO | 0 | ||
flags | フラグ | int | NO | 0 | ||
recovery_mode | リカバリーモード | int | NO | 0 | ||
recovery_expression | リカバリー式 | varchar(2048) | NO | |||
correlation_mode | 相関モード | int | NO | 0 | ||
correlation_tag | 相関タグ | varchar(255) | NO | |||
manual_close | 手動クローズ | int | NO | 0 | ||
opdata | 操作データ | varchar(255) | NO | |||
discover | ディスカバー | int | NO | 0 | ||
event_name | イベント名 | varchar(2048) | NO | |||
uuid | UUID | varchar(32) | NO |
※参考:APIマニュアル
https://www.zabbix.com/documentation/6.0/jp/manual/api/reference/trigger/object
functions
アイテムとトリガーの関連付け情報が格納されるのテーブルです。
Field | 日本語名称 | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|---|
functionid | 関数ID | bigint unsigned | NO | PRI | NULL | |
itemid | アイテムID | bigint unsigned | NO | MUL | NULL | |
triggerid | トリガーID | bigint unsigned | NO | MUL | NULL | |
name | 名前 | varchar(12) | NO | |||
parameter | パラメータ | varchar(255) | NO | 0 |
サンプルSQL
アイテム取得
SELECT h.hostid AS ホストID ,i.itemid AS アイテムID ,h.name AS ホスト名 ,i.name AS アイテム明 ,i.key_ AS アイテムキー ,i.delay AS 監視間隔 ,i.history AS ヒストリ保存期間 ,i.trends AS トレンド保存期間 FROM hosts h LEFT JOIN items i ON h.hostid = i.hostid WHERE h.hostid = 10084 AND i.flags IN (0,4)
トリガー取得
SELECT DISTINCT h.hostid AS ホストID ,h.name AS ホスト名 ,t.triggerid AS トリガーID ,t.description AS トリガー名 ,t.expression AS 条件式 ,CASE t.priority WHEN 0 THEN '未分類' WHEN 1 THEN '情報' WHEN 2 THEN '警告' WHEN 3 THEN '軽度' WHEN 4 THEN '重度' WHEN 5 THEN '致命的' END AS 重要度 FROM hosts h LEFT JOIN items i ON h.hostid = i.hostid LEFT JOIN functions f ON i.itemid = f.itemid LEFT JOIN triggers t ON f.triggerid = t.triggerid WHERE h.hostid = 10084 AND i.flags IN (0,4)
ホスト+アイテム+トリガー取得
SELECT h.hostid AS ホストID ,i.itemid AS アイテムID ,t.triggerid AS トリガーID ,h.name AS ホスト名 ,i.name AS アイテム明 ,i.key_ AS アイテムキー ,i.delay AS 監視間隔 ,i.history AS ヒストリ保存期間 ,i.trends AS トレンド保存期間 ,t.description AS トリガー名 ,t.expression AS 条件式 ,CASE h.status WHEN 0 THEN '有効' WHEN 1 THEN '無効' END AS ホストステータス ,CASE i.status WHEN 0 THEN '有効' WHEN 1 THEN '無効' END AS アイテムステータス ,CASE t.status WHEN 0 THEN '有効' WHEN 1 THEN '無効' END AS トリガーステータス FROM hosts h LEFT JOIN items i ON h.hostid = i.hostid LEFT JOIN functions f ON i.itemid = f.itemid LEFT JOIN triggers t ON f.triggerid = t.triggerid WHERE h.hostid = 10084 AND h.status in (0,1) AND i.flags IN (0,4)