Copyright © Techorus Inc.
テコラス株式会社 大久保 智之
Zabbixを使ったクラウド環境の監視とツール連携
Page 2
自己紹介
名前
大久保 智之(おおくぼ ともゆき)
所属
テコラス株式会社 SE部
経歴
SI系会社で顧客先に常駐して運用管理業務を中心に関わった後、
フォースクーナ(現テコラス)でMSP業務に携わる
現在はクラウドを中心とした運用サービスの導入・運用を担当
Page 3
社 名 テコラス株式会社
事業開始 2000年よりデータセンター事業開始
事業内容
データセンター事業 クラウド事業
マネージド事業 セキュリティ事業
EC支援事業 広告支援事業
管理稼動
サーバ数
10,000台以上(2015年1月現在)
所 在 地 新宿 大阪 浜松 福岡
会社概要
インターネット黎明期からの長い経験と
管理稼働サーバ数10,000台以上を誇る豊富な実績
Page 4
事業紹介
データセンター
ITインフラ統合
アウトソース
AWS向け
構築・運用パック
マルチクラウド
マネージド
ITインフラ・マネージド事業
Page 5
高速データ転送
CLOUD CONNECT
光ファイバネットワーク
BUSINESS CONNECT
大容量メール配信
MMDS
クラウドゲーム
プラットフォーム
CLOUD GAMING PLATFORM
VPS/レンタルサーバ
EX-CLOUD
メールセキュリティ
Secure MX
事業紹介
オプション・ソリューション
Page 6
教育機関のためのクラウドサービス
事業紹介
教育機関向けクラウド事業
EC支援事業
Page 7
今日のテーマ
 Zabbixを使ってAWS環境を管理する
 AWS環境における監視項目
 監視システムとジョブ管理システムの連携
Page 8
Zabbixを使ってAWS環境を管理する
Page 9
AWS環境の監視
 監視対象は可変する
 監視対象のIPアドレスは可変する
 監視対象は置き換わる
 デプロイ行為でインスタンスそのものが置き換わる
 監視対象は増える/減る
 スケーリングをすればいつの間にか増える
 不要になったら消える(捨てられる)
Page 10
AWS環境を効率よく監視するために
 監視対象は可変する
 監視対象のIPアドレスを意識しない監視手法をとる
 監視対象は置き換わる
 置き換わっても監視システムに勝手に登録されるようにする
 監視対象は増える/減る
 インスタンスが増えたら、監視システムに登録されるようにする
 インスタンスが減ったら、監視システムから登録解除されるようにする
