AE-BME280がTWELITE経由で送るデータをzabbixでグラフにする(EC2,RDS版)

スポンサーリンク

はじめに

前回zabbixでAE-BME280情報を取得しグラフ化しました。

ですがzabbixを動かしているサーバが常時起動しているサーバではなく、ただのゲーム、Web閲覧用のPCで動かしていました。

ESXi動かしている重くてゲームどころではありません。

そのため起動していないことが多く結局温度も湿度も見ない状態だったのでこの部分をAWSのEC2とRDSに置き換えました。

つまり思いっきり前回の続きです。

前回からの変更点

・前回の「構成について」の③を変更しました。

ちなみにAWSの1年間無料枠を思いっきり使ってます。だってお金ないんだもん。

zabbix_dbをRDSに変更し、zabbix_serverとzabbix_webをdockerでEC2に建ててます。

ついでにこちらを追加してます。

・zabbix_webへのアクセスをhttps化、httpはリダイレクト

・zabbix_webへのアクセスにクライアント証明を追加

・zabbixからのアラートをslackへ飛ばす

申し訳程度のセキュリティ設定はAWS使っているので一応。

slackへアラート飛ばしたかったのでその辺も追加。

以下簡単に解説を載せておきますが、ほとんどぐぐれば出てくる内容なので細かくは書いてませんw

参考サイト

docker-composeのリファレンス

zabbixからslackにアラート飛ばすshはこちらのサイト様を参考にさせていただきました。

構成について

①②については前回と同じです。

EC2とRDSの設定について

どちらも1年間無料枠の中で設定しています。

適当にVPCを作成。

EC2はubuntu18.04のAMIで作成。EIPも付与。

RDSはMySQLの5.7.23で作成してます。

ディレクトリ&ファイル構成

こんな感じです。

alertscriptsディレクトリはzabbixからslackにアラート飛ばすのに使うshを用意してます。

apacheディレクトリ内にあるclient-certsディレクトリはクライアント証明書。server-certsはサーバ証明書です。

serverディレクトリに用意しているDockerfileはzabbixからslackにアラート飛ばすのに使うcurlを用意するためにあります。

docker-compose.ymlについて

前回のものからzabbix_dbはRDSにしたので省いております。

zabbix_web、zabbix_serverで設定するDB_SERVER_HOSTはRDSに表示されているエンドポイントをそのままコピペするだけです。

前回と違いimageではなくbuildでDockerfileを指定しています。

zabbix_webで設定しているvolumesはzabbixからslackにアラート飛ばすためのshを用意しています。

zabbix_serverで設定しているvolumesはserver-certsはサーバ証明書、client-certsはクライアント証明書、apache.confはhttpからhttpsへのリダイレクト設定、apache_ssl.confはサーバ証明書とクライアント証明書を使うための設定をしています。

apache/Dockerfileについて

リダイレクト設定用です。気になる方は以前の投稿で少し触れているのでこちらをどうぞ。

apache/apache.confについて

リダイレクト設定用です。これも以前の投稿で触れているのでパス。

apache/apache_ssl.confについて

もともとzabbix/zabbix-web-apache-mysql:alpine-4.0.0にあったものを参考にサーバ証明書とクライアント証明書の設定を追加しました。

apache/server-certsについて

サーバ証明書を置いてます。オレオレ証明書なんでかなーり適当に作ってます。

コマンドも過去に使っていたものと全く同じです。

openssl genrsa 2048 > ssl.key

openssl req -new -key ssl.key > ssl.csr

echo subjectAltName=DNS:myzabbix > san.ext

openssl x509 -days 3650 -req -signkey ssl.key < ssl.csr > ssl.crt -extfile san.ext

apache/client-certsについて

クライアント証明書を置いてます。こっちもオレオレ証明書なんで適当です。

一応作り方を。

openssl genrsa 2048 > client.key

openssl req -new -key client.key > client.csr

openssl x509 -days 3650 -req -signkey client.key < client.csr > client.crt

さらにzabbixにアクセスするwindowsPCにインポートするためのp12ファイルを作成します。

openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12

これをscpなどでwindowsPCにもってきてインポートします。

server/Dockerfileについて

zabbixからslackにアラート通知するためにcurlをインストールしています。

alertscripts/slack.shについて

参考サイトでも触れている通り、がっつり使わせていただきました。

「湿度はいい感じです。」とか「加湿器を起動してください。」というメッセージがshに入っているのはzabbix側のactionで日本語を書くと文字化けしたための苦肉の策です。

数あるslackへのshで一番わかりやすかった。chmodで777して使ってます。

zabbix-serverの設定

家の保湿のために湿度が40%以下になったらslackにアラートを飛ばすようにしました。

追加した設定はこちら。

ですがあくまで一例です。とくにトリガー箇所などは自由にやっちゃったほうが楽しいと思います。わたしは命名センスないですし・・・w

Media typesにslackを追加

Administration→Media typesからslackを追加します。

Script parametersは上からこんな感じ。

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

Usersにslackユーザを追加

Administration→Usersでslackユーザを追加します。

MediaタブのTypeで先ほど作成した「slack」を選びます。

Send toでslackを飛ばすチャンネル名を書きます。ここでは「#zabbix」です。

こんな感じ。

あと一応PermissionsタブでUser typeを「Zabbix Super Admin」にしておきます。

triggerを追加

今回は湿度が40%以下になったらアラートがなるように設定します。

前回のtesthostにトリガーだけ追加してます。適当にNameつけてExpression書くだけです。

ここでは以下の通りにしてます。

Name:humidity_under40

Expression:{testhost:humidity.key.last()}<40

Actionを追加

Configuration→Actionsから適当な名前のActionを追加します。

Name:humidity 40%

Type of calculation:And

Conditions:↓

※LabelAは24時間365日を設定

※LabelBは先ほど作成した「testhost: humidity_under40」をTrigger equalsで指定しています。

Operationsタブを選んでこんな感じに設定。

Default subject:Problem

Default message:{ITEM.NAME1}:{ITEM.VALUE1}

Operation detailsのSend to Usersで先ほど作ったslackユーザを選択します。Send only toもslackで。

Recovery operationsはこんな感じ。

Default subject:Resolved

Default message:{ITEM.NAME1}:{ITEM.VALUE1}

Operation detailsのSend to Usersで先ほど作ったslackユーザを選択します。Send only toもslackで。

Default subjectはslack.shのif文で分岐するように書いてます。

Update operationsは使わないと思ったので未設定です。

slackの設定

ググればいっぱい出てくるので詳しいのは省略。

slackで専用のチャンネル(ここでは#zabbix)を作成してIncoming Webhookアプリを追加しただけです。このエンドポイントをslack.shに設定。このチャンネルをUserのslack箇所に設定すればOK。

実際にアラートが飛んできたslackの画面はこんな感じ。

かわいさ重視でくまさん。

最後に

いろいろあって投稿が遅れました。

正直書くこと詰め込みすぎました。。

ただAWSも使えたしクライアント証明書も組み込んでslackまで飛ばせたので満足です。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする