36
ZABBIX-JP 池田 大輔 クラウド/DevOps実践への Zabbix適用 2013/10/19 OSC2013 Tokyo/Fall

Osc 2013 tokyo fall ZABBIX-JP 『クラウド/DevOps実践へのZabbix適用』

Embed Size (px)

DESCRIPTION

2013/10/19 OSC 2013 Tokyo/Fallで発表したZABBIX-JPからの講演『クラウド/DevOps実践へのZabbix適用』の資料です。

Citation preview

ZABBIX-JP池田 大輔

クラウド/DevOps実践へのZabbix適用

2013/10/19 OSC2013 Tokyo/Fall

● 自己紹介● DevOpsって?● DevOps実践● ZabbixがDevOps時代に適する理由● Zabbixの便利な機能紹介(最新版Zabbix2.2便利機能紹介)

○ Devにも役立つ監視機能○ NoOps実現に向けた自動化機能

● まとめ● お知らせ

今日お話すること

● 名前: 池田 大輔● ZABBIX-JPのスタッフメンバー● Twitter: @ike_dai● Facebook:https://www.facebook.com/ikedai● Zabbix関連の活動:

○ Chromix(Zabbixアラート通知用Chrome Extension)開発○ HyClops for Zabbix(AWS,vSphere自動監視用プラグイン)開発

自己紹介