Page 11
HyClops for Zabbix
HyClopsの機能概要
EC2インスタンスやvSphere仮想マシン情報をZabbixに自動登録
Zabbixエージェントレスでインスタンスの情報を自動監視(AWS APIおよびvSphere APIを利用)
Zabbixグローバルスクリプトを用いてインスタンスの起動/停止処理を実行
Zabbixダッシュボード拡張によるEC2インスタンス、vSphere仮想マシン情報の一覧表示
(オプション機能) GateOne-Zabbix連携によるZabbixダッシュボードからのSSHコンソール接続
HyClops for Zabbix とは
TIS社が開発しているZabbixの拡張ツール
http://tech-sketch.github.io/hyclops/jp/
Page 12
Hyclops for Zabbixの構築例
構築環境
■仮想マシン:
AWS上にCentOS6(64bit版/HVM)のインスタンスを作成
※後述するHyclops JobMonitoringを構築した環境を利用
■ミドルウェア:
Zabbix(2.2.9)
PostgreSQL(9.3.9)
Hyclops for Zabbix(0.2.0)
Page 13
Hyclops for Zabbixのセットアップ(1)
1. Zabbix管理画面の”管理 > 一般 > 値のマッピング”から値の設定
「Script Return Code」と「LibCloud Node Status」
Script Return Code LibCloud Node Status
受信データ マッピング文字列
0 success
1 failure
受信データ マッピング文字列
0 running
1 rebooting
2 terminated
3 pending
4 stopped
Page 14
Hyclops for Zabbixのセットアップ(2)
2. ZeroMQと関連RPMパッケージのインストール
$ sudo curl http://download.opensuse.org/repositories/home:/fengshuo:/zeromq/ ¥
CentOS_CentOS-6/home:fengshuo:zeromq.repo > /etc /yum.repos.d/zeromq.repo
$ sudo yum install gcc gcc-c++ zeromq zeromq-devel python-devel python-setuptools
ipmitool
3. Pythonモジュールのインストール
$ sudo pip install apache-libcloud==0.13.2 zabbix-api pyzmq psphere python-
daemon==1.6 configobj
$ sudo pip install ordereddict argparse
$ sudo pip install boto
Page 15
Hyclops for Zabbixのセットアップ(3)
4. Hyclopsのインストール
$ sudo git clone https://github.com/tech-sketch/hyclops.git
$ cd hyclops
$ sudo python setup.py install
5. 起動スクリプト、外部チェックスクリプトの配置
$ sudo cp -a ./misc /init.d/redhat/hyclops /etc /init.d/
$ sudo cp -a ./misc /externalscripts/* /usr/lib/zabbix/externalscripts/
$ sudo chown zabbix:zabbix /usr/lib/zabbix/externalscripts/*
$ sudo chmod 755 /usr/lib/zabbix/externalscripts/*
Page 16
Hyclops for Zabbixのセットアップ(4)
6. Hyclopsの設定ファイル編集
$ sudo vi /opt/hyclops/hyclops.conf
# ============================
# User settings
# ============================
[hyclops]
# listen_address = * # listen on all network interface
# listen_address = 127.0.0.1 # listen on specific network interface
listen_address = 127.0.0.1
listen_port = 5555
[zabbix]
zabbix_server = 127.0.0.1
zabbix_port = 10051
frontend_url = http://127.0.0.1/zabbix
zabbix_user = Admin
zabbix_password = zabbix
zabbix_sender = /usr/bin /zabbix_sender
[ipmi]
ipmitool = /usr/bin /ipmitool
[logging]
log_level = WARNING
log_file = /opt /hyclops /logs /hyclops_server.log
[environments]
# http_proxy = http://proxy.example.com:8080/
# https_proxy = http://proxy.example.com:8080/
# no_proxy = "localhost,127.0.0.1"
Page 17
Hyclops for Zabbixのセットアップ(5)
7. Hyclopsサーバの起動設定と起動
$ chkconfig --add hyclops
$ chkconfig hyclops on
$ service hyclops start
8. Zabbixのダッシュボード画面関連ファイルの置換
$ python setup.py replace -d /usr/share/zabbix/ --zabbix-version=2.2
9. Zabbix templates,scripts,globalmacroデータのインポート
※以下3つのデータがインポートされる
misc/import_data/templates.xml
misc/import_data/globalscripts.xml
misc/import_data/globalmacros.xml
$ python setup.py import -f http://127.0.0.1/zabbix -u Admin -p zabbix
Page 18
Hyclops for Zabbixのセットアップ(6)
10. cronスクリプトの登録
※HyclopsはAWS上やvSphere ESXi上から存在しなくなった仮想マシン用Zabbixホストを
自動的に「Not exist hosts」ホストグループに移動させる。
この移動された存在しないホスト情報を一定期間経過後に自動削除するためのcronスクリプト
を登録する。
$ sudo crontab -u hyclops -e
*/5 * * * * python /opt/hyclops/cron_scripts/delete_not_exist_hosts.py
Page 19
Hyclops for Zabbixのセットアップ(7)
11. Zabbixの設定
「AWSAccount」のテンプレートにマクロを設定する
キー 値
{$KEY} AWS Access Key
{$SECRET} AWS Secret Key
{$VM_GROUPS}
全インスタンスに共通で割り当てたいテンプレート名
(カンマ区切りで複数指定可)
{$VM_TEMPLATES_LINUX}
Windows以外のインスタンスに共通で割り当てたいテンプレート名
(カンマ区切りで複数指定可)
{$VM_TEMPLATES_WINDOWS}
Windowsインスタンスに共通で割り当てたいテンプレート名
(カンマ区切りで複数指定可)
「AWSAccount」のテンプレートに「Hyclops Templates」のテンプレートをグループとして含める
Page 20
Hyclops for ZabbixのUI(1)
AWSインスタンスの稼動一覧、
課金情報が表示される
Page 21
Hyclops for ZabbixのUI(2)
EC2インスタンスの一覧が表示
起動/停止/再起動が可能
EC2インスタンスの
詳細情報が表示
Page 22
Hyclops for Zabbixによるホスト自動登録
自動で登録されたホスト
Terminateされたため、
削除対象になったホスト
Page 23
AWS環境における監視項目
Page 24
AWSサービスの監視
 EC2インスタンスの監視
 死活監視
 ポート監視/サービス監視/プロセス監視
 リソース監視
 AWSサービスのメトリクス監視/データ蓄積
例:
 ELB
 RDS
 Billing
