zabbixからslackにアラートを飛ばす
システムがある程度安定はしてきているものの、お金である程度抑えつけている。
そのため、まだ参加間もない自分がシステムの大枠のリファクトまでは手が回せず稼働側の不安を払拭する事ができない。
期待値として求められる「システムの安定稼働」に関しての部分が疎かになってしまう。
この辺をどう解決するかって言う部分で手っ取り早いのでzabbixを導入して障害を可視化する。と言う安直だが結果が出しやすい部分が導入の第一歩になる。
ただ、この時に気をつけねばならないのは自分一人だけで完結させないと言う事に注力する。
つまり、システムのアラートが個人のメールに飛ぶ事はよろしくない。
少し導入に手間は掛かるかと思うが代表的だがslackに警告を飛ばす事で、仮に手が話せない時でも誰かが見ると言う保険を掛ける事が可能である。
zabbix_serverとzabbix_clientがインストールされたと言う前提で話を進める。
シェルスクリプトのダウンロード
slackに送信する為のシェルスクリプト
$ cd /usr/lib/zabbix/alertscript/
$ wget https://raw.githubusercontent.com/bageljp/zabbix-slack/master/slack.sh
$ chmod a+x slack.sh
zabbixのalertscriptディレクトリにシェルを設置する。
スクリプトの設定
slackのwebhookURLを取得する。
またslack用のユーザーをzabbixで用意しておくと早い。
#!/bin/bash -x # config slack_url='取得したWebhookURL' slack_username='なんでも良いが分かるやつ' channel="$1" title="$2" params="$3" emoji=':ghost:' timeout="5" cmd_curl="/usr/bin/curl" cmd_wget="/usr/bin/wget" zabbix_baseurl="zabbixサーバーのURL(IPベースでも動く)" zabbix_username="zabbixのユーザー" zabbix_password="zabbixのユーザーパス" # chart settings chart_period=3600 chart_width=1280 chart_height=390 chart_baseurl="${zabbix_baseurl}/slack_charts" chart_basedir="/tmp/slack_charts" chart_cookie="/tmp/zcookies.txt"
・slack_url
・slack_username
・zabbix_baseurl
・zabbix_username
・zabbix_password
上記を自分の環境に合わせて設定する。
zabbix側の設定
https://qiita.com/wapa5pow/items/2327561493015a833c97 こちらを参考に。
ざっくりと、メディアとしてslack.shを設定してユーザーに送信する。と言う流れ。
テストに関して
上記のURLでも記述されているのだが
$ yes > /dev/null & yes > /dev/null & yes > /dev/null & yes > /dev/null &
これを実行してCPUに過負荷を掛けるのは簡単なのだが、デフォルトのテンプレートのLinuxの監視のCPUの条件が
設定場所: 設定 > ホスト > トリガ
設定名:Processor load is too high on {HOST.NAME}
{Zabbix server:system.cpu.load[percpu,avg1].avg(5m)}>5
5分間で平均ロードアベレージ5がしきい値なので結構な過負荷状態を作らねばならない。
そのため、AWSのブーストモードが発動して無駄なクレジットを消費させない為にも、設定を複製して
{Zabbix server:system.cpu.load[percpu,avg1].avg(1m)}>1
1分間でロードアベレージ1を越えたら。くらいにしておく。
インストールしてから手早くslackに送る事とエラーの可視化を行う事で、ある程度の保険は掛ける事が出来る。
このあとの再起動の手順等は個別に作る必要がある。