Zabbix徹底活用術の紹介
池田 大輔 (Daisuke IKEDA)
@ike_dai
2014/6/4 第5回OSS運用管理勉強会
Zabbixあずき色本について
Zabbix標準機能をフル活用
Zabbixの機能の制約について
Zabbixの制約事項との上手な付き合い方
1. 外部ツールとの連携
2. Zabbixのカスタマイズ
TISの取り組みの紹介
Agenda..
池田 大輔
TIS株式会社 戦略技術センター
@ike_dai
https://www.facebook.com/ikedai
Zabbix,AWS,fluentd,Chef,JobScheduler...
Name
Division
Twitter
Facebook
Favorite
@ITさんで連載「今さら聞けないfluentd~クラウド時代のログ管理入門」
(http://www.atmarkit.co.jp/ait/articles/1404/04/news004.html)
AWS、VMware監視用プラグイン『HyClops for Zabbix』開発
(http://tech-sketch.github.io/hyclops/jp/)
About me..
Zabbix統合監視徹底活用 -複雑化・大規模化するインフラの一元管理
2014/2/7出版
技術評論社
Announcement..
Zabbix2.2対応
クラウド環境や仮想環境の監視をZabbixで行うための活用術集
Zabbixだけでなく外部ツール(fluentdやChef、GateOne等)との連携術
ご購入はこちらから
技術評論社HP : http://gihyo.jp/book/2014/978-4-7741-6288-1
Amazon : http://www.amazon.co.jp/dp/4774162884
Zabbixって機能豊富だけど
どうやって使えばいいの?
仮想環境・クラウド環境便利だけど
運用はどうする?
Zabbixでできない部分は
どうすばいいの?
Problem..
Zabbixをうまく使って
いけてる環境を作ろう!
まずは
標準の機能
を上手に活用
特に便利な機能
Standard feature..
Zabbix Proxyを使った分散監視
Zabbix Agent自動登録機能
ネットワークディスカバリ機能
ローレベルディスカバリ機能
各拠点の監視をZabbixProxyが代行
ZabbixProxyとZabbixServerは監視設定、監視結果を連携
複数拠点・大規模環境には欠かせない機能!
Zabbix Agentの情報をZabbix Serverに自動連携
ホスト追加の度に監視設定手動登録の必要がなくなる
ZabbixAgent監視のスケールする環境には必須 !
定期的にNWをポーリング探索して新たな機器を発見
機器の情報に応じて監視設定自動化
NW機器等も含めて監視 NW全体の自動監視設定に有用 !
監視対象機器の内部の情報を定期的に探索
機器に搭載されているデバイスに応じて監視設定自動化
NIC監視など同じ監視設定をデバイス毎に
登録する場合に有用 !
細かい設定項目も有効活用を
Point1..
ローレベルディスカバリの存在しなくなったリソースの監視データ
Point1..
Example1..
ログ監視アイテムのオプション
Point1..
Example2..
ログ監視アイテムのオプション形式
logrt[file_format<,regexp><,encoding><,maxlines><,mode><,output>]
mode
・アイテム登録時に既に存在するログファイルの中身をすべてチェックするか、スキップするかの指定
・スキップ指定時には、アイテム登録後に新たに追加されたログ内容のみ監視
【例】all(ファイルすべてを監視)、skip(アイテム登録時点以前のログはスキップ)
※書籍より抜粋
バックエンドの仕組みを
理解して適切な対応を
Point2..
Zabbix Proxyのデータキャッシュ機構
Point2..
Example1..
Zabbix
Server
Zabbix
Proxy
DB
(設定・結果)
DB
(設定・結果(一時保存分))
Proxyとの同期関連の設定
ProxyLocalBuffer
Zabbixサーバと同期済みの監視結果についても指定時間分Zabbix Proxy内で保管
ProxyOfflineBuffer
Zabbixサーバと同期ができていない間、指定時間分、Zabbix Proxy内のDBに監視結果を保管
Zabbixサーバと同期が完了した時点でデータ削除
監視監視
Zabbix
Frontend
監視設定
同期
拠点A 拠点B
VMware監視の仕組み
Point2..
Example2..
ZabbixServer
vCenterServer
VMwareESXi
VM VM VM
VMwareESXi
VM VM VM
VMwareESXi
VM VM VMVMware
Cache
VMwareCollectors vSphereAPI
simple check (VMwareFrequencyの頻度で)
- クラスタ情報
- ハイパーバイザ情報
- データストア情報
- 仮想マシン情報
- イベントログ情報
追加&更新
VMware監視がうまくいかなかったら
Simple Checkを実行するのはZabbix ServerのVMwareCollectorプロセス
→zabbix_server.confのStartVMwareCollectorsの設定項目をチェック!
監視結果は全てキャッシュに格納
→zabbix_server.confのVMwareCacheSizeの設定項目をチェック!
Zabbixの
制約事項を理解して
適切な対応を
制約事項の一例
Limitations..
制約事項 対応例
ログ監視は1行毎の監視
→複数行をまとめて監視対象とできない
fluentd等でログ収集・ログ加工を行い監視
外部スクリプト実行のタイムアウト制限
→最大で30秒まで
外部スクリプト処理をバックエンド処理化
ローレベルレベルディスカバリのホストプロトタイプ (VMware監視
機能で利用)で自動登録可能な項目の制限
→発見されたVMのインタフェース情報がホスト設定に反映されない
Zabbix APIを利用したより柔軟な自動化対応
(例: HyClops for Zabbixの仕組み等)
Zabbixフロントエンド画面の制限
→監視結果一覧を複数ホストグループで絞り込んだ表示ができない等
Zabbix APIを使った独自画面の作成等
ホストグループ、ホストという 2段階の階層構造のみの管理
→vCenter、vSphereESXi、VMといった3段階構造が管理できない
1ホストに複数ホストグループを割り当てる等で
対応
ZabbixProxy経由でのリモートコマンド実行が未対応
→障害時にリモートコマンド実行するにはZabbixServerからZabbixAgentに
直接接続できる必要がある
ZabbixProxyにZabbixAgentを導入し、スクリプト
の作り込みにより対応等
制約事項の一例
Limitations..
制約事項 対応例
ログ監視は1行毎の監視
→複数行をまとめて監視対象とできない
fluentd等でログ収集・ログ加工を行い監視
外部スクリプト実行のタイムアウト制限
→最大で30秒まで
外部スクリプト処理をバックエンド処理化
ローレベルレベルディスカバリのホストプロトタイプ (VMware監視
機能で利用)で自動登録可能な項目の制限
→発見されたVMのインタフェース情報がホスト設定に反映されない
Zabbix APIを利用したより柔軟な自動化対応
(例: HyClops for Zabbixの仕組み等)
Zabbixフロントエンド画面の制限
→監視結果一覧を複数ホストグループで絞り込んだ表示ができない等
Zabbix APIを使った独自画面の作成等
ホストグループ、ホストという 2段階の階層構造のみの管理
→vCenter、vSphereESXi、VMといった3段階構造が管理できない
1ホストに複数ホストグループを割り当てる等で
対応
ZabbixProxy経由でのリモートコマンド実行が未対応
→障害時にリモートコマンド実行するにはZabbixServerからZabbixAgentに
直接接続できる必要がある
ZabbixProxyにZabbixAgentを導入し、スクリプト
の作り込みにより対応等
外部ツールとのCollaboration
ZabbixのCustomize
Collaboration with other tools..
連携方法には2パターン
 1 Zabbixから他のツールへの連携
 2 他のツールからZabbixへの連携
UserParameter=file.count[*],ls -l $1 | wc -l
Zabbixに登録するアイテムキー
file.count["/var/log/zabbix"]
Zabbix to other tools..
リモートコマンドで外部連携
障害発生時に外部ツールに連携
定期的に外部ツールと連携
メディアタイプにアラートスクリプトを登録して外部連携
Zabbix ServerまたはZabbix Agentから任意のスクリプト実行
Zabbix Serverから任意のアラートスクリプト実行
リモートコマンドと異なる点はリカバリ時にも発動可能な点
※書籍ではAWS SNSへの連携方法を紹介
Zabbix Agent UserParameter監視
Zabbix Server 外部チェック監視
Zabbix Serverから任意のスクリプト実行結果の監視
※書籍ではvSphere APIと連携する方法を紹介
Zabbix Agentから事前にUserParameterで定義したコマンド実行結果の監視
※書籍より引用
Other tools to Zabbix..
Zabbix APIを使ってZabbixの設定を外部ツールから
Zabbix APIを使ってZabbixのデータを外部ツールで活用
ZabbixSenderを使って外部ツールから Zabbixにデータ連携
Zabbix API 外部ツール
ホスト追加
テンプレート割当
等
何らかの
タイミングでキック
Zabbix API 外部ツール
ヒストリデータ等
データ分析
視覚化
等
Zabbix 外部ツール
Zabbix
Trapper
外部ツールから監視結果として登録
例:高機能なログ監視のために fluentdとの連携
fluentd - Zabbix..
DB
クラウド
サービス
ログ
ファイル
API
・
・
・
などなど
Zabbix
・
・
・
などなど
Input
Output
(fluent-plugin-zabbix)
ログデータ
収集処理
ログデータ
タグデータ
時刻データ
Zabbix Sender
Zabbix Sender
Zabbix Sender
タグデータをもと
に処理振分け
・
・
・
fluentd
ホスト
ZabbixTrapperタイプ
監視アイテム
ZabbixTrapperタイプ
監視アイテム
ZabbixTrapperタイプ
監視アイテム
・
・
・
fluentd - Zabbix..
Configuration..
<source>
type tail
format apache
path /var/log/httpd/access_log
tag apache.access
</source>
<match apache.access>
type datacounter
count_interval 5m
count_key code
tag response.code.analysis
pattern1 2xx ^2dd$
pattern2 3xx ^3dd$
pattern3 4xx ^4dd$
pattern4 5xx ^5dd$
</match>
<match response.code.analysis>
type zabbix
zabbix_server zabbix.example.com
host fluentd-test
name_key_pattern apache.access_[2-5]xx_count
add_key_prefix fluentd
</match>
- /var/log/httpd/access_logを読み込み
- apache用フォーマット定義に基づいてログ取り込み
- tag "apache.access"を付与
- 5分間隔で統計処理
- 統計処理する対象データは code
- tag "response.code.analysis"を付与
- codeの値の先頭の数字 (2,3,4,5)毎にパターン分けして統計処理
- Zabbixサーバ(zabbix.example.com)の
fluentd-testホストに対して
各code毎のカウント結果を送付
- 送付時のアイテムキーは以下の 4つ
- fluentd.apache.access_2xx_count
- fluentd.apache.access_3xx_count
- fluentd.apache.access_4xx_count
- fluentd.apache.access_5xx_count
tailインプットプラグイン
datacounterアウトプットプラグイン
Zabbixアウトプットプラグイン
※書籍より引用
Customize..
カスタマイズ方法にも2パターン
 1 フロントエンドのカスタマイズ
 2 監視コア機能のカスタマイズ
Customize..
Zabbix APIをベースに、より効果的なビューをカスタマイズ可能
Frontend..
PHPで実装すればZabbixAPIのクラスがそのまま利用可能!
<?php
require_once dirname(__FILE__).'/include/config.inc.php';
・・・略
$user = CWebUser::$data['alias'];
$histories = API::History()->get(array(
"hostids" => $hostid,
"history" => 2,
"itemids" => $itemid,
"limit" => "20",
"output" => "extend",
));
・・・略
?>
Zabbixフロントエンドディレクトリに配置
(/usr/share/zabbix/以下)
Zabbixにログイン後、
ページにアクセスすれば API連携可能
WebAPIとして使う場合は好きな言語で
カスタマイズ可能
(Ruby,Python,PHP,Java等各種ライブラ
リあり)
Customize..
Core..
Zabbixローダブルモジュール機能を使い監視機能を拡張
● Cで処理を書けばどんな監視アイテムでも拡張可能に
● Zabbixの共有メモリの機構を使って効率の良い監視の実現が可能に
○ これまでのzabbix_sender多用による負荷上昇を抑えられる
● Cで書くことでZabbixの本体機能として取り込まれやすくなる?
● Zabbix2.2.0から実装された機能
● Zabbix Serverのシンプルチェック監視もしくは
Zabbix Agent監視にカスタム監視アイテムが追加できる機能
● Cで監視処理を書いて、 共有ライブラリ(.soファイル)を作成し読み込むだけ
概要
メリット
1、
 Zabbixの便利な機能をうまく使う
2、
 得意分野以外は外部ツールに任せて連携させればOK
3、
 枠組みが充実しているのでカスタマイズで対応も可能
Conclusion..
実践していけてる環境を目指しましょう!
Activity..
TISの取り組み紹介
Copyright © 2014 TIS Inc.
シンプルなシステム
高可用&高性能なシステム
必要に応じて
サービスレベルを向上
オンプレミスをリバース
エンジニアリングして
パターン化
パターンから最小限の
システムを構築
新規に
パターン作成
Cloud上のシステムを
カスタマイズしてパターン化
Pattern Repository
Load Balancing
High Availability
Disaster Recovery
※CloudConductorの開発は経済産業省の支援を受けて推進しています。
・平成25年度「産業技術実用化開発事業費補助金
 (ソフトウェア制御型クラウドシステム技術開発プロジェクト)」
・平成26年度「中小企業等のクラウド利用による
 革新的省エネ化実証支援事業クラウド基盤ソフトウェア導入実証」
TISでは、インフラアーキテクチャ設計のパターン化を行うことにより、
クラウド/オンプレの差異を超えてシステムの再利用、移行性向上と
運用標準化を実現するソフトウェアCloudConductorを開発中です。
公式サイト:http://cloudconductor.org
次世代のクラウド活用ソリューション:CloudConductor
高レベルなシステムへ再構築
(サービスレベルアップ )
Fin..
oss-sales@ml.tis.co.jp
ご清聴ありがとうございました

第5回oss運用管理勉強会 zabbix徹底活用術の紹介