第5回oss運用管理勉強会 zabbix徹底活用術の紹介
DESCRIPTION
2014/6/4開催のOSS運用管理勉強会発表資料です。TRANSCRIPT
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
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-1Amazon : 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..
ZabbixServer
ZabbixProxy
DB(設定・結果)
DB(設定・結果(一時保存分))
Proxyとの同期関連の設定ProxyLocalBuffer Zabbixサーバと同期済みの監視結果についても指定時間分Zabbix Proxy内で保管ProxyOfflineBuffer Zabbixサーバと同期ができていない間、指定時間分、Zabbix Proxy内のDBに監視結果を保管
Zabbixサーバと同期が完了した時点でデータ削除
監視監視
ZabbixFrontend
監視設定
同期
拠点A 拠点B
VMware監視の仕組み
Point2..Example2..
ZabbixServer
vCenterServer
VMwareESXi
VM VM VM
VMwareESXi
VM VM VM
VMwareESXi
VM VM VMVMwareCache
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 -lZabbixに登録するアイテムキー 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
・ ・ ・などなど
InputOutput
(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 ^2\d\d$ pattern2 3xx ^3\d\d$ pattern3 4xx ^4\d\d$ pattern4 5xx ^5\d\d$</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のクラスがそのまま利用可能!
<?phprequire_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、
得意分野以外は外部ツールに任せて連携させればOK3、
枠組みが充実しているのでカスタマイズで対応も可能
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
高レベルなシステムへ再構築(サービスレベルアップ )