Upload
hayato-watanabe
View
1.103
Download
4
Embed Size (px)
Citation preview
ZABBIXに手の届かない所は無い expectで...
渡邉 隼人
改めまして
池田さん
ご出版おめでとうございます!(拍手)
Zabbix統合監視徹底活用 複雑化・大規模化するインフラの一元管理
大容量で¥ 3,780大好評発売中!
なんと! 池田先生の第1号サイン頂きました!
度々 池田さんの所有物に勘違いされます
改まして
ZABBIXに手の届かない所は無い expectで...
●渡邉 隼人 (わたなべ はやと)● TwitterID: @_BSmile_● 2児の父● アクアリウム(水槽いじり)やってます
●株式会社 アーベルソフト 設立:1984年8月20日本社:埼玉県坂戸市芦山町22-13従業員:約40名従業員は道産子が多いですかく言う私も道産子です
本題。
ZABBIX運用環境をお話します
とあるお客様環境でプライベートクラウド構築を行っており
SaaS・IaaSサーバ監視Switch/UTM/Storage等等
約220台のホスト監視を行っています。
突然ですが
運用監視を行っていて、次の事案が発生しました。(専用線で接続しているオフショア、中国の問題)
Private Cloud 社内ネットワーク担当部門
プロバイダオフショアネットワーク
中国から専用線接続で
日本の開発サーバを使用し
日々業務をこなしているプロジェクトがあります
ここに接続
この人が
Private Cloud 社内ネットワーク担当部門
プロバイダオフショアネットワーク
中国から専用線接続で
日本の開発サーバを使用し
日々業務をこなしているプロジェクトがあります
ここに接続
この人が
どこかでネットワークが切れた!
プロバイダからの連絡は無い!
社内ネットワーク担当者は打ち合わせで居ない!
オフショアの開発者は試験環境への接続を失った!
途方に暮れるオフショアユーザ!
オチから言うとビル停電によりオフショアルータの設定が
ロストした
↓
Ciscoルータのstartup-configに設定入れて無かった
頼みますよプロバイダさん(涙)
こうなったら各担当者から連絡が来る前に
こちらから報知してやろう
と思いたち
オフショアルータのGWへPingを飛ばしたかった
が
FW(Fortigate) からしかPingが飛ばない環境
そこで expect ですよ
スクリプト作成時、対話形式で実行が可能なコマンド
例) Y/Nの問いが多いパッケージソフトの設定を自動で実行させる
[expect]とは...
#!/usr/bin/expect -f
spawn $INSTALLER --platform-overrideexpect "Do you agree with the terms of the software license agreement?"send "y\n"expect "Install zimbra-ldap"send "\n"expect "Install zimbra-logger"send "\n"
※zimbraメールサーバ自動インストールの冒頭
Private Cloud 社内ネットワーク担当部門
プロバイダオフショアネットワーク
オフショアネットワーク監視が可能な
FW(Fortigate)からPingで監視を行い
パケロス発生時のログをzabbixが拾う
expect
設定はたった7項目!ちゃちゃっと10秒で説明!
●/etc/zabbix/externalscripts/lan_ping.sh
(1/7)ZABBIX外部スクリプトへの仕込み
#! /bin/bash
LOG_TEMP=$2PJ_NAME=$3PACKET_LIMIT=$4
if [ -e $LOG_TEMP ]; thenrm -rf $LOG_TEMP
fi
/etc/zabbix/externalscripts/forti_ping.sh $1 $LOG_TEMP
PACKETLOSS_STR=`grep "received, " $LOG_TEMP | awk -F 'received, ' '{print $NF}' | cut -d "%" -f1`PACKETLOSS=$(( PACKETLOSS_STR + 0))
if [ $(( PACKETLOSS )) -gt 30 ]; then echo "[`date +"%Y/%m/%d %H:%M:%S"`] Caution: Location [$PJ_NAME] $1 `grep " packet loss" $LOG_TEMP`" >> /var/log/zabbix/forti_ping.logfi
if [ -e $LOG_TEMP ]; thenrm -rf $LOG_TEMP
fi
●/etc/zabbix/externalscripts/forti_ping.sh
(2/7)ZABBIX外部スクリプトへの仕込み
#!/usr/bin/expect -f
set host [lindex $argv 0]set path [lindex $argv 1]
log_file "$path"
spawn ssh -l pinger XXX.XXX.XXX.1 ## 相手先GWexpect "password:"send "fortipassword\n"expect "fortiHostName $"send "execute ping-options repeat-count 5\n" send "execute ping $host\n"send "exit\n"expect "VPEXFW001 $"interact
(3/7)ホスト設定(ロケーション設定側)
GatewayIPアドレス
監視するロケーション名
テンポラリログファイル名
(4/7)アイテム設定(ロケーション設定側)
[ キー設定 ]
lan_ping.sh[“{HOST.CONN}”,”/etc/zabbix/log_tmp/{HOST.DNS}.log”,”{HOST.NAME}”]
(5/7)アイテム設定(ZABBIX-Server側)
[ タイプ ]Zabbixエージェント(アクティブ)
[ キー ]Log[/var/log/zabbix/forti_ping.log,Caution]
(6/7)トリガー設定(ZABBIX-Server側)
[ 条件式 ]{Zabbixホスト:log[/var/log/zabbix/forti_ping.log,Caution].str(Caution)}=1
(7/7)アクション設定
[ アクションの実行条件 ]トリガー名 含まれる ”Loation packet loss Check Failed”
飛んでくるメール
件名:【重要】【ZABBIX】ロケーション:Location Packet loss Check Failed
本文:深刻度: PROBLEM発生日時:2014.04.07 23:23:44--[2014/04/07 23:22:49] Caution: Location [PJ105L1_【中国】マインスイーパー開発プロジェクト] 10.1.2.22 5 packets transmitted, 2 packets received, 60% packet loss
簡単ですね。
ZABBIXに実施させる事でのメリット
1 . 監視する方法が散在しない
2 . 拾った情報をメール送信する手間が少ない
3 . 一度流れを組んでしまえば、オフショアロケーションが 複数発生した場合でも追加が容易 (ホストの複製をし、監視するロケーションを編集する だけで良い)
特に3番が重要で設定を簡易化した事によるオペレータへの引き継ぎが非常に楽
こんな事やってたら
約70台のSaaSサーバのindex.htmlを
ZABBIX使って一括改修してくれという依頼が来ました(汗)
まぁやりましたけどね。
ZABBIXに手の届かない所は無い expectで...
ZABBIXはできる子。
ご清聴ありがとうございました。
次回... ご要望ありましたらRasPi+ZABBIXで水槽管理