AWSã®ä¾¿å©ãªç£è¦ãµã¼ãã¹ã¨ Zabbixç£è¦ã®èåã«ããå¹æ TISæ ªå¼
Transcription
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