@ITさんで連載中「クラウド &DevOps時代の運用をZabbixで」(http://www.atmarkit.co.jp/ait/articles/1309/18/news008.html)

Zabbix Conference 2012 @Riga

DevOps?

DevOps (a portmanteau of development and operations) is a software development method that stresses communication, collaboration and integration between software developers and information technology (IT) professionals. DevOps is a response to the interdependence of software development and IT operations. It aims to help an organization rapidly produce software products and services.

Wikipediaより引用:http://en.wikipedia.org/wiki/DevOps

簡単にまとめると・・・

DevOpsとは、ソフトウェア開発者と ITプロフェッショナルの間の「コミュニケーション」 ,「コラボレーション」 ,「インテグレーション」に重きをおいた開発手法。

開発と運用の相互依存を実現するための考え方であり、迅速にソフトウェアプロダクトやサービスを作る ことを助けることが目的。

DevOpsの実践

Dev

・迅速に安定した開発が実施できるよう CI実践等 →アジャイルな開発手法 →テスト自動化

Ops

・クラウドによる迅速なリソース入手・運用処理自動化によるNoOps実践 →運用のソフトウェア制御化

Dev視点・Ops視点統合的な監視→見える化統合的な判断をもとにした迅速な対応を取れる体制づくり

実践する環境の文化・制度等が強く影響

とはいえ、実践を支えるツールをうまく活用することが非常に重要

DevOpsの実践

Dev

・迅速に安定した開発が実施できるよう CI実践等 →アジャイルな開発手法 →テスト自動化

Ops

・クラウドによる迅速なリソース入手・運用処理自動化によるNoOps実践 →運用のソフトウェア制御化

Dev視点・Ops視点統合的な監視→見える化統合的な判断をもとにした迅速な対応を取れる体制づくり

実践する環境の文化・制度等が強く影響

とはいえ、実践を支えるツールをうまく活用することが非常に重要

Zabbix

Zabbixの基本情報

OSS統合監視ツールラトビアのZabbixSIA社が開発2013/10/19時点の最新安定版2.0.9 (開発版2.1.7)

監視対象機器- Linux- Windows- NW機器等

監視方法- Zabbix Agent監視- SNMP監視- IPMI監視- エージェントレス監視等

監視内容- リソース監視- 死活監視 - ICMPPing - プロセス- Web監視- ログ監視- HW監視- SQL監視等

Zabbixの基本情報 -監視の仕組み-

Zabbix Server

trapperpolleralerter

discoverer・・・

Shared Memory

Apache(Zabbix Frontend)

DB設定情報

監視結果情報

Zabbix Agent

SNMP Agent

SNMP Agent

dbsyncer

Zabbixの基本情報 -監視設定-

ホストグループ

テンプレート

ホスト

アイテム トリガーグラフ割当

アイテム トリガーグラフ

・・・

・・・

アクション

アクション

アイテム トリガーグラフ

ホストグループ:Linuxホスト:Server1テンプレート:LinuxServerテンプレート

アイテム:CPU使用率トリガー:CPU使用率が5分間平均80%以上アクション:管理者にアラートメール送信

ホスト

ZabbixがDevOpsに適する理由

ZabbixのDevOpsにマッチする機能

DevOps役割に応じた使い分け

Zabbix

死活監視

リソース監視

ハードウェア

MW MW MW

APP APP APP

Web監視

ログ監視

DB監視

OS

APP、DB、サーバ、ネットワーク等各エンジニアに必要な情報を統合監視

2013/08/19 - Error:2013/08/20 - Info..

APPエンジニア向け

サーバエンジニア向け

場合によっては経営者・営業さん向けなど

各層の監視をサポート

役割に応じた適切なビューア

ZabbixのDevOpsにマッチする機能

NoOps実現に向けた自動化促進

Zabbixテンプレートテンプレートテンプレート

ホスト

ホスト

ホスト

ZabbixAgent

ZabbixAgent自動登録

監視設定テンプレート

ネットワークディスカバリ

サーバ内部の構成情報自動取得(ローレベルディスカバリ )

障害

障害対応アクション自動実行

追加

追加

使える機能詳細

ZabbixでWeb監視

Devにも有用な監視機能

ブラウザからWebページを見るという動作を監視することが可能

・Basic認証、NTLM認証のかかっているページの監視可能・POST変数の引き渡しが必要なページの監視可能・プロキシ経由の監視可能・クッキー情報を使ったページアクセス可能

ページ1

ページ2

・・・

Zabbix● レスポンスタイム● レスポンスコード● ダウンロード速度● ページの文字列

ZabbixでWeb監視

Devにも有用な監視機能

シナリオ例 - Step1.ページ1(URL:http://hostname/page1.html) 正常状態: 200のレスポンスコードでページに ”Top Page”という文字列が含まれる - Step2. ページ2(URL:http://hostname/page2.html) ※POSTデータにページ1で選択された情報を持つ 正常状態: 200のレスポンスコードでページに POSTで渡ってくる情報が含まれる

設定例

Name: Page1URL: http://hostname/page1.htmlPOST: なしRequired String: Top PageRequired status code: 200

設定例

Name: Page2URL: http://hostname/page2.htmlPOST: menu=”abc”&hoge=xxx&・・・Required String: abcRequired status code: 200

Top Page

menu abc

http://hostname/page1.html

Page2

abc

http://hostname/page1.html

POST

menu=abchoge=xxx・・・

Devにも有用な監視機能

ZabbixでWeb監視

ZabbixでWeb監視

Devにも有用な監視機能

各Stepで変数設定が可能に - 静的な変数と正規表現により抽出した変数の活用が可能

New

静的な変数設定          → {変数名}=固定値

正規表現により抽出した変数設定  → {変数名}=regex:正規表現

http://hostname/page1.html

<span class="memberid">12345678</span>

Webページの内容

{memberid}=regex:<span class="memberid">(.+?)</span>

Stepの変数設定

以降のStepのURLおよびPOST変数で展開可能

Zabbixでログ監視

Devにも有用な監視機能

ZabbixServer

ZabbixAgent

Log file

Info・・・Error・・・Info・・・

ログ監視アイテムキー(Zabbix2.0系)

単一のログファイル監視:  log[filepath, <pattern>, <encoding>, <maxlines>, <mode>]ローテートログファイル監視:  logrt[filepath_pattern, <pattern>, <encoding>, <maxlines>, <mode>]

例:log[filepath, Error, , ,skip]

Zabbix Agentアクティブチェック

Error・・・

パターンにマッチしたログ情報のみZabbixにプッシュ通知

受信したログに対して更にフィルタリングしてトリガー設定可能

※最後にチェックした際のログサイズ(lastlogsize)と最後にチェックした時間(lastlogchecktime)をもとに追記が発生したかを確認

Zabbixでログ監視

Devにも有用な監視機能

New

ログの抽出が可能に - これまではパターンにマッチしたログを行単位で収集 - Zabbix2.2からは1行の内、マッチした部分のみを抽出可能

sample.log

201310161001 Info Time: 123sec201310161015 Info Time: 100sec201310161023 Info Time: 140sec

この部分のみ抽出して監視可能※ただし、Zabbixへの保存はLogタイプなので注意

2.0系: log[filepath, <pattern>, <encoding>, <maxlines>, <mode>]2.2系: log[filepath, <pattern>, <encoding>, <maxlines>, <mode>, <output>]

log[/path/sample.log,"Time: (.*)sec",,,skip,\1]

正規表現によるパターン指定でサブグループが取り込めるよう設定

抽出したいサブグループの番号を指定

Zabbix Agent自動登録機能

NoOps実践に向けた機能

Target Server

Zabbix Agent

起動時にZabbixAgentの情報をプッシュ通知

■ 起動時に設定ファイル(zabbix_agentd.conf)に記載の以下の情報を通知(Zabbix2.0,1.8の場合) - Hostname - ListenIP - ListenPort■ この情報をもとにホスト追加、テンプレート割り当て等のアクション実行が可能■ 起動時に通信が失敗した場合でもRefreshActiveChecksで指定した間隔で定期的に情報送信

新たに追加されたホストを自動的に監視スタート可能

Zabbix Agent

Target Server

Target Server

Target Server

Zabbix Agent

Target Server

Zabbix Agent

Zabbix Serveror

Zabbix Proxy

Zabbix Agent

※送付先は、ServerActiveで指定したZabbix Server (カンマ区切りで複数先指定も可能)

実行条件ホスト名 含まれる  linux

Hostname=linux-server02ListenIP=10.0.0.2ListenPort=10050

Zabbix Agent自動登録機能

NoOps実践に向けた機能

Zabbix AgentZabbix

Server

具体例

イベントソース『自動登録』アクション

実行内容- ホストを追加- ホストグループに追加 Linux serversグループ- テンプレートとのリンクを追加 Template OS Linux

実行条件ホスト名 含まれる  linux

Hostname=linux-server02ListenIP=10.0.0.2ListenPort=10050

Zabbix Agent自動登録機能

NoOps実践に向けた機能

Zabbix AgentZabbix

Server

具体例

イベントソース『自動登録』アクション

実行内容- ホストを追加- ホストグループに追加 Linux serversグループ- テンプレートとのリンクを追加 Template OS Linux

注)自動登録されるのはエージェントのインタフェースのみ

実行条件ホスト名 含まれる  linux

Hostname=linux-server02ListenIP=10.0.0.2ListenPort=10050

Zabbix Agent自動登録機能

NoOps実践に向けた機能

Zabbix AgentZabbix

Server

具体例

イベントソース『自動登録』アクション

実行内容- ホストを追加- ホストグループに追加 Linux serversグループ- テンプレートとのリンクを追加 Template OS Linux

可能な実行内容- メッセージの送信- リモートコマンド実行- ホストを追加- ホストグループに追加- テンプレートとのリンクを追加- ホストを無効

より複雑なことをするなら

Zabbix Agent自動登録機能

NoOps実践に向けた機能

新たにHostMetadataの通知機能が実装されより柔軟な自動設定が可能に

New

Zabbix2.0系

- Hostname- ListenIP- ListenPort

Zabbix2.2系

- Hostname- ListenIP- ListenPort- HostMetadata

HostMetadataに各サーバの特性を示す情報を付与することでアクション設定に活用可能

zabbix_agentd.conf設定例HostMetadata = Linux DBServer

アクション実行条件例A and BA. ホストメタデータ 含まれる  LinuxB. ホストメタデータ 含まれる  DBServer

ローレベルディスカバリ機能

NoOps実践に向けた機能

サーバ内部情報を探索し、探索結果に応じた適切な監視設定自動化

- Zabbix2.0から搭載された機能- 各サーバのNICやファイルシステム、SNMP OIDのディスカバリが可能

lo

eth0

eth1

/

/boot

/var/proc/mountsの情報を自動取得注)Linuxの場合

