Download - ザビ家の野望 〜 全自動ZABBIX AWS編 〜
![Page 1: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/1.jpg)
ザビ家の野望!~全自動ZABBIX AWS編~
け や ぼ う
2014.05.15 株式会社 サイバード
三浦 克浩
![Page 2: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/2.jpg)
自己紹介•名前:三浦 克浩
• Twitter ID:@MiuraKatsu
•仕事:ソーシャゲ開発
•好きなフレームワーク:CakePHP、Yacafi
•浦和レッズ:
![Page 3: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/3.jpg)
全自動ZABBIX AWS編
• 全自動で登録
• 全自動で削除
• 全自動で登録 Mk-II
• 全自動で削除 改
• 分散監視について
• Zabbix API
• サーバ設定の自動化
• 全自動Zabbix 完全版
![Page 4: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/4.jpg)
ZABBIXで自動登録
・ネットワークディスカバリ ポーリング型 !
・Zabbix Agent アクティブチェック PUSH型
![Page 5: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/5.jpg)
ネットワークディスカバリ• ポーリング型
• 定期ポーリング
• 登録も削除も
• IPアドレスの範囲指定
• SNMPとかでも
• 時間がかかる
![Page 6: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/6.jpg)
ネットワークディスカバリZABBIX Server
Node
Node Node Node
![Page 7: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/7.jpg)
Agent アクティブチェック• PUSH型
• 起動時にサーバから監視項目のリスト取得
• 登録されてなかったら登録
• 削除はできない
• Zabbix Agentのみ
![Page 8: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/8.jpg)
Agent アクティブチェック
ZABBIX Server
Node
Node Node Node
![Page 9: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/9.jpg)
全自動で登録 AWS編
![Page 10: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/10.jpg)
AWSだと増えたり減ったり
ZABBIX Server
Node
Node Node Node
Node
Node Node
![Page 11: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/11.jpg)
全自動で登録 AWS編• アクティブチェックを使う
• zabbix_agentd.conf
→ ServerActive に 設定 (Server は パッシブ)
• amiでもchefでも
• 「アクション」-「自動登録」で「ホストの追加」
![Page 12: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/12.jpg)
こんな感じ
![Page 13: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/13.jpg)
ここまでは 全自動ZABBIXでも
やってる
![Page 14: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/14.jpg)
全自動で削除 AWS編
![Page 15: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/15.jpg)
AWSだと増えたり減ったり
ZABBIX Server
Node
Node Node Node
Node
Node Node
![Page 16: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/16.jpg)
全自動で削除 AWS編• ディスカバリを使う
• 「ディスカバリ」-「ルールの作成」で アベイラビリティゾーン毎にIPアドレスの範囲を指定
• 「アクション」-「ディスカバリ」で「ディスカバリのステータス」が「Down」のとき「ホストの削除」
![Page 17: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/17.jpg)
こんな感じ
![Page 18: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/18.jpg)
そしてこんな感じ
![Page 19: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/19.jpg)
問題が
• 登録しているIPアドレスの範囲を全部チェック
• Terminateしてから削除まで時間がかかる
• いつになったら削除されるか分からない
![Page 20: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/20.jpg)
そこで
![Page 21: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/21.jpg)
全自動で登録 Mk-II• 「アイテム」:インスタンスIDを取得
• → Zabbixエージェント:system.run[curl http://169.254.169.254/latest/meta-data/instance-id ]
• 「トリガー」:インスタンスIDがnot nullになったら
• →スクリプト実行:マクロのユーザ変数にinstance-id登録 (Zabbix APIで!)
• 各サーバのインスタンスIDがスクリプトで使える!
![Page 22: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/22.jpg)
こんな感じ
![Page 23: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/23.jpg)
そしてこう
![Page 24: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/24.jpg)
さらにこう
![Page 25: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/25.jpg)
そしてこうなる
![Page 26: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/26.jpg)
全自動で登録 Mk-II• 「アイテム」:インスタンスIDを取得
• → Zabbixエージェント:system.run[curl http://169.254.169.254/latest/meta-data/instance-id ]
• 「トリガー」:インスタンスIDがnot nullになったら
• →カスタムスクリプト:マクロのユーザ変数にinstance-id登録 (Zabbix APIで!)
• 各サーバのインスタンスIDがスクリプトで使える!
![Page 27: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/27.jpg)
なので
![Page 28: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/28.jpg)
全自動で削除 改• 「アイテム」:インスタンスIDを使ってec2のステータスを取得
• →外部チェック:スクリプト実行(aws command line interfaceで)
• 「トリガー」:running -> terminated
• →スクリプト実行:ホスト削除(Zabbix APIで!)
• Terminateしたらすぐ消えた!
![Page 29: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/29.jpg)
こんな感じ
![Page 30: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/30.jpg)
ちなみに
![Page 31: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/31.jpg)
スクリプトの実行結果を監視・ユーザパラメータ Agent側で実行 zabbix_agentd.conf →UserParameter=key[*],command !
・外部チェック サーバ側で実行 zabbix_server.conf →ExternalScripts=SCRIPT_PATH →script[<parameter1>,<parameter2>,...]
![Page 32: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/32.jpg)
スクリプトの中身
RESULT=`aws --output json ec2 describe-instances \ --instance-id ${INSTANCE_ID} | \ /usr/lib/zabbix/externalscripts/jq \ ".Reservations[0].Instances[0].${JSON_PATH}"`
AWS commandline interface を叩いて jsonをjqに食わせて、resultを取る
![Page 33: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/33.jpg)
そしてこうなる
![Page 34: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/34.jpg)
まだちょっと問題
• ec2のステータスが「terminated」を返す時間が短すぎる
• トリガーが起動しない場合も
![Page 35: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/35.jpg)
結局• 「スクリプト」:ホスト削除スクリプトを登録
• →グローバルスクリプト
• →アラート発生時のオペレーションとしても実行できる
• 手動でも簡単に消せる!
![Page 36: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/36.jpg)
こんな感じ
![Page 37: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/37.jpg)
さらにこう
![Page 38: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/38.jpg)
こんな風にも使える
![Page 39: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/39.jpg)
ところで
![Page 40: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/40.jpg)
Zabbixサーバって どんどん増えますよね。
![Page 41: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/41.jpg)
複数ZabbixサーバZABBIX Server
ZABBIX Server ZABBIX Server
ZABBIX Server
![Page 42: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/42.jpg)
分散&統合監視ZABBIX Server
ZABBIX Server ZABBIX Server
ZABBIX Server
Node Node Node Node
![Page 43: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/43.jpg)
分散監視について
• プロキシ
• ノード → 2.4で廃止
![Page 44: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/44.jpg)
Zabbixサーバの構成
ZABBIX Server
Web
DB
Server
Agent
全部別のサーバでもOK}
![Page 45: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/45.jpg)
プロキシZABBIX Server
ZABBIX Server ZABBIX Server
ZABBIX Server
Node Node Node Node
Server Server
Server
Server DB
![Page 46: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/46.jpg)
ノードZABBIX Server
ZABBIX Server ZABBIX Server
ZABBIX Server
Node Node Node Node
Server DB
Server
DB
Server
DB
Server
DB
![Page 47: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/47.jpg)
設定が面倒くさい
廃止になるくらい
![Page 48: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/48.jpg)
それぞれ独立ZABBIX Server
ZABBIX Server ZABBIX Server
ZABBIX Server
Node Node Node Node
![Page 49: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/49.jpg)
変更を全部に反映するのが面倒くさい
![Page 50: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/50.jpg)
ZABBIX API
![Page 51: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/51.jpg)
わりと何でもできる
• マクロに登録
• ホストを削除
• テンプレートのexport/import
• てゆうか全部できる
![Page 52: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/52.jpg)
Sample (Python)#!/usr/bin/env python !
zbxsv = "http://localhost/zabbix/api_jsonrpc.php" headers = {"Content-Type":"application/json-rpc"} !
argvs = sys.argv zbx_hostname = argvs[1] zbx_auth = argvs[2]
![Page 53: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/53.jpg)
Sample (Python)### delete host ### json_str = { 'jsonrpc':'2.0', 'method':'host.delete', 'params':[{ 'hostid':zbx_hostid, }], 'auth':zbx_auth, 'id':1} ! API 認証キー
内部管理用ホストID
![Page 54: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/54.jpg)
Sample (Python)### post request ### auth_post = json.dumps(json_str) request = urllib2.Request(zbxsv, auth_post, headers) contents = urllib2.urlopen(request) contents_str = contents.read() contens_dict = json.loads(contents_str) !
print contens_dict["result"]
![Page 55: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/55.jpg)
Samplejson_str = { 'jsonrpc':'2.0', 'method':'script.create', 'params':{ "name":"delete terminated host", "command":"/usr/lib/zabbix/apiscripts/delete_host.py {HOST.NAME} " + zbx_auth , "host_access":"2", "usrgrpid":"0", "groupid":"0", "description":"", "confirmation":"", "type":"0", "execute_on":"1" }, 'auth':zbx_auth, 'id':1}
![Page 56: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/56.jpg)
JenkinsのJOB
![Page 57: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/57.jpg)
変更をJenkinsからJenkins
ZABBIX Server ZABBIX Server
ZABBIX Server
![Page 58: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/58.jpg)
サーバ構築はChefで自動化済
![Page 59: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/59.jpg)
サーバの構築時Jenkins
ZABBIX Server
Jenkins APIZabbix API
![Page 60: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/60.jpg)
サーバ設定も自動化
![Page 61: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/61.jpg)
サーバが増えても安心
![Page 62: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/62.jpg)
スクリプトでの設定変更 Chefのレシピ作成中 (20%くらい)
![Page 63: ザビ家の野望 〜 全自動ZABBIX AWS編 〜](https://reader034.vdocuments.mx/reader034/viewer/2022050808/557ab064d8b42a79378b4fd6/html5/thumbnails/63.jpg)
全自動ZABBIX 完全版 乞うご期待