AWSの便利な監視サービスと Zabbix監視の融合による効果 TIS株式

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