/proc/net/devの情報を自動取得注)Linuxの場合

Zabbix AgentZabbix Server

SNMP Agent探索定期実行

DB

探索探索結果に応じて監視設定自動登録

ローレベルディスカバリ機能

NoOps実践に向けた機能

ファイルシステムディスカバリ設定例 - ディスカバリルール -

ディスカバリルール用キーを登録

- ファイルシステム: vfs.fs.discovery- NIC:net.if.discovery- SNMP OID:任意(OID設定箇所に対象のSNMP OIDを指定)

フィルタリング設定可能

ディスカバリ結果が格納されるマクロ変数の値に対してフィルタリング設定可能

ローレベルディスカバリ機能

NoOps実践に向けた機能

ファイルシステムディスカバリ設定例 - アイテムプロトタイプ -

監視アイテムキーを登録

ディスカバリ結果が格納されているマクロを活用してアイテムキー設定

- ファイルシステム : {#FSNAME}, {#FSTYPE}- NIC : {#IFNAME}- SNMP OID : {#SNMPINDEX}, {#SNMPVALUE}

ローレベルディスカバリ機能

NoOps実践に向けた機能

ローレベルディスカバリの仕組み

{ { "data":[   {   "{#FSNAME}":"\/",  "{#FSTYPE}":"rootfs"},  {  "{#FSNAME}":"\/proc",  "{#FSTYPE}":"proc"},  {  "{#FSNAME}":"\/sys",  "{#FSTYPE}":"sysfs"},  ・・・省略

}

- JSON形式で情報が返される- この形式に準拠すれば他の様々な値のディスカバリに活用可能

ファイルシステムの例

NoOps実践に向けた機能

ローレベルディスカバリ機能ホストプロトタイプ設定によりディスカバリ結果を使ったホスト登録が可能に

New

Zabbix2.0系

- アイテムプロトタイプ- トリガープロトタイプ- グラフプロトタイプ

Zabbix2.2系

- アイテムプロトタイプ- トリガープロトタイプ- グラフプロトタイプ- ホストプロトタイプ

ホストプロトタイプ設定可能情報

ホスト情報

- ホスト名 - 表示名

ホストグループ情報

- 既存グループ指定 -マクロ名で新規グループ登録

テンプレート情報

- テンプレート指定

ホストインベントリ情報

- 無効/手動/自動の選択

VMware環境の自動監視

NoOps実践に向けた機能

New

VMwareのvSphereAPIをもとに情報収集

Zabbix Server

API

vCenterServer

VMware ESXi

VMware ESXi

VMware ESXi

URL:https://vcenter/sdk

API

URL:https://esxi/sdk

VM

VM

VM

vCenter経由 - クラスタのディスカバリ - ESXiのディスカバリ - VMのディスカバリ

VMwareESXi経由 - VMのディスカバリ

ローレベルディスカバリ結果はマクロとして登録され、ホストプロトタイプを使ってホスト自動登録{#VM.NAME},{#HV.NAME}など

監視できること- ハイパーバイザとVMの紐付け- ハイパーバイザ、VMのリソース (CPU,Memory,NIC,DiskIO等)- ハイパーバイザ、VMの稼働状態 (稼働時間,ステータス等)

アクション自動化

NoOps実践に向けた機能

監視状況に応じてアクションの自動実行が可能

指定可能なイベントソース (アクション実行元 )

トリガー 監視アイテムに対して設定したしきい値検知

ディスカバリ NWディスカバリ機能による新規監視対象機器検知

自動登録 ZabbixAgent自動登録機能による新規マシン検知

内部イベント アイテム取得不可、トリガー不明等の検知 New

イベントソース アクション実行条件 アクション実行内容

トリガー ディスカバリ 自動登録 内部イベント

アプリケーション

ホストグループ

ホストテンプレート

ホスト

トリガー

トリガー名

トリガーの深刻度

トリガーの値

期間

メンテナンスの状態

ホストのIPアドレスサービスのタイプサービスのポートディスカバリルールディスカバリチェックディスカバリオブジェクトディスカバリのステータスアップタイム/ダウンタイム受信した値プロキシ

ホスト名プロキシホストメタデータ

イベントタイプ - アイテムの取得不可状態 - トリガーの不明状態 - ディスカバリルールの取得不可状態

アクション自動化

NoOps実践に向けた機能

監視状況に応じてアクションの自動実行が可能

条件指定に使える要素

New

イベントソース アクション実行条件 アクション実行内容

New

トリガー ディスカバリ 自動登録 内部イベント

メッセージの送信

リモートコマンド

メッセージの送信

リモートコマンド

ホストを追加

ホストを削除

ホストグループに追加

ホストグループから削除

テンプレートとのリンクを作成

テンプレートとのリンクを解除

ホストを有効

ホストを無効

メッセージの送信

リモートコマンド

ホストを追加

ホストグループに追加

テンプレートとのリンクを作成

ホストを無効

メッセージの送信

アクション自動化

NoOps実践に向けた機能

監視状況に応じてアクションの自動実行が可能

実行できる内容

New

イベントソース アクション実行条件 アクション実行内容

リモートコマンドについて

- ZabbixServerからもZabbixAgentからも実行可能

- SSH/Telnet接続しての実行可能

Zabbixは ◯DevとOps、場合によってはBizにとって必要な情報をインテグレーション  - 豊富な監視機能

 ◯NoOps実現に向けた監視・運用のプラットフォームとして活用可能  - 監視設定自動化(自動登録機能・LLD等)  - 運用オペレーション自動化(豊富なアクション実行機能)

まとめ

DevOpsの意識の下、迅速で安定したサービス運用にZabbix活用が有効

お知らせZABBIX-JP

● 10/19,20両日ブース出展○ Zabbix2.1.7のデモ展示しています○ Zabbixに関するご相談・ご質問お答えします

その他

● 書籍出版予定○ 寺島さんの入門編に続く応用的な内容○ 『Zabbix統合監視[実践]活用

  - 物理・仮想・クラウド混在環境の省力運用(仮)』○ 技術評論社さんから12月頃出版予定

Zabbix活用でクラウド/DevOps時代の効率よいシステム提供を実現

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

ZABBIX-JP