Page 25
CloudWatchとFluentd + Zabbixの連携
AWSサービスの監視メトリクスをCloudwatchから
Fluentdを使ってZabbixに流し込む
Cloudwatch Fluentd Zabbix
zabbix-trapperfluent-plugin-cloudwatch
fluentd-plugin-zabbix
Page 26
Fluentd環境のセットアップ(1)
1.Fluentdのインストール
$ sudo wget http://toolbelt.treasuredata.com/sh/install-redhat.sh
$ sudo sh -x install-redhat.sh
2.fluentdのプラグインインストール
$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-zabbix
$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-cloudwatch
Page 27
Fluentd環境のセットアップ(td-agent.conf)(2)
<source>
type cloudwatch
tag cloudwatch-rds
cw_endpoint monitoring.ap-northeast-1.amazonaws.com
namespace AWS/RDS
metric_name CPUUtilization,FreeStorageSpace,DiskQueueDepth,FreeableMemory, ¥
SwapUsage,ReadIOPS,ReadLatency,ReadThroughput,WriteIOPS,WriteLatency,WriteThroughput
dimensions_name DBInstanceIdentifier
dimensions_value test
</source>
<match cloudwatch-rds>
type copy
<store>
type zabbix
zabbix_server 127.0.0.1
host test
name_keys CPUUtilization,FreeStorageSpace,DiskQueueDepth,FreeableMemory, ¥
SwapUsage,ReadIOPS,ReadLatency,ReadThroughput,WriteIOPS,WriteLatency,WriteThroughput
add_key_prefix cloudwatch
</store>
</match>
Page 28
Fluentd環境のセットアップ(3)
3.Fluentdの設定
$ sudo vi /etc /td-agent/td-agent.conf
4.fluentdの起動
$ sudo service td-agent start
Page 29
Zabbix環境のセットアップ
1.Fluentdからデータを受け取れるようにアイテムの設定を行う
2.ホストの設定を行う
Page 30
CloudWatchメトリクスのグラフ化(ELBの例)
Page 31
CloudWatchメトリクスのグラフ化(RDSの例)
Page 32
CloudWatchメトリクスのグラフ化(Billingの例)
Page 33
監視システムと
ジョブ管理システムの連携
Page 34
運用にジョブ管理システムを使うメリット
 ジョブの集中管理
 Cronやタスクスケジューラでもよいが、規模により管理が困難に
 ジョブの制御
 ジョブの順番や条件分岐、排他制御等の連携が保守しやすい
 ジョブの実行履歴管理
 分散管理の場合実行履歴が管理しやすい
Page 35
Jobscheduler
Jobscheduler とは
Software und Organisations-Service GmbH(SOS社)が
開発しているジョブ管理システム
http://www.sos-berlin.com/jobscheduler
Jobschedulerの機能概要
• 高度なジョブ制御とジョブ定義機能
• エージェント/エージェントレスのジョブ実行が可能
• APIを用いた高度なジョブ連携が可能
Page 36
監視システムとジョブ管理システムの連携
 監視システムとジョブ管理システムの連携
 ジョブの実行結果を確認したい
 監視アラートに対して、何らかの処理を自動化したい
Page 37
HyClops JobMonitoring
HyClops JobMonitoringの機能概要
• ジョブ監視設定をZabbixに自動登録
• ジョブの実行時間をZabbixで監視し、時間推移を取得
• ジョブの異常終了や遅延情報をZabbixに連携し、
Zabbixのアクションに基づいた対応を実施
• ジョブの稼働に合わせた自動トリガー設定変更
HyClops JobMonitoring とは
TIS社が開発しているZabbixの拡張ツール
http://tech-sketch.github.io/hyclops_jm/jp/
Page 38
Hyclops JobMonitoringの構築例
構築環境
■仮想マシン:
AWS上にCentOS6(64bit版)のインスタンスを作成
■ミドルウェア:
Zabbix(2.2.9)
PostgreSQL(9.3.9)
Jobscheduler(1.7.4274)
Hyclops JobMonitoring(0.1.0)
Page 39
Hyclops JobMonitoringのセットアップ(1)
1.chef-soloによる初期構築
$ git clone https://github.com/tech-sketch/hyclops_jm-chef-repo.git
$ cd hyclops_jm-chef-repo
$ sudo bash install_middleware.sh
2.Fablicによるセットアップ
$ git clone https://github.com/tech-sketch/hyclops_jm.git
$ cd hyclops_jm
$ fab -c hyclops_jm.conf install
※rootユーザでsshログインできることが必要なため、AWS上の仮想サーバでの構築は注意
Page 40
Hyclops JobMonitoringのセットアップ(3)
しばらくすると、localhostの
ホストが自動で登録される
Page 41
ジョブ監視例
Page 42
今後やってみようと思っていることなど
監視システムのア
ラート検知結果で
複数インスタンス
にコマンド実行
バックアップジョ
ブの結果を監視し、
失敗してたら
再実行
夜の間は開発環境
のEC2インスタン
スをとめておく
長時間実行されて
いるジョブがあっ
た場合、
アラート発砲、
リソース追加
ジョブの実行時間
を記録し、
稼動傾向を定量化
Page 43
まとめ
 クラウド環境の管理には自動登録の仕組みを検討しよう
 ZabbixとCloudWatchを組み合わせて
AWSのメトリクスを管理できる
 監視システムとジョブ管理システムの組み合わせは今後有望
ご清聴ありがとうございました

zabbixを使ったクラウド環境の監視とツール連携