コンテンツにスキップ

リファレンス

ツール

health_check()

次のキーはどの経路でも必ず返ります。健全性の判断にキーの有無を調べる必要はなく、 status を読めば残りはそこにあります。

キー 意味
status healthy / degraded / error
service 常に zapi-mcp
version パッケージのバージョン
zabbix_url 設定された URL(未設定なら空文字列)
zabbix_api_version 検出した API バージョン。接続に成功するまでは null
auth ok / error / missing-env
categories 読み込まれた daily_brief カテゴリ名

次の2つは、伝えるべきことがあるときだけ現れます。

キー 現れる条件
detail バックエンド側の問題が起きたとき。環境変数の欠落(status=errorauth=missing-env)または Zabbix エラー(status=degradedauth=error
categories_error カテゴリファイルの解析に失敗したとき(status=degraded

この2つは独立しています。カテゴリファイルが読めないことだけが原因の場合、 status=degradedcategories_error は返りますが detail付きません。 バックエンド自体には問題が無かったからです。

意図的に軽量です。認証を1回行い(キャッシュ済みセッションを再利用)、API バージョンを 読むだけで、問題やアイテムの走査はしません。セッション開始時やツール呼び出しの タイムアウト後に安心して呼べます。

daily_brief()

朝のレポートです。構造:

# Daily Brief — 2026-08-06 09:00

## Active Problems (showing 50 of 97)

### High (23, 2 in last 24h)
- Unavailable by ICMP ping  eventid=18813696  (2026-08-06 07:12, 2h ago)
- … and 21 older (stale; oldest 2024-10-04 10:39)

## DHCP Pool Usage (2 hosts)
- POOL-A: 100.0 %  ⚠️  (2026-08-06 09:00:00)
- POOL-B: 82.3 %  (2026-08-06 09:00:00)

問題は Warning 以上を新しい順に、eventid・発生時刻・経過時間つきで並べます。 深刻度の見出しには件数と、そのうち直近何件かが入ります。ZABBIX_BRIEF_RECENT_HOURS より古いものは … and N older の行に畳まれます。各行に深刻度名は繰り返しません (見出しが既に示しているため)。続いて、設定した [section] ごとにカテゴリの セクションが並び、閾値を超えた値には ⚠️ が付きます。

get_problems(min_severity=2, tag_name=None, tag_value=None, limit=50)

アクティブな問題を新しい順・経過時間つきで返します。limit で打ち切られた場合は 見出しが Active Problems (showing N of TOTAL)、そうでなければ Active Problems (N) になります。総数は推測ではなく件数クエリを別途投げて取るので正確です。出力には eventid が含まれ、これが acknowledge_problem の入力になります。

深刻度: 0 未分類、1 情報、2 警告、3 平均、4 重度、5 致命的。

get_hosts(role=None, tag_name=None, tag_value=None, group=None)

ホストを IP・タグつきで返します。rolerole タグの短縮指定です。

get_host_items(host, search=None)

1ホスト(ホスト名は完全一致)の現在のアイテム値を返します。search はアイテム名の 部分一致フィルタです。

acknowledge_problem(event_ids, message)

唯一の書き込みツールです。 カンマ区切りのイベント ID を acknowledge し、 メッセージを添付します。問題のクローズはしません。acknowledge はその Zabbix の 全オペレーターに見え、黙って取り消すことができません。だからライブスモークテストは このツールを名指しでスキップし、そのスキップをユニットテストが強制しています。

CLI

zapi-mcp            # MCP サーバーとして起動(stdio・既定)
zapi-mcp --version  # バージョンを表示して終了
zapi-mcp --check    # 環境変数と認証を確認して終了
zapi-mcp --brief    # daily_brief を標準出力へ(cron 向き)

終了コード:

コマンド 0 1 2
--check 成功 設定エラー 認証・接続エラー
--brief 成功 環境変数の欠落、またはいずれかのセクションの失敗

--brief が非ゼロを返すかどうかが「異常が無い」と「問い合わせられなかった」を 区別します。テキストだけでは区別がつきません。

標準出力の grep で失敗を判定しない

exit 1 には出力の見え方が異なる2ケースが含まれます。環境変数の欠落は 標準エラーに出力され標準出力は空になる(ブリーフも Error: 行も無い)ため、 探すべき文字列自体が存在しません。バックエンドの失敗ではブリーフは出ますが、 埋め込まれる行は Zabbix error: …Missing environment variable: … であり Error: で始まりません。標準出力の Error: だけを見る監視は両方取りこぼします。 終了コードで判定してください。

打ち切られた件数の読み方

daily_briefget_problems は取得上限(ZABBIX_BRIEF_PROBLEM_LIMITlimit)に 達することがあります。その場合、見出しは showing N of TOTAL になります。N は 見えている数、TOTAL は存在する数です。比較するときは TOTAL 同士で比べてください。 N を前回の TOTAL と比べてはいけません。

塩漬けの問題

Zabbix は復旧が確認されるまで問題をアクティブなままにするため、とうに終わった アラートがいつまでも一覧に残ります。daily_brief は直近ウィンドウより古い問題を 削除するのではなく1行に畳むので、溜まった件数は見える形で残りつつ、今日の事象と 注意を奪い合いません。数日不在だった後は ZABBIX_BRIEF_RECENT_HOURS を広げると 「直近」の範囲を伸ばせます。