AWSの便利な監視サービスとZabbix監視の融合による効果
TIS株式会社OSS推進室
池田 大輔
2015/04/22 AWS運用管理フォーカスセミナー
目次
2
自己紹介
TISの取り組み紹介
AWS監視サービスとZabbix監視機能使い分け- CloudWatch,CloudWatch Logs,AutoRecovery...など- Zabbix Agent監視、ログ監視、Web監視、アクション機能...など
AWS監視サービスとZabbix監視機能の効果的な組み合わせ- 監視設定の自動化- 監視結果の統合管理- 監視結果に基づく処理の自動化
事例 : AWSエンタープライズ監視パック
まとめ
自己紹介
3
名前池田 大輔
TIS株式会社 OSS推進室
@ike_dai
Zabbix,AWS,fluentd,JobScheduler...
所属
興味
ThinkIT「自動化時代のインフラ環境稼働テスト「 Serverspec」入門」
(http://thinkit.co.jp/book/2014/08/01/5149)技術評論社HP : http://gihyo.jp/book/2014/978-4-7741-6288-1Amazon : http://www.amazon.co.jp/dp/4774162884
TISのサービス紹介 その1
4
TISエンタープライズOSSサポートサービス
対象OSS
インフラ基盤
運用基盤
アプリ稼働基盤
※TISはZabbix社の認定パートナーです。
OSS推奨スタック『ISHIGAKI Template』
https://www.tis.jp/service_solution/oss/
TISのサービス紹介 その2
5
TISクラウドインテグレーション for AWS ~AWSエンタープライズ監視パック ~
監視サーバ
利用者
TIS データセンター
お客様
① AWSインスタンスの監視
② 電話連絡
③ 障害切り分け、一次対応
監視対象インスタンス数は無制限! 何台増えても月額費用は変わりません!
オートスケール対応!サーバが増えると監視サーバへ自動登録されます!※使用するAMIに監視エージェントの導入が事前に必要となります。
AWS上でのエンタープライズ運用を可能に!
①:AWS上のインスタンスのプロセス監視/ログ監視を含む監視を行います。②:何か異常が発生した場合、TIS DCのオペレータから電話連絡を行います。③:お客様環境の障害切り分け、一次対応も行います。
https://www.tis.jp/service_solution/aws/
AWS監視サービスとZabbix監視機能使い分け
6
Why?
When/Where?
・AWSの監視サービスだけでは見れない部分もある - 各種サービス制約 や環境上の制約等
・Zabbixの監視機能だけでは見れない部分もある - Zabbixからはアクセスできない箇所 等
安定運用のためにはいずれか一方だけでは物足りない
例)・AWSだけで完結するシステムではない場合・より細やかな運用を行いたい場合・より厳しい要件のもと運用を行いたい場合 などなど
7
両方を使うなら
『まずはそれぞれの素性を知ることが重要』
AWS監視サービスとZabbix監視機能使い分け
機能比較
8
死活・リソース監視
ログ監視
Web監視
アラート通知
自動運用
AWSサービス Zabbix機能
CloudWatch
CloudWatch Logs
Route53ヘルスチェック
SNS
Auto RecoveryAuto Scaling
Zabbixアクション機能(リモートコマンド)
Zabbixアクション機能(メッセージ)
Zabbix Webシナリオ監視
Zabbix ログ監視
Zabbix Agent監視
機能比較 -CloudWatch と Zabbix Agent監視
9
instances
CloudWatch
CloudWatch Zabbix Agent監視
Billing Data
Alarm
共通ポイント★ サーバ稼働ステータスやリソース状況等の監視可★ 任意の項目の監視可
○ CloudWatchカスタムメトリクス○ Zabbix Agent UserParameter定義
課金情報やインスタンス稼働ステータス(OSより下のレイヤ)監視が可能
Zabbix Server
Zabbix AgentZabbix
AgentZabbix Agent
監視結果 ヒストリデータ (実データ)
トレンドデータ (1時間毎平均・最大・最小値)
2週間を超える長期データ保存
標準での豊富な監視機能
リソース監視プロセス監視ファイル監視など実行可
TCP独自プロトコル
機能比較 -CloudWatch と Zabbix Agent監視
10
instances
CloudWatch
CloudWatch Zabbix Agent監視
Billing Data
Alarm
共通ポイント★ サーバ稼働ステータスやリソース状況等の監視可★ 任意の項目の監視可
○ CloudWatchカスタムメトリクス○ Zabbix Agent UserParameter定義
課金情報やインスタンス稼働ステータス(OSより下のレイヤ)監視が可能
Zabbix Server
Zabbix AgentZabbix
AgentZabbix Agent
監視結果 ヒストリデータ (実データ)
トレンドデータ (1時間毎平均・最大・最小値)
2週間を超える長期データ保存
標準での豊富な監視機能
リソース監視プロセス監視ファイル監視など実行可
TCP独自プロトコル
機能比較 -CloudWatch Logs と Zabbixログ監視
11
Instance
CloudWatch logs
CloudWatch Logs Zabbix ログ監視
高可用なストレージ
共通ポイント★ サーバ内任意のファイルの監視可★ ローテートするファイルの監視可★ 単純なフィルタリング機能のみ★ 1行単位でのログ監視★ 通信途絶への対応可
Zabbix Server
通知対象を更に正規表現でフィルタリング
TCP独自プロトコルactive監視
awslogs agent
インターネット経由
push
課金情報やインスタンス稼働ステータス(OSより下のレイヤ)監視が可能
ログはAWS内で管理期間無制限で保存することも可
独自のフィルタリング機能フィルタ結果カウンティング可
Zabbix agent
取り込むログを正規表現でフィルタリング
機能比較 -CloudWatch Logs と Zabbixログ監視
12
Instance
CloudWatch logs
CloudWatch Logs Zabbix ログ監視
高可用なストレージ
共通ポイント★ サーバ内任意のファイルの監視可★ ローテートするファイルの監視可★ 単純なフィルタリング機能のみ★ 1行単位でのログ監視★ 通信途絶への対応可
Zabbix Server
通知対象を更に正規表現でフィルタリング
TCP独自プロトコルactive監視
awslogs agent
インターネット経由
push
課金情報やインスタンス稼働ステータス(OSより下のレイヤ)監視が可能
ログはAWS内で管理期間無制限で保存することも可
独自のフィルタリング機能フィルタ結果カウンティング可
Zabbix agent
取り込むログを正規表現でフィルタリング
CloudWatch Logs フィルタリング とZabbixログ監視フィルタリング
13
参考
CloudWatch Logsフィルタリングの仕組み
LogGroup “Apache”
LogStream “access.log”
Filter “4xx”
Filter Pattern:[host, logName, user, timestamp, request, statusCode=4* , size]
[監視対象ログ]10.3.xx.xx - - [14/Apr/2015:17:30:50 +0900] "POST /zabbix HTTP/1.1" 200 944 "-" "Mozilla/5.0 (Windows NT 6.1)"10.1.xx.xx - - [14/Apr/2015:17:33:23 +0900] "POST /zabbix HTTP/1.1" 400 944 "-" "Mozilla/5.0 (Windows NT 6.1)"10.2.xx.xx - - [14/Apr/2015:17:34:52 +0900] "POST /zabbix HTTP/1.1" 400 944 "-" "Mozilla/5.0 (Windows NT 6.1)"
Metric
“ApacheLogs”/”4xx_filtered”
● Average: 1● Minimum: 1● Maximum: 1● Sum: 2● Data Samples: 2
ログ内の特定の要素の内容を分析した監視が可能
CloudWatch Logs フィルタリング とZabbixログ監視フィルタリング
14
参考
Zabbixログ監視フィルタリングの仕組み
LogItem “Apache Access Log 4xx”
Item key: log[logfile, “\s4([0-9]){2}\s”]
[監視対象ログ]10.3.xx.xx - - [14/Apr/2015:17:30:50 +0900] "POST /zabbix HTTP/1.1" 200 944 "-" "Mozilla/5.0 (Windows NT 6.1)"10.1.xx.xx - - [14/Apr/2015:17:33:23 +0900] "POST /zabbix HTTP/1.1" 400 944 "-" "Mozilla/5.0 (Windows NT 6.1)"10.2.xx.xx - - [14/Apr/2015:17:34:52 +0900] "POST /zabbix HTTP/1.1" 400 944 "-" "Mozilla/5.0 (Windows NT 6.1)"
CountItem “4xx log count”
[アイテムで抽出されたログ]10.1.xx.xx - -略... 400 944 "-" "Mozilla/5.0 (Windows NT 6.1)"10.2.xx.xx - -略... 400 944 "-" "Mozilla/5.0 (Windows NT 6.1)"
Trigger “Access Log 4xx from 10.2.xx.xx”
Trigger condition: log[logfilename, “\s4([0-9]){2}\s”].regexp( “^10\.2”)
Item key: count(“host:log[logfile, “\s4([0-9]){2}\s”]”,60)
計算アイテムを活用すればログ発生数のカウンティングも可
機能比較 -Route53ヘルスチェック と ZabbixWeb監視
15
Route53ヘルスチェック Zabbix Web監視
共通ポイント★ HTTP/HTTPS監視可★ ページのステータスコードの監視可★ ページ内の文字列監視可
○ Route53の場合、ページの冒頭5120bytesの中のみ
192.1.0.10 192.1.0.11 192.1.0.12
example.com
・・・・Health Checkers
複数リージョンからチェック
障害
DNSフェイルオーバとの連携が容易
Zabbix Server
login page
top page
user page
POSTパラメータ
SSLクライアント証明書
SSL証明書POSTパラメータ送付可
シナリオ監視可
機能比較 -Route53ヘルスチェック と ZabbixWeb監視
16
Route53ヘルスチェック Zabbix Web監視
共通ポイント★ HTTP/HTTPS監視可★ ページのステータスコードの監視可★ ページ内の文字列監視可
○ Route53の場合、ページの冒頭5120bytesの中のみ
192.1.0.10 192.1.0.11 192.1.0.12
example.com
・・・・
Health Checkers
複数リージョンからチェック
障害
DNSフェイルオーバとの連携が容易
Zabbix Server
login page
top page
user page
POSTパラメータ
SSLクライアント証明書
SSL証明書POSTパラメータ送付可
シナリオ監視可
Zabbix Web監視
17
参考
・Basic認証、NTLM認証のかかっているページの監視可能・POST変数の引き渡しが必要なページの監視可能・プロキシ経由の監視可能・クッキー情報を使ったページアクセス可能
ページ1
ページ2
・・・
ZabbixServer
● レスポンスタイム● レスポンスコード● ダウンロード速度● ページの文字列
機能比較 -SNSとZabbixアクション機能(メッセージ)
18
SNS Zabbixアクション機能(メッセージ)
共通ポイント★ 障害を検知してメールやその他ツールでプッシュ通知可★ 障害発生時およびリカバリ時に通知可
CloudWatch Alarm SNS
Trigger評価
Zabbix Server
Action実行条件
評価SMTPサーバ
その他スクリプト
Namespace: ApacheLogs Metric name: 4xx_filtered Period: 5 minutes Statistic: Sum is: >= 100
[Alarm設定例]4xxエラーの5分間の出力件数が100件以上なら通知
課金情報やインスタンス稼働 CloudWatch統計データ
をもとに容易に連携
HTTP/HTTPSで外部連携可
[Trigger条件式例]ホストAとホストBのDisk書き込み合計が80MBps以上なら通知
Trigger条件式:{ホストA:vfs.dev.write[,bps]} +{ホストB:vfs.dev.write[,bps]}>= 80
課金情報やインスタンス稼働ステータス(OSより下能
複数条件組合せによる詳細な条件指定可
任意のスクリプト実行で外部連携可
機能比較 -SNSとZabbixアクション機能(メッセージ)
19
SNS Zabbixアクション機能(メッセージ)
共通ポイント★ 障害を検知してメールやその他ツールでプッシュ通知可★ 障害発生時およびリカバリ時に通知可
CloudWatch Alarm SNS
Trigger評価
Zabbix Server
Action実行条件
評価SMTPサーバ
その他スクリプト
Namespace: ApacheLogs Metric name: 4xx_filtered Period: 5 minutes Statistic: Sum is: >= 100
[Alarm設定例]4xxエラーの5分間の出力件数が100件以上なら通知
課金情報やインスタンス稼働 CloudWatch統計データ
をもとに容易に連携
HTTP/HTTPSで外部連携可
[Trigger条件式例]ホストAとホストBのDisk書き込み合計が80MBps以上なら通知
Trigger条件式:{ホストA:vfs.dev.write[,bps]} +{ホストB:vfs.dev.write[,bps]}>= 80
課金情報やインスタンス稼働ステータス(OSより下能
複数条件組合せによる詳細な条件指定可
任意のスクリプト実行で外部連携可
機能比較 -AutoRecovery/AutoScaling
とZabbixアクション機能(リモートコマンド)
20
AutoRecovery Zabbixアクション機能(リモートコマンド)
課金情報やインスタンス稼働
CloudWatch統計データと連携した自動制御
EBSやEIPも同じ状態で復旧
AutoScaling
EBS
EIP
HW
NW障害
影響
EBS
EIP
HW
NW
自動復旧
CloudWatch Alarm AMI
自動復旧
高負荷
デプロイZabbix Server
Zabbix Agent
Process高負荷
検知
自動復旧
自動復旧
or
課金情報やインスタンス稼働
サーバ内部情報に基づく詳細な自動制御
機能比較 -AutoRecovery/AutoScaling
とZabbixアクション機能(リモートコマンド)
21
AutoRecovery Zabbixアクション機能(リモートコマンド)
課金情報やインスタンス稼働
CloudWatch統計データと連携した自動制御
EBSやEIPも同じ状態で復旧
AutoScaling
EBS
EIP
HW
NW障害
影響
EBS
EIP
HW
NW
自動復旧
CloudWatch Alarm AMI
自動復旧
高負荷
デプロイZabbix Server
Zabbix Agent
Process高負荷
検知
自動復旧
自動復旧
or
課金情報やインスタンス稼働
サーバ内部情報に基づく詳細な自動制御
22
使い分けを理解した上で
『互いを知り、協力関係を築くことが重要』
AWS監視サービスとZabbix監視機能の効果的な組み合わせ
効果的な組み合わせに向けた検討
23
『より運用に手間をかけないようにするには?』
3つの柱
『監視設定の自動化』
『監視結果の統合管理』
『監視結果に基づく作業自動化』
効果的な組み合わせに向けた検討
24
『より運用に手間をかけないようにするには?』
3つの柱
『監視設定の自動化』
『監視結果の統合管理』
『監視結果に基づく作業自動化』
監視設定の自動化
25
管理対象が稼働するAWSの構成情報をマスターとして
→Zabbix側に設定を自動連携
大量のインスタンスがあっても、 頻繁に環境が変わっても手間をかけずに運用
監視設定の自動化
26
設定自動化の方法は様々あり
● Zabbix Agent自動登録機能● Zabbix ネットワークディスカバリ機能● Zabbix API● Zabbix ローレベルディスカバリ(LLD)機能
などなど
Zabbix API活用例 -HyClops for Zabbix
27
参考
TISが開発しているZabbixの拡張プラグインツール
AWS EC2インスタンス情報をZabbixに自動連携
Zabbix Server
HyClops
VMware
.
.
.(拡張予定)
AWS API連携
vSphere API連携
Zabbix API(WebAPI)[method] host.create host.update
連携処理実行(外部スクリプト)
詳しくはこちら http://tech-sketch.github.io/hyclops/jp/ https://github.com/tech-sketch/hyclops
LLD活用例 -CloudModule for Zabbix
28
Zabbixローダブルモジュールの機能を活用Zabbix内部にAWSの情報を収集できる機能の組み込みを実現
インスタンスリスト および CloudWatchのメトリクスリスト を自動取得し監視結果を自動連携
参考
Zabbix
CloudModuleD
eltacloud
Loadable Module
cloud.metric.discovery
CloudCache(Shared memory)
{“data”: [ {“{#METRIC.NAME}”:”CPUUtilization”}, {“{#METRIC.NAME}”:”DiskReadBytes”}, {“{#METRIC.NAME}”:”NetWorkIn”}, ・・・・ ]}
cloud.metric[{#METRIC.NAME}]監視アイテム設定1つで
全メトリクス監視アイテム自動登録
詳しくはこちら https://github.com/ike-dai/zabbix-cloud-module
効果的な組み合わせに向けた検討
29
『より運用に手間をかけないようにするには?』
3つの柱
『監視設定の自動化』
『監視結果の統合管理』
『監視結果に基づく作業自動化』
監視結果の統合管理
30
AWSのサービスがカバーできるところはAWS側で
→結果を”見る”、結果を”判断”するところはZabbixで管理
マルチクラウド環境のような複雑な場合でも どこが原因でどの程度の影響範囲かの把握が容易に
監視結果の統合管理
31
AWSのAPIをZabbixからコールすることで統合管理を実現
AWS APIを通して監視する方法
● 外部チェックスクリプト● Zabbix Agent UserParameter● Zabbix Sender
などなど
AWSAPI
Zabbix Agent
Zabbix Server
① 外部チェックスクリプト監視
② Zabbix Agent UserParameter監視
③ Zabbix senderを使った監視
AWS APIとの連携方法
32
参考
リクエスト
監視結果
プッシュ型でZabbixに監視結果送付
リクエスト
監視結果
③
①
外部チェックスクリプト
ZabbixSender
ZabbixTrapper
Zabbix Agentアイテム
リクエスト
データ取得
②
複数のデータの一括連携にはZabbix Senderが有効
効果的な組み合わせに向けた検討
33
『より運用に手間をかけないようにするには?』
3つの柱
『監視設定の自動化』
『監視結果の統合管理』
『監視結果に基づく作業自動化』
監視結果に基づく作業自動化
34
「AWSサービス提供者側管理領域」も「ユーザ管理領域」もトータルで運用処理自動化の実現
AWSのサービス側でできる範囲はその中で管理 →それ以外はZabbixでの判断結果をAWSに連携
AutoRecoveryとZabbixアクション融合
35
参考
「StatusCheckFailed_Systemが異常値」ではない状態(=正常)で
「EC2内で障害が発生している」なら
復旧処理実行HW
NW障害
AutoRecovery
検知
復旧
Zabbix Server障害
障害検知
CloudWatch
StatusCheckFailed_System監視
復旧アクション
不必要に処理を実行させないためにはZabbixのトリガーの依存関係を活用
依存関係
36
『実サービスでも進む連携』
事例:AWSエンタープライズ監視パック
事例: AWS監視パックサービスの仕組み
37
EC2 API
CloudWatch API
instances
instancesCloudWatch
CloudWatch
Zabbix
Zabbix
・・・
①EC2インスタンスリストから監視設定自動化②外部スクリプトからGetMetricStatistics呼び出しによりCloudWatchデータ連携③Zabbix Web監視機能を使いサービス稼働状態を監視④障害時、Zabbixアクション機能で再起動自動化⑤外部のNWからのWeb監視およびZabbixの確認はTIS DCからリモート監視
①
②
③
④
TIS Data Center
⑤
事例: AWS監視パックサービスで挙がった課題
38
AutoRecoveryの利用を検討 →OSより上の領域での障害に対処できないAutoScallingのスケールポリシーで自動復旧を検討 →EBSの情報が引き継げず、障害時の復旧処理に時間がかかる
自動復旧の仕組み
Web監視の仕組み
CloudWatch APIから取得するデータ
Zabbixの柔軟なアクション機能を活用することに
レスポンスコード、レスポンスタイム以外にPOSTリクエストの応答監視もしたい
ZabbixのWeb監視機能を活用することに
→AWS内のZabbixサーバから実行の場合内部NWを経由した確認になる
TIS DCからインターネット経由での監視プランも提供
CloudWatch API(GetMetricStatistics)で取得できるデータは統計データ(Average,Minimum,Maximum,Sum)なので扱いに注意が必要
まとめ
39
- 様々なシーンに柔軟に対応できるのがZabbixのいいところ
- 初期設定の手間が省けて便利なのがAWSサービスのいいところ
TIS株式会社OSSサポートサービス担当窓口
互いを知り、効果的に組み合わせてよりよい運用環境を