awsを含めたハイブリッド環境の監視の実現...
DESCRIPTION
JAWS-UG 千葉での発表資料です。 HyClops for ZabbixやCloudWatch logsについて紹介しています。TRANSCRIPT
![Page 1: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/1.jpg)
AWSを含めた
ハイブリッド環境の監視〜Zabbixのクラウド対応モジュールHyClops〜
DAISUKE Ikeda@ike_dai
2014/07/26 JAWS-UG千葉
![Page 2: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/2.jpg)
About me
池田 大輔
TIS株式会社 戦略技術センター
@ike_dai https://www.facebook.com/ikedai Amazon CloudWatch
名前
所属
好きなサービス
技術評論社HP : http://gihyo.jp/book/2014/978-4-7741-6288-1Amazon : http://www.amazon.co.jp/dp/4774162884
@ITさんで連載「今さら聞けないfluentd~クラウド時代のログ管理入門」(http://www.atmarkit.co.jp/ait/articles/1404/04/news004.html)
![Page 3: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/3.jpg)
AWS上のシステムの監視どうしてますか?
![Page 4: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/4.jpg)
Amazon CloudWatch
※引用: http://aws.amazon.com/jp/cloudwatch/
![Page 5: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/5.jpg)
Amazon CloudWatch
※引用: http://aws.amazon.com/jp/cloudwatch/
つまり
AWSのサービスの情報を監視できるサービス
通知も設定可能
![Page 6: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/6.jpg)
CloudWatchを使いこなして統合監視?
“カスタムメトリクス”で何でもCloudWatchに入れてみる
EC2インスタンス CloudWatch
CloudWatchAPI
PutMetricData
- EC2インスタンスの内部情報とかも CloudWatchに飛ばせる
- API使って登録すればその他のなんでも CloudWatchに統合はできる
![Page 7: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/7.jpg)
CloudWatchを使いこなして統合監視?
“カスタムメトリクス”で何でもCloudWatchに入れてみる
EC2インスタンス CloudWatch
CloudWatchAPI
PutMetricData
- EC2インスタンスの内部情報とかも CloudWatchに飛ばせる
- API使って登録すればその他のなんでも CloudWatchに統合はできる
しかし
2週間しかデータ残らず、長期に渡った傾向とか見れない
取得したいデータに対して毎回API叩いて登録する設定も面倒
![Page 8: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/8.jpg)
CDP: Monitoring Integration Pattern
※引用: http://aws.clouddesignpattern.org/index.php/CDP:Monitoring_Integrationパターン
![Page 9: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/9.jpg)
Monitoring IntegrationをZabbixで
Zabbix Server
Zabbix AgentEC2インスタンス内部の監視
EC2インスタンス全体の稼働状況の監視
EC2 API
EC2インスタンス情報の収集
CloudWatchの結果の統合
スクリプト
EC2
CloudWatchCloudWatch
API
ログの監視とかプロセス稼働状況の監視とか
![Page 10: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/10.jpg)
なぜZabbix?
![Page 11: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/11.jpg)
なぜZabbix?
● 監視の基礎となる作りの部分がよくできている● 監視設定も手間をかけさないように自動化の枠組みが充実● 「監視」に関する機能は非常に充実
監視通知・
アクション実行視覚化
※決して、見た目は今風ではないですが
![Page 12: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/12.jpg)
たとえばこんな機能も - 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}
リクエストパラメータ
![Page 13: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/13.jpg)
たとえばこんな機能も - Zabbix Sender -
Zabbix Server
DB監視結果情報
設定情報
ZabbixTrapper
ZabbixAPI
ZabbixSender
set
ZabbixAPI
libraryset
get
● 外部から監視結果をプッシュ型で登録するためのプログラム○ Zabbix Trapperアイテムに対して値を登録
○ 何らかのトリガーをきっかけに監視結果をプッシュ型で送付したい場合に有効
○ Agentレスでもzabbix_senderコマンドを実行するだけで実現可能
$ zabbix_sender -z <zabbix-server> -s "Zabbix server" -k "sender.test" -o 100
![Page 14: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/14.jpg)
場合によってはこんなことも
![Page 15: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/15.jpg)
Webサーバの負荷分散度合いを算出
負荷分散しているWebサーバのロードアベレージの偏りを監視
閾値監視だけでは判別できない状況の検知も必要Immutableな考え方が広まると個々の状況より全体の状況が重要に
LoadBalancer
Webサーバ1 Webサーバ2 Webサーバ3 Webサーバ4
スケールアウト
![Page 16: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/16.jpg)
アグリゲートアイテムと計算アイテムを活用
アイテムキー設定例grpavg[Web servers,system.cpu.load[,avg1],last,0]
Zabbixのホストグループ単位で同じアイテムの値を計算処理平均(grpavg)、最大(grpmax)、最小(grpmin)、合計(grpsum)
アグリゲートアイテム
Zabbixの監視アイテムの値を計算処理加算・減算・乗算・除算・Zabbixのトリガー関数による計算処理
計算アイテム
計算処理例Webサーバグループのロードアベレージの分散値の計算「(hostAのロードアベレージ - Webサーバのホスト群のロードアベレージの平均)の2乗」
![Page 17: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/17.jpg)
と、Zabbixの宣伝はここまで
![Page 18: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/18.jpg)
要は、Zabbixで監視すれば何かいろいろいいことあるかも
![Page 19: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/19.jpg)
Monitoring IntegrationパターンをZabbixで少し扱いやすくするために
![Page 20: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/20.jpg)
HyClops for Zabbix作りました
![Page 21: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/21.jpg)
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/
ソースコード
マニュアル
![Page 22: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/22.jpg)
機能の詳細
OS
Zabbix
VMware
サポート環境 Zabbix | 2.0系VMware | 4.1および5.0、5.1(update1) ESXiで動作確認済(vCenter未対応)機能
ホスト自動登録 | EC2インスタンスおよびvSphere仮想マシン情報をZabbixに自動
登録
テンプレート自動割り当て |Zabbixエージェントレスでインスタンスの情報を自動監視(AWS APIおよびvSphere APIを利用)Zabbixグローバルスクリプトを用いてインスタンスの起動/停止処理を実行
Zabbixダッシュボード拡張によるEC2インスタンス、vSphere仮想マシン情報の一覧
表示
(オプション機能) GateOne-Zabbix連携によるZabbixダッシュボードからのSSHコン
ソール接続
サポート環境
機能
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コンソール接続可能
![Page 23: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/23.jpg)
アーキテクチャ
Zabbix ServerPhysical Machine
Zabbix Host
Dashboard page(dashboard.php) SSH Connection page(gateone.php)
vSphere ESXiZabbix Host
IPMITemplate
vSphereESXiTemplate
vSphereVMZabbix Host
vSphereVMTemplate
AWS AccountZabbix Host
AWSAccountTemplate
EC2 InstanceZabbix Host
AmazonEC2Template
Configure Zabbix host
Extend Zabbix frontend
libcloud
HyClops Server Queue(ZeroMQ)
vSpheredriver
EC2driver
Physical Machine
IPMI
VMware ESXiAWS
vSphere API
AWSAPI
ipmitool
GateOne Server
Auto registration
SSH connection
5555/TCP 443/TCP
push message push messagepush message
:HyClopsに 含まれるもの
![Page 24: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/24.jpg)
Sorry・・・
● CloudWatchと連携できているのは課金情報のみ● EC2やRDS、ELB等その他CloudWatchとの連携
強化は今後対応予定
![Page 25: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/25.jpg)
CloudWatch logs!?
● 2014/7/14 CloudWatchでインスタンス内のログ監視ができるCloudWatch logsがリリース
http://aws.typepad.com/aws_japan/2014/07/cloudwatch-log-service.html
![Page 26: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/26.jpg)
CloudWatch logsの使い方
● 1. API操作に対する権限付与○ IAMでポリシー設定している場合は以下の権限を付与
・・・
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*",
"s3:GetObject"
],
"Resource": [
"arn:aws:logs:us-east-1:*:*",
"arn:aws:s3::*"
]
},
・・・
![Page 27: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/27.jpg)
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のinstallStep 2 : AgentダウンロードStep 3 : AWS CLIの設定(クレデンシャル設定等 )Step 4 : エージェントの設定 (監視対象のログの指定、ログの timestampフォーマットの指定等 )Step 5 : エージェントの起動
これだけ!とても簡単
![Page 28: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/28.jpg)
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:%Sfile = /var/log/messagespush_delay = 5000log_stream_name = {instance_id}initial_position = start_of_filelog_group_name = /var/log/messages
![Page 29: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/29.jpg)
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”
![Page 30: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/30.jpg)
CloudWatch logs 収集結果
![Page 31: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/31.jpg)
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"
![Page 32: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/32.jpg)
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操作も可能
![Page 33: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/33.jpg)
AWSさんはいろいろと対応が早い
AWSだけで完結するなら AWSのサービスをうまく使うのもあり
※インスタンス内部にエージェントを送り込んできているので、 そのうちもっといろんなことができるようになるのでは? (推察)
![Page 34: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/34.jpg)
それ以外にもあるなら
Monitoring Integrationパターンを
効率良く実現できる方法を探るのがいいかも
※HyClops for Zabbixはあくまでそれをお助けする1ツール
![Page 35: AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~](https://reader030.vdocuments.pub/reader030/viewer/2022012318/55518fc3b4c90580128b5211/html5/thumbnails/35.jpg)
「AWSも含めた運用」を効率良くできるように
ともにがんばりましょう
Thank you.2014/07/26 JAWS-UG千葉