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

Post on 12-Jan-2015

2.064 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

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-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

高レベルなシステムへ再構築(サービスレベルアップ )

Fin..

oss-sales@ml.tis.co.jp

ご清聴ありがとうございました

top related