AWSを含めた
ハイブリッド環境の監視
〜Zabbixのクラウド対応モジュールHyClops〜
DAISUKE Ikeda
@ike_dai
2014/07/26 JAWS-UG千葉
About me
池田 大輔
TIS株式会社 戦略技術センター
@ike_dai
https://www.facebook.com/ikedai
Amazon CloudWatch
名前
所属
Twitter
Facebook
好きな
サービス...
AWS上のシステムの監視
どうしてますか?
Amazon CloudWatch
※引用: http://aws.amazon.com/jp/cloudwatch/
Amazon CloudWatch
※引用: http://aws.amazon.com/jp/cloudwatch/
つまり
AWSのサービスの情報を
監視できるサービス
通知も設定可能
CloudWatchを使いこなして統合監視?
“カスタムメトリクス”
で何でもCloudWatchに入れてみる
EC2インスタンス CloudWatch
CloudWatch
API
PutMetricData
- EC2インスタンスの内部情報...
CloudWatchを使いこなして統合監視?
“カスタムメトリクス”
で何でもCloudWatchに入れてみる
EC2インスタンス CloudWatch
CloudWatch
API
PutMetricData
- EC2インスタンスの内部情報...
CDP: Monitoring Integration Pattern
※引用: http://aws.clouddesignpattern.org/index.php/CDP:Monitoring_Integrationパターン
Monitoring IntegrationをZabbixで
Zabbix Server
Zabbix Agent
EC2インスタンス内部の監視
EC2インスタンス全体の稼働状況の監視
EC2 API
EC2インスタンス情報の収集
CloudW...
なぜZabbix?
なぜZabbix?
● 監視の基礎となる作りの部分がよくできている
● 監視設定も手間をかけさないように自動化の枠組みが充実
● 「監視」に関する機能は非常に充実
監視
通知・
アクション実行
視覚化
※決して、見た目は今風ではないですが
たとえばこんな機能も - Zabbix API -
● 外部とZabbixとのインタフェース
○ Zabbixに対する操作(設定変更、ホスト追加、グループ作成等)実施
○ Zabbixで管理している監視結果の取得(history,event,I...
たとえばこんな機能も - Zabbix Sender -
Zabbix Server
DB
監視結果情報
設定情報
Zabbix
Trapper
Zabbix
API
Zabbix
Sender
set
Zabbix
API
library
s...
場合によっては
こんなことも
Webサーバの負荷分散度合いを算出
負荷分散しているWebサーバのロードアベレージの偏りを監視
閾値監視だけでは判別できない状況の検知も必要
Immutableな考え方が広まると個々の状況より全体の状況が重要に
LoadBalancer
Web...
アグリゲートアイテムと計算アイテムを活用
アイテムキー設定例
grpavg[Web servers,system.cpu.load[,avg1],last,0]
Zabbixのホストグループ単位で同じアイテムの値を計算処理
平均(grpavg)...
と、Zabbixの宣伝はここまで
要は、
Zabbixで監視すれば
何かいろいろいいことあるかも
Monitoring Integrationパターンを
Zabbixで少し扱いやすくするために
HyClops for Zabbix
作りました
HyClops for Zabbix
・AWSやvSphere環境の監視を自動化
・2013/07/12 OSS(GPL ver.2)としてリリース
・通常のZabbixに追加導入可能な形を採用
・Python実装のプログラム
・公開先はGit...
機能の詳細
OS
Zabbix
VMware
サポート環境
機能
CentOS,Ubutnuで動作確認済み
2.0系、2.2系対応
4.1および5.0、5.1(update1) ESXiで動作確認済(vCenter未対応)
クラウドAPI経由で...
アーキテクチャ
Zabbix Server
Physical Machine
Zabbix Host
Dashboard page(dashboard.php) SSH Connection page(gateone.php)
vSphere ...
Sorry・・・
● CloudWatchと連携できているのは課金情報のみ
● EC2やRDS、ELB等その他CloudWatchとの連携
強化は今後対応予定
     
CloudWatch logs!?
● 2014/7/14 CloudWatchでインスタンス内のログ
監視ができるCloudWatch logsがリリース
     
http://aws.typepad.com/aws_japan/2014...
CloudWatch logsの使い方
● 1. API操作に対する権限付与
○ IAMでポリシー設定している場合は以下の権限を付与
・・・
"Statement": [
{
"Effect": "Allow",
"Action": [
"lo...
CloudWatch logsの使い方
● 2. エージェントインストール
○ Amazon Linuxの場合は以下を実行
インストールスクリプト取得
$ wget https://s3.amazonaws.com/aws-cloudwatch...
CloudWatch logsの仕組み
● awslogsプロセスはログをpush
● 設定は/var/awslogs/etc/awslogs.conf
aws logs push --config-file /var/awslogs/etc/...
CloudWatch logsの仕組み
● ログのタイムスタンプはdatetime_formatで指定
○ 一致する部分があればログの作成時刻として連携
○ 一致しない場合はCloudWatchに連携された時刻が登録
例:
awslogs.co...
CloudWatch logs 収集結果
CloudWatch logsコマンド例
● ロググループの新規作成
● ログストリームの新規作成
● ログイベントの取得
次に続く
$ aws logs create-log-group --log-group-name "apache lo...
CloudWatch logsコマンド例
● ログイベントの登録
● ロググループに対してフィルタ作成
$ aws logs put-log-events --log-group-name "apache log" 
--log-stream-...
AWSさんはいろいろと対応が早い
AWSだけで完結するなら
AWSのサービスをうまく使うのもあり
※インスタンス内部にエージェントを送り込んできているので、
 そのうちもっといろんなことができるようになるのでは? (推察)
それ以外にもあるなら
Monitoring Integrationパターンを
効率良く実現できる方法を探るのがいいかも
※HyClops for Zabbixはあくまでそれをお助けする1ツール
「AWSも含めた運用」を効率良くできるように
ともにがんばりましょう
Thank you.
2014/07/26 JAWS-UG千葉
Upcoming SlideShare
Loading in...5
×

AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~

6,277

Published on

JAWS-UG 千葉での発表資料です。
HyClops for ZabbixやCloudWatch logsについて紹介しています。

Published in: Technology
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,277
On Slideshare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
39
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~

  1. 1. AWSを含めた ハイブリッド環境の監視 〜Zabbixのクラウド対応モジュールHyClops〜 DAISUKE Ikeda @ike_dai 2014/07/26 JAWS-UG千葉
  2. 2. About me 池田 大輔 TIS株式会社 戦略技術センター @ike_dai https://www.facebook.com/ikedai Amazon CloudWatch 名前 所属 Twitter Facebook 好きな サービス 技術評論社HP : http://gihyo.jp/book/2014/978-4-7741-6288-1 Amazon : http://www.amazon.co.jp/dp/4774162884 @ITさんで連載「今さら聞けないfluentd~クラウド時代のログ管理入門」 (http://www.atmarkit.co.jp/ait/articles/1404/04/news004.html)
  3. 3. AWS上のシステムの監視 どうしてますか?
  4. 4. Amazon CloudWatch ※引用: http://aws.amazon.com/jp/cloudwatch/
  5. 5. Amazon CloudWatch ※引用: http://aws.amazon.com/jp/cloudwatch/ つまり AWSのサービスの情報を 監視できるサービス 通知も設定可能
  6. 6. CloudWatchを使いこなして統合監視? “カスタムメトリクス” で何でもCloudWatchに入れてみる EC2インスタンス CloudWatch CloudWatch API PutMetricData - EC2インスタンスの内部情報とかも CloudWatchに飛ばせる - API使って登録すればその他のなんでも CloudWatchに統合はできる
  7. 7. CloudWatchを使いこなして統合監視? “カスタムメトリクス” で何でもCloudWatchに入れてみる EC2インスタンス CloudWatch CloudWatch API PutMetricData - EC2インスタンスの内部情報とかも CloudWatchに飛ばせる - API使って登録すればその他のなんでも CloudWatchに統合はできる しかし 2週間しかデータ残らず、長期に渡った傾向とか見れない 取得したいデータに対して毎回API叩いて登録する設定も面倒
  8. 8. CDP: Monitoring Integration Pattern ※引用: http://aws.clouddesignpattern.org/index.php/CDP:Monitoring_Integrationパターン
  9. 9. Monitoring IntegrationをZabbixで Zabbix Server Zabbix Agent EC2インスタンス内部の監視 EC2インスタンス全体の稼働状況の監視 EC2 API EC2インスタンス情報の収集 CloudWatchの結果の統合 スクリプト EC2 CloudWatch CloudWatch API ログの監視とかプロセス稼働状況の監視とか
  10. 10. なぜZabbix?
  11. 11. なぜZabbix? ● 監視の基礎となる作りの部分がよくできている ● 監視設定も手間をかけさないように自動化の枠組みが充実 ● 「監視」に関する機能は非常に充実 監視 通知・ アクション実行 視覚化 ※決して、見た目は今風ではないですが
  12. 12. たとえばこんな機能も - Zabbix API - ● 外部とZabbixとのインタフェース ○ Zabbixに対する操作(設定変更、ホスト追加、グループ作成等)実施 ○ Zabbixで管理している監視結果の取得(history,event,IT service情報) ● JSON-RPC形式のAPI ○ URL: http://<zabbix-server>/zabbix/api_jsonrpc.php ○ メソッド: host.create、host.update、item.get、history.getなど ○ パラメータ: メソッド毎に必要なパラメータを渡す host.getの例 レスポンス { "auth": "xxxxxxx", "method": "host.get", "params": { "output": "extend", "filter": {"host":"Zabbix server"} }, "jsonrpc": "2.0", "id": 1 } { "jsonrpc":"2.0", "result":[{ "maintenances":[], "hostid":"10084", "host":"Zabbix server", ・・・略 }], "id":1 } リクエストパラメータ
  13. 13. たとえばこんな機能も - Zabbix Sender - Zabbix Server DB 監視結果情報 設定情報 Zabbix Trapper Zabbix API Zabbix Sender set Zabbix API library set get ● 外部から監視結果をプッシュ型で登録するためのプログラム ○ Zabbix Trapperアイテムに対して値を登録 ○ 何らかのトリガーをきっかけに監視結果をプッシュ型で送付したい場合に有効 ○ Agentレスでもzabbix_senderコマンドを実行するだけで実現可能 $ zabbix_sender -z <zabbix-server> -s "Zabbix server" -k "sender.test" -o 100
  14. 14. 場合によっては こんなことも
  15. 15. Webサーバの負荷分散度合いを算出 負荷分散しているWebサーバのロードアベレージの偏りを監視 閾値監視だけでは判別できない状況の検知も必要 Immutableな考え方が広まると個々の状況より全体の状況が重要に LoadBalancer Webサーバ1 Webサーバ2 Webサーバ3 Webサーバ4 スケールアウト
  16. 16. アグリゲートアイテムと計算アイテムを活用 アイテムキー設定例 grpavg[Web servers,system.cpu.load[,avg1],last,0] Zabbixのホストグループ単位で同じアイテムの値を計算処理 平均(grpavg)、最大(grpmax)、最小(grpmin)、合計(grpsum) アグリゲートアイテム Zabbixの監視アイテムの値を計算処理 加算・減算・乗算・除算・Zabbixのトリガー関数による計算処理 計算アイテム 計算処理例 Webサーバグループのロードアベレージの分散値の計算 「(hostAのロードアベレージ - Webサーバのホスト群のロードアベレージの平均)の2乗」
  17. 17. と、Zabbixの宣伝はここまで
  18. 18. 要は、 Zabbixで監視すれば 何かいろいろいいことあるかも
  19. 19. Monitoring Integrationパターンを Zabbixで少し扱いやすくするために
  20. 20. HyClops for Zabbix 作りました
  21. 21. HyClops for Zabbix ・AWSやvSphere環境の監視を自動化 ・2013/07/12 OSS(GPL ver.2)としてリリース ・通常のZabbixに追加導入可能な形を採用 ・Python実装のプログラム ・公開先はGitHub       https://github.com/tech-sketch/hyclops        http://tech-sketch.github.io/hyclops/jp/ ソースコード マニュアル
  22. 22. 機能の詳細 OS Zabbix VMware サポート環境 機能 CentOS,Ubutnuで動作確認済み 2.0系、2.2系対応 4.1および5.0、5.1(update1) ESXiで動作確認済(vCenter未対応) クラウドAPI経由でインスタンス名およびインタフェース情報を取得し Zabbixホスト自動登録 ホスト自動登録 テンプレート自動割当 API経由での情報取得 複数インスタンス一括制御 GateOne連携 ホスト自動登録時に OS種別(LinuxかWindows)に応じて自動テンプレート割当・監視実行可能 AWS |インスタンス情報(AZ,Type,Status等)、課金情報(CloudWatch BillingData) VMware|HV情報(CPU,Memory,Storageの全体量/割当量/使用量)、VM情報(CPU,Memory,Status等) 起動/停止/再起動を複数インスタンスに一括命令実行可能 (Zabbixグローバルスクリプト機能利用 ) Zabbixに登録したホストのインタフェース情報を使って Webブラウザ上でSSHコンソール接続可能
  23. 23. アーキテクチャ Zabbix Server Physical Machine Zabbix Host Dashboard page(dashboard.php) SSH Connection page(gateone.php) vSphere ESXi Zabbix Host IPMI Template vSphereESXi Template vSphereVM Zabbix Host vSphereVM Template AWS Account Zabbix Host AWSAccount Template EC2 Instance Zabbix Host AmazonEC2 Template Configure Zabbix host Extend Zabbix frontend libcloud HyClops Server Queue (ZeroMQ) vSphere driver EC2 driver Physical Machine IPMI VMware ESXi AWS vSphere API AWS API ipmitool GateOne Server Auto registration SSH connection 5555/TCP 443/TCP push message push message push message :HyClopsに 含まれるもの
  24. 24. Sorry・・・ ● CloudWatchと連携できているのは課金情報のみ ● EC2やRDS、ELB等その他CloudWatchとの連携 強化は今後対応予定      
  25. 25. CloudWatch logs!? ● 2014/7/14 CloudWatchでインスタンス内のログ 監視ができるCloudWatch logsがリリース       http://aws.typepad.com/aws_japan/2014/07/cloudwatch-log-service.html
  26. 26. CloudWatch logsの使い方 ● 1. API操作に対する権限付与 ○ IAMでポリシー設定している場合は以下の権限を付与 ・・・ "Statement": [ { "Effect": "Allow", "Action": [ "logs:*", "s3:GetObject" ], "Resource": [ "arn:aws:logs:us-east-1:*:*", "arn:aws:s3::*" ] }, ・・・
  27. 27. CloudWatch logsの使い方 ● 2. エージェントインストール ○ Amazon Linuxの場合は以下を実行 インストールスクリプト取得 $ wget https://s3.amazonaws.com/aws-cloudwatch/downloads/awslogs-agent-setup-v1.0.py インストール実行 $ python ./awslogs-agent-setup-v1.0.py --region us-east-1 Step 1 : pipのinstall Step 2 : Agentダウンロード Step 3 : AWS CLIの設定(クレデンシャル設定等 ) Step 4 : エージェントの設定(監視対象のログの指定、ログの timestampフォーマットの指定等 ) Step 5 : エージェントの起動 これだけ!とても簡単
  28. 28. CloudWatch logsの仕組み ● awslogsプロセスはログをpush ● 設定は/var/awslogs/etc/awslogs.conf aws logs push --config-file /var/awslogs/etc/awslogs.conf [/var/log/messages] datetime_format = %Y-%m-%d %H:%M:%S file = /var/log/messages push_delay = 5000 log_stream_name = {instance_id} initial_position = start_of_file log_group_name = /var/log/messages
  29. 29. CloudWatch logsの仕組み ● ログのタイムスタンプはdatetime_formatで指定 ○ 一致する部分があればログの作成時刻として連携 ○ 一致しない場合はCloudWatchに連携された時刻が登録 例: awslogs.confのdatetime_formatの指定 『%b %d %H:%M:%S』の場合 正しく作成時刻が連携される出力ログ例 Jul 24 10:00:00 “test log” [Jul 24 10:00:12] “test log” 正しく作成時刻が連携されない出力ログ例 2014-07-24 10:00:00 “test log” Jul 24 10:00 “test log”
  30. 30. CloudWatch logs 収集結果
  31. 31. CloudWatch logsコマンド例 ● ロググループの新規作成 ● ログストリームの新規作成 ● ログイベントの取得 次に続く $ aws logs create-log-group --log-group-name "apache log" $ aws logs create-log-stream --log-group-name "apache log" --log- stream-name "i-xxxxxx" $ aws logs get-log-events --log-group-name "apache log" --log-stream- name "i-xxxxxx"
  32. 32. CloudWatch logsコマンド例 ● ログイベントの登録 ● ロググループに対してフィルタ作成 $ aws logs put-log-events --log-group-name "apache log" --log-stream-name "i-xxxxxx" --log-events timestamp=1406198339080,message="2014-07-24 10:00:00 test log" --sequence-token "トークン番号" $ aws logs put-metric-filter --log-group-name "apache log" --filter-name "error filter" --filter-pattern "ERROR" --metric-transformations metricName="filtered_log", metricNamespace="LogMetrics",metricValue=1 アプリケーションからCloudWatch logsのAPI操作も可能
  33. 33. AWSさんはいろいろと対応が早い AWSだけで完結するなら AWSのサービスをうまく使うのもあり ※インスタンス内部にエージェントを送り込んできているので、  そのうちもっといろんなことができるようになるのでは? (推察)
  34. 34. それ以外にもあるなら Monitoring Integrationパターンを 効率良く実現できる方法を探るのがいいかも ※HyClops for Zabbixはあくまでそれをお助けする1ツール
  35. 35. 「AWSも含めた運用」を効率良くできるように ともにがんばりましょう Thank you. 2014/07/26 JAWS-UG千葉
  1. ¿Le ha llamado la atención una diapositiva en particular?

    Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

×