

Zabbixの設定変更結果の確認方法のススメ
こんにちは。プラットフォーム技術部の小林(雄)です。
最近は、大規模環境の監視にZabbixを利用しているお客様や、多種多様な監視実装をおこなっているお客様、Zabbixに詳しいお客様が増えており、ご支援の際のご質問やご相談も高度化してきています。
今回はそのようなお客様からよくご相談いただく事例について、当社が実践している内容も交えて紹介させていただきます。
Zabbixの変更作業結果を確実かつ効率的におこなうためには
私たちは「まるごとおまかせZabbix」の「安心Z」というサービスでお客様のZabbixに関する疑問やお悩みごとを解決するサポートをさせていただいております。
そんな中、先日とあるお客様から「運用時に複雑な設定変更作業を大量におこなう際、作業結果を確実かつ効率的に確認する方法がないか」とお問い合わせいただきました。
私たちも普段構築や変更作業を実施する際にはどうしたら作業漏れや設定ミス無く効率的で質の高い仕事をできるのかを考え、日々作業方法や手順の見直しをおこなっています。
今回の記事では、普段私たちがどのような手段でZabbixに対する作業結果の確認をおこなっているのか紹介させていただきます。
設定変更時の確認手段
Zabbixに対する監視設定の変更作業結果の確認手段として考えられるものは以下の通りです。
ZabbixGUIを用いた確認
ZabbixGUIの画面上から目視で確認をおこなう方法です。事前準備や製造等の対応は不要であり最も手軽ですが、機械的に確認することができず、画面推移等のオペレーションを多く挟むことが多いため、確認精度、効率が他の方法と比較した場合やや劣ります。
XMLエクスポート機能を用いた確認
Zabbixの標準搭載機能であるXMLエクスポート機能を利用し、設定情報を抽出して、作業前後の設定を機械的に比較する方法です。事前準備として、比較用のExcelシート等の作成が必要になり、XMLエクスポート機能が対応していない情報の確認はおこなえないという制約があります。
ZabbixAPIを用いた確認
ZabbixAPIを用いて、設定情報を抽出して、作業前後の設定を機械的に比較する方法です。事前準備として、Python等で設定情報抽出をおこなうスクリプトの製造が必要になるため、イニシャルコストは少し高いですが、XMLエクスポートのような制約もなく、比較結果となる差分情報の加工も容易です。
SQLを用いた確認
ZabbixDBへSQLを発行し、設定情報を抽出して、作業前後の設定を機械的に比較する方法です。事前準備としてSQL文の製造が必要になりますが、ZabbixAPIを用いた方法と比較して、イニシャルコストは抑えめです。ZabbixDBの構造をある程度把握できていれば、抽出する情報をその場で選択、加工することができ、柔軟性に優れた方法です。
アークシステムでは?
普段私たちは、以下の点を重視し「SQLを用いた確認」で作業結果の確認をおこなっています。
- お客様環境に確認用スクリプトを配置する必要がない。
- 取得対象の情報を柔軟に変更可能。
以降は私たちが実際によく利用するSQLを紹介させていただきます。
SQLは作業前後でそれぞれ取得をおこない、ExcelシートやDiffツールで差分比較をおこなうことで以下を確認します。
- 無関係な既存設定に変更を加えてしまっていないこと。
- 作業対象がもれなく登録/削除できていること。
- 設定値に誤りがないこと。
以下記載のSQLはZabbix4.0、ZabbixDBにMariaDBを利用した環境を対象とした例です。
サンプルSQL文
ホスト、ホストグループの設定確認用SQL
こちらのSQLは主に、新規ホスト、ホストグループの追加をおこなった際に利用するSQLです。
ホストグループ単位で所属するホストとのひもづけを確認できます。
select
gr.name as hostgroupname,
ho.host as hostname,
ho.name as visiblename
from
hstgrp gr
join
hosts_groups hg
on hg.groupid=gr.groupid
join
hosts ho
on ho.hostid=hg.hostid
where
ho.status<>3
order by gr.name;
ホスト設定の確認用SQL
こちらのSQLは主に、新規ホストの追加をおこなった際に利用するSQLです。
設定頻度の高い、エージェントインターフェースとSNMPインターフェースの情報が確認できます。
select
ho.host as hostname,
ho.name as visiblename,
i1.ip,
i1.dns,
i1.useip,
i2.ip as SNMP_IP,
i2.dns as SNMP_DNS,
i2.useip as SNMP_USERIP,
case
when ho.status = 0 then '[有効]'
when ho.status = 1 then '[無効]'
end as status
from
hosts ho
left outer join (select * from interface where type=1) i1
on ho.hostid=i1.hostid
left outer join (select * from interface where type=2) i2
on ho.hostid=i2.hostid
where
ho.status<>3;
ホストとテンプレートとのひもづけ確認用SQL
こちらのSQLは主にホスト新規登録後の監視開始時に利用するSQLです。
正しい監視設定が正しい監視対象にひもづいているか確認ができます。
select
ho.host as hostname,
ho.name as visiblename,
h1.name as templatename
from
hosts ho
left outer join
hosts_templates ht
on ho.hostid=ht.hostid
left outer join
hosts h1
on ht.templateid=h1.hostid
where
ho.status<>3;
正規表現確認用SQL
こちらのSQLはZabbix正規表現更新時に利用するSQLです。
Zabbix正規表現はログ監視のアイテムに利用されることが多く、ログ監視の監視、非監視条件を設定できます。本SQLでは各正規表現の設定内容について確認ができます。
select
distinct
name,
expression,
case
when expression_type = 0 then '[文字列が含まれる]'
when expression_type = 1 then '[いずれかの文字列が含まれる]'
when expression_type = 2 then '[文字列が含まれない]'
when expression_type = 3 then '[結果が真]'
when expression_type = 4 then '[結果が偽]'
end as expression_type,
exp_delimiter,
case
when case_sensitive = 0 then 'いいえ'
when case_sensitive = 1 then 'はい'
end as case_sensitive
from
regexps inner join expressions on regexps.regexpid = expressions.regexpid
order by name;
まとめ
Zabbixは非常に多機能で高パフォーマンスであり、さまざまな監視ニーズに柔軟に対応できます。しかしながら監視対象や項目が増えると管理が煩雑になってしまうという側面もあります。
Zabbix設定変更の作業品質を上げるために、作業後に結果確認をおこなうことはもちろんですが、確認の精度と効率を上げるためにも確認方法の工夫が非常に大事です。
今回の記事が何かの参考になれば幸いです。
Zabbixの導入・構築でお困りですか?
Zabbixの導入・構築でお困りですか?アークシステムは、Zabbix Japan LLCの公式認定パートナーとして、豊富な実績と高い技術力でお客様をサポートします。
アークシステムが選ばれる理由
- 豊富な経験: 多くのZabbix導入・構築プロジェクトを成功に導いた実績
- 確かな技術力: Zabbix認定資格を持つエンジニアが対応
- 独自のソリューション: 「監視定義テンプレート」を活用した迅速かつ高品質な実装
- 最新情報へのアクセス: Zabbix社との強力なパートナーシップを活かした最新技術対応
こんな方に最適です
- Zabbixの新規導入を検討している
- 現行システムの運用に課題を感じている
- 大規模環境での監視体制を整えたい
アークシステムでは、Zabbixの導入・運用に関する課題を解決し、最適な環境を構築します。どんなご相談でもお気軽にお問い合わせください!