Zabbixを使った
効果的な運用管理の実現
TIS株式会社
戦略技術センター
池田 大輔
2014/7/1データセンタークロスアライアンス 運用標準化WG
アジェンダ
● 自己紹介・会社紹介
● 運用環境の変化について
● 運用環境が変化することで生じる問題
● 運用に必要な情報の効果的な収集と活用
● 構築・運用の自動化による手作業の削減
● オーケストレションツールの活用
● まとめ
● 最後に
○ TIS OSSサポートサービスのご紹介
自己紹介
池田 大輔
TIS株式会社 戦略技術センター
@ike_dai
https://www.facebook.com/ikedai
Zabbix,AWS,fluentd,Chef,JobScheduler...
名前
所属
Twitter
Facebook
興味
AWS、VMware監視用プラグイン『HyClops for Zabbix』開発
(http://tech-sketch.github.io/hyclops/jp/)技術評論社HP : http://gihyo.jp/book/2014/978-4-7741-6288-1
Amazon : http://www.amazon.co.jp/dp/4774162884
TIS株式会社
昭和46年 4月28日
231億円
6077名
コンサルティング、ソフトウエア開発等のSI事業
設立
資本金
従業員数
事業
データセンター
GDC 御殿山
東京第1センター
東京第2センター
東京第3センター
名古屋センター
師勝センター
心斎橋gDC-EX
心斎橋gDC
大阪センター
天津濱海高新インターネットデータセンター
Cloud
最近の動向・運用環境の変化
HW
OS
MW
APP
HW
OS
MW
APP
HV
VM
OS
MW
APP
VM
OS
MW
APP
VM
OS
MW
APP
VM
HW
OS
HW
HV
VM
Cloud
VM
Container
Container
Container
Container
Container
Container
物理 仮想化 クラウド化 マルチ環境化・コンテナ型仮想化
仮想化レイヤの追加
環境がクラウド上に存在
し、HW・HVレイヤの管理
がクラウドレイヤに隠蔽
複数環境の併用
プロセス空間を分離した
アプリケーション稼働基盤の実現
HW
HV
HW
HV
運用環境の変化によって生じる課題
セキュリティリスクを考慮しなければならない箇所の増加
より大規模で動的に変化する環境の運用負荷高騰
障害状況の判断の複雑化
ベンダーロックイン
などなど
運用環境の変化によって生じる課題
セキュリティリスクを考慮しなければならない箇所の増加
より大規模で動的に変化する環境の運用負荷高騰
障害状況の判断の複雑化
ベンダーロックイン
などなど
Cloud
障害状況の判断の複雑化
OS
MW
APP
VM
OS
MW
APP
VM
HW
OS
MW
APP
HV
VM
OS
MW
APP
VMVM障害
HV障害
Cloudサービス障害
障害発生の可能性があるレイヤの増加
HV
VM VM VM VM VM
負荷高騰
他のマシンへの影響
集約管理による影響の拡大
HW
HV
手作業の限界
東京データセンター
パブリッククラウド
大阪データセンター
多拠点大規模
VM
VM
VM
VM
オートスケール
スケール時の構築はどうする?
増えたマシンの監視はどうする?
数百・数千台の管理どうする?
複数拠点の監視設定どうする?
監視・管理用
サーバ
?
? ?
?
環境情報の
効果的な収集と活用
「状況判断の複雑化」への対応
まずは、
必要な情報を確実に集める
どんな情報の収集が必要か?
Webサーバ DBサーバ
仮想環境 クラウド環境
・死活状況
・リソース状況
・アクセス状況 (アクセス頻度、レスポンス時間等 )
・エラー発生状況 (レスポンスコード4xx、5xx系等)
・死活状況
・リソース状況
・DB処理状況
  (スロークエリ発生状況、 SQL処理実行時間、
  SQL発行件数等)
・ハイパーバイザ情報
 (稼働状況、リソース割当状況、
 リソース仕様状況等 )
・VM情報
 (稼働台数、リソース状況、稼働状況等 )
・クラウドサービスの稼働状況
 (サービスのステータス、クラウド基盤の稼働状況 )
・クラウドサービスベンダー管理レイヤの状況
 (隠蔽されている部分での稼働状況 )
・クラウド上のインスタンスの稼働状況
Zabbixによる効果的な監視
snmp server
snmp server
SNMP Trap
SNMP
ssh server
ssh server
Zabbix Agent
仮想化HV
Cloud
ODBC
DB
JMX
Java
アプリ
仮想環境API
クラウドAPI
SSH接続による
内部コマンド実行監視
ZabbixAgentによ
る内部監視
(リソースやログ等)
ODBCによるDB監視
Zabbix Java GatewayによるJava監視
外部チェックスクリプト監視機能による API監視
Zabbix Server
Zabbixによるクラウド環境の監視
〜AWSの例〜
Zabbix Server
AWS
EC2
Cloud
Watch
Zabbix Agent
EC2インスタンス内部の監視
EC2インスタンス全体の稼働状況の監視
AWS EC2 API
AWS CloudWatch API
EC2インスタンス情報の収集
CloudWatchの結果の統合
スクリプト
メタクラウドAPIを使った透過的なクラウド監視
参考1
AWS
AWS API
RackspaceRackspace
API
OpenStackOpenStack
API
・・・
メタクラウドAPI
スクリプト
APIの叩き方を統合
複数の異なる環境の
APIを叩く際に有効
・ Deltacloud
・ libcloud
・ jclouds
などのメタクラウドAPIがある
Zabbix向けHybrid Cloud監視プラグイン
「HyClops for Zabbix」
参考2
AWSおよびVMware環境の監視自動化のためのツール
機能
クラウドAPI経由でインスタンス名およびインタフェース情報を取得し Zabbixホスト自動登録
ホスト自動登録
テンプレート自動割当
API経由での情報取得
複数インスタンス一括制御
GateOne連携
ホスト自動登録時OS種別(LinuxかWindows)に応じて自動テンプレート割当・ OSレイヤ以上の監視可能
AWS |インスタンス情報(AZ,Type,Status等)、課金情報(CloudWatch BillingData)
VMware|HV情報(CPU,Memory,Storageの全体量/割当量/使用量)、VM情報(CPU,Memory,Status等)
起動/停止/再起動を複数インスタンスに一括命令実行可能 (Zabbixグローバルスクリプト機能利用 )
Zabbixに登録したホストのインタフェース情報を使って Webブラウザ上でSSHコンソール接続可能
GitHub上でOSS公開: http://tech-sketch.github.io/hyclops/jp/
次に、
情報を意味のある形で管理
収集した情報の適切な活用
大量のデータから意味のあるデータのみを抽出
複数のデータを統合的に見て意味のあるデータに解析
Zabbixの監視アイテムとトリガーの活用
例:
1ハイパーバイザ上に稼働している全マシンのCPU負荷状況をみて
CPUの追加割当処理を検討
個で見ていると見えてこない状況を効果的にピックアップ
物理マシンCPU使用率
100%
50%
0%
物理マシン(ハイパーバイザ)
仮想マシン群
仮想マシンCPU使用率
100%
50%
0%
仮想マシンA
仮想マシンB
仮想マシンC
仮想マシンA
仮想マシンB
仮想マシンC
CPU追加割り当て検討
Zabbixトリガーの依存関係の活用
例:
仮想環境の稼働状態を統合的に監視
ハイパーバイザが障害
物理マシン(ハイパーバイザ)
仮想マシン群
Zabbixトリガーの依存関係の活用
例:
仮想環境の稼働状態を統合的に監視
1つの障害が影響する範囲を考え障害の本質のみを検知
ハイパーバイザが障害
VMにも影響
各VMが障害
依存関係
物理マシン(ハイパーバイザ)
仮想マシン群
アイテムキー設定例
grpavg[Web servers,system.cpu.load[,avg1],last,0]
Zabbixアグリゲートアイテムと
         計算アイテムの活用
例:
負荷分散しているWebサーバのロードアベレージの偏りを監視
Zabbixのホストグループ単位で同じアイテムの値を計算処理
平均(grpavg)、最大(grpmax)、最小(grpmin)、合計(grpsum)
アグリゲートアイテム
計算アイテム
Zabbixの監視アイテムの値を計算処理
加算・減算・乗算・除算・Zabbixのトリガー関数による計算処理
計算処理例
Webサーバグループのロードアベレージの分散値の計算
「(hostAのロードアベレージ - Webサーバのホスト群のロードアベレージの平均)の2乗」
Zabbixアグリゲートアイテムと
         計算アイテムの活用
例:
負荷分散しているWebサーバのロードアベレージの偏りを監視
閾値監視だけでは判別できない状況の検知が可能
Immutableな考え方が広まると個々の状況より全体の状況が重要に
LoadBalancer
Webサーバ1 Webサーバ2 Webサーバ3 Webサーバ4
スケールアウト
構築・運用自動化による
手作業削減
「手作業の限界」への対応
環境構築の自動化
- 大量に同じマシンの作成が必要
- オートスケールにより迅速な環境の準備が必要
対応策の一例
 セットアップ済みのVMイメージを事前準備
 →VMイメージをベースに構築
 But.. 設定の違うサーバ毎にイメージを作成→管理が煩雑に。。。
こんな要求に悩まされていませんか?
仮想化やクラウド化により実現が可能な土台は整っている
AnsibleやChefを使った構築自動化
構築作業をコードとして記述し自動化
- name: Register Zabbix yum repository
yum: name={{ zabbix_repo }} state=present
- name: Install Zabbix
yum: name=zabbix-agent-{{ zabbix_version }} state=latest
- name: Set zabbix_agentd.conf
copy: src=zabbix-agentd.conf dest=/etc/zabbix/zabbix-agent.conf
- name: Start Zabbix Agent
service: name=zabbix-agent state=started enabled=yes
task(実行処理定義)
major_version: "2.2"
minor_version: "4"
zabbix_version: "{{major_version }}.{{ minor_version }}"
zabbix_repo:
"http://repo.zabbix.com/zabbix/{{major_version}}
/rhel/6/x86_64/zabbix-release-{{major_version}}-1.el6.noarch.rpm"
vars(変数定義)
AnsibleでZabbix Agent構築自動化
変数を書き換えて、処理実行するだけで
Zabbix Agentのバージョンアップ可能
これだけの記述でZabbix Agentの導入が自動化可能
Serverspecを使った稼働環境テスト
ChefやAnsibleで自動構築
正しくパッケージが入った?
正しくプロセスが稼働している?
正しくセキュリティ設定が反映されている?
サーバ稼働状況テストフレームワーク「Serverspec」でテスト
Serverspecとは
 ・Ruby実装
 ・Rubyのテストフレームワーク RSpecに準拠
 ・テスト実行元サーバからテスト対象サーバに
  SSHログインしてテスト実行
 ・サーバ内で稼働状況を確認するための
  コマンドを実行して正常かどうかをテスト
Serverspecを使った稼働環境テスト
Zabbix Agent稼働テストコード例
require 'spec_helper'
describe package('zabbix-agent') do
it { should be_installed }
end
describe service('zabbix-agent') do
it { should be_enabled }
it { should be_running }
end
describe port(10050) do
it { should be_listening }
end
describefile('/etc/zabbix/zabbix_agentd.conf') do
it { should be_file }
its(:content) { should match /Server=127.0.0.1/ }
end
パッケージがインストールされているか?
プロセスが起動しているか?
プロセスが初期起動設定が有効になっているか?
ZabbixAgentのポート(10050)がリッスンされているか?
zabbix_agentd.confが存在するか?
設定ファイル内にServerの設定が入っているか?
監視設定自動化
snmp server
Zabbix Agent
Zabbix Server
Zabbix Agent自動登録機能
snmp server
Zabbix Agent
Zabbix Agent
ネットワークディスカバリ機能
vSphere API
VMware監視機能
Zabbix Agent
NWディスカバリ機能
   ZabbixAgent自動登録機能
NWディスカバリ(ポーリング型) 自動登録(プッシュ型)
Zabbix Server
or
Zabbix Proxy
Target
Server
Target
Server
Target
Server
Target
Server
Zabbix Server
or
Zabbix Proxy
Target
Server
Target
Server
Target
Server
Target
Server
指定したNW宛に定期ポーリング
Zabbix
Agent
Zabbix
Agent
Zabbix
Agent
Zabbix
Agent
起動時にプッシュ通知
■ NWのIPrange指定をしてポーリング
■ 検知条件が豊富
 - Zabbix Agent
 - SNMP
 - ICMP ping
 - TCP
 - HTTP 等
■ Agent起動時にZabbixServerに通知
 →無駄なパケットが発生しない(効率的)
■ 通知時に送付される情報
 - Hostname (Agetホスト名)
 - ListenIP (Agent稼働IP)
 - ListenPort (Agent稼働ポート)
 - HostMetadata (Agentに割り当てられたメタ情報 )
NWディスカバリ機能
   ZabbixAgent自動登録機能
NWディスカバリ(ポーリング型) 自動登録(プッシュ型)
Zabbix Server
or
Zabbix Proxy
Target
Server
Target
Server
Target
Server
Target
Server
Zabbix Server
or
Zabbix Proxy
Target
Server
Target
Server
Target
Server
Target
Server
指定したNW宛に定期ポーリング
Zabbix
Agent
Zabbix
Agent
Zabbix
Agent
Zabbix
Agent
起動時にプッシュ通知
■ NWのIPrange指定をしてポーリング
■ 検知条件が豊富
 - Zabbix Agent
 - SNMP
 - ICMP ping
 - TCP
 - HTTP 等
■ Agent起動時にZabbixServerに通知
 →無駄なパケットが発生しない(効率的)
■ 通知時に送付される情報
 - Hostname (Agetホスト名)
 - ListenIP (Agent稼働IP)
 - ListenPort (Agent稼働ポート)
 - HostMetadata (Agentに割り当てられたメタ情報 )
NWディスカバリ機能
   ZabbixAgent自動登録機能
NWディスカバリ(ポーリング型) 自動登録(プッシュ型)
Zabbix Server
or
Zabbix Proxy
Target
Server
Target
Server
Target
Server
Target
Server
Zabbix Server
or
Zabbix Proxy
Target
Server
Target
Server
Target
Server
Target
Server
指定したNW宛に定期ポーリング
Zabbix
Agent
Zabbix
Agent
Zabbix
Agent
Zabbix
Agent
起動時にプッシュ通知
新たな機器発見時に自動実行できるアクション
  ホスト追加
  ホストグループへの割り当て
  監視テンプレートの割り当て
  メッセージの送信
 など
VMware自動監視機能
VMware監視の仕組み
ZabbixServer
vCenterServer
VMwareESXi
VM VM VM
VMwareESXi
VM VM VM
VMwareESXi
VM VM VMVMware
Cache
VMwareCollectors vSphereAPI
simple check (VMwareFrequencyの頻度で)
- クラスタ情報
- ハイパーバイザ情報
- データストア情報
- 仮想マシン情報
- イベントログ情報
追加&更新
Zabbix2.2から実装された機能
vSphere APIを経由してHVやVMの情報をZabbixで自動監視
vCenter管理下のESXiやVMのリストに合わせる形でZabbix上のホストを自動管理
オペレーション自動化
Zabbixアクション機能の活用
アクション実行条件 アクション実行内容
- メンテナンス期間外で
- あるホストグループの
- あるトリガーの状態が障害なら
・・・
- あるユーザ宛にメール送信
- あるユーザグループ宛にメール送信
- あるホストグループに対してコマンド実行
- あるホストに対してコマンド実行
・・
何らかのイベント発生時に処理を自動実行可能に
Zabbixアクション機能ステップ実行機能
担当者への
メッセージ送信
第1ステップ
管理者・担当者
への
メッセージ送信
プロセスA再起動
(カスタムスクリプト)
第2ステップ 第3ステップ
間隔
1時間
間隔
2時間
アクション実行フロー
管理者への
メッセージ送信
プロセスA再起動
(カスタムスクリプト)
障害発生
自動化の全体イメージ
ベース
イメージ
例: AWS AMI
  VMイメージ
インスタンス
VM
自動起動
例:
 AWS AutoScaling
OpenStack Heat
Web
Server
DB
ServersDB
Server
インスタンス
インスタンス
VM
VM
Web
ServerWeb
Server
DB
Server
自動構築
例:
 AWS OpsWorks
Chef/Puppet/Ansible
運用監視・管理ツール
Zabbix
自動設定
例:
 ZabbixのNWディスカバリ/自動登録
 HyClops for Zabbix
自動オペレーション実行
例:
 Zabbixアクション機能
オーケストレーションツール
応用編
1ツールだけでなく、様々なツールの組み合わせで
エコシステムを実現することが重要
効率良く運用管理するには?
オーケストレーションツールとは?
Why
What
How
マルチ環境の効率良い運用管理のために
様々な環境(Public/Private Cloud)のあらゆるリソースを
様々なコンポーネントを組み合わせて統一的にソフトウェア管理
オーケストレーションツール
応用編
1ツールだけでなく、様々なツールの組み合わせで
エコシステムを実現することが重要
効率良く運用管理するには?
オーケストレーションツールとは?
Why
What
How
マルチ環境の効率良い運用管理のために
様々な環境(Public/Private Cloud)のあらゆるリソースを
様々なコンポーネントを組み合わせて統一的にソフトウェア管理
TISが開発し、OSSとして公開
公式サイト: http://cloudconductor.org/
公開先URL: https://github.com/cloudconductor
Twitter: @ccndctr
Facebook: CloudConductor(https://www.facebook.com/cloudconductor)
CloudCondcutor概要
● インフラ・運用のノウハウを込めたパターンを中心に
● 「いつでも」 「誰でも」 「どのクラウド」にでも
● その時点で最適な非機能要件を持ったシステムを簡単に構築する、 クラウド
オーケストレータ
CloudCondcutor活用例
         災害対策への適用
DBWeb/AP Monitoring CoreFileServer
Virtual
Router
DNS
通常時
災害時
Backup
User
User
Virtual
Router
業務システム
障害発生!
④接続先が自動的に切り替わる
Monitoring CoreFileServer
Virtual
Router
DNS DBWeb/AP
Virtual
Router
業務システム
Restore
②パターンを用いて
システムを自動再構築
DBWeb/AP
業務システム
①障害の検知
①監視
②データのバックアップ
通知
設定
変更
Virtual
Router
通常系
通常系 待機系
待機系
③データの自動リストア
業務システム用のサーバ等は
構築されていない
まとめ
必要な情報を確実に収集
集めた情報を意味のある形で活用
人手に依存しない仕組み作り
高機能化する監視ツールをうまく活用
個で見る視点と全体で見る視点どちらも重要
ソフトウェア制御できるレイヤの拡大に伴い益々自動化が促進
TIS OSSサポートサービス
宣伝1
保守サポート
コンサルティング マイグレーション
OSSの利用をトータルにバックアップ
TIS OSSサポートサービス
宣伝1
対象OSS
インフラ基盤
運用基盤
アプリケーション
稼働基盤
TIS OSSサポートサービス
宣伝1
問い合わせ先
oss-sales@ml.tis.co.jp
TIS株式会社
OSSサポートサービス担当窓口
オープンソースカンファレンス出展
宣伝2
- 2014 7/4(金)-7/5(土) OSC 2014 Nagoya
セミナー 7/5(土) 14:00〜
 「ツールをちょい足ししてPostgreSQLの運用を楽にする ~pg_monz, fluentd 他~」
- 2014 8/1(金)-8/2(土) OSC 2014 Kansai@Kyoto
セミナー 8/1(金) 15:15〜
 「手作業なしの安定環境実現に向けたZabbix活用方法紹介+Zabbix2.4最新機能紹介」
- 2014 9/5(金) OSC 2014 Enterprise@Osaka
- 2014 12/12(金) OSC 2014 Enterprise(東京 渋谷)
各回ブース展示もします。
ぜひ、お越しください。
ご清聴ありがとうございました

Zabbixを使った効果的な運用管理の実現