shitnarof が 2021年05月05日10時04分13秒 に編集
マークダウンの記法が間違っていたので修正
本文の変更
# 1.やりたいこと
# やりたいこと
自宅でラズパイをNASやミュージックサーバ等として動かしています。 が、いろんなプログラムを動かしているので、負荷が高くなってうまく動かなくなることがあります。 「ラズパイを監視して危なくなったらお知らせしてくれる仕組みがあったらいいなぁ」と思っていました。そんな時にobnizがwebhookからプログラム実行できると聞き、サーバ監視用ソフト(zabbix)と組み合わせることで簡単に実現できるのでは!と思い試してみました。 やりたいことを、簡単に絵に書いてみました。 3つの機能が必要なことが分かりました。 ![キャプションを入力できます](https://camo.elchika.com/4f0b11290019efe021949d2a3decc73483fecb65/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35613862326366622d356434392d343239662d623639632d6438646431346462613361382f34663237613934632d373530342d343861632d623138382d653639663335663663663163/) ![キャプションを入力できます](https://camo.elchika.com/1fb243f71aa1904be9ae0dad494d32c84ba8d124/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35613862326366622d356434392d343239662d623639632d6438646431346462613361382f61316137623035302d613231392d343230342d613434382d646462643863646461666365/) それぞれの実現方法について以下で説明します。
### 機能①定期的に監視
## 機能①定期的に監視
サーバ監視ツールの定番[zabbix](https://www.zabbix.com/jp/features)を用いました。環境構築については、電子工作ネタから外れるので省略しますが、公式ドキュメントやネット上に多くの記事がありますので気になった方は探してみてください。
### 機能②異常があったらobnizのサーバレスイベントのwebhookにアクセス
## 機能②異常があったらobnizのサーバレスイベントのwebhookにアクセス
こちらもzabbixの[アクション](https://www.zabbix.com/documentation/2.2/jp/manual/config/notifications/action)と呼ばれる設定で、任意の条件でコマンドを実行することができます。今回は、障害が発生したらobnizのwebhookのURL(後ほど説明します)にアクセスする設定を行いました。
### 機能③webhook経由でobnizのLED点灯とブザーを鳴らす
## 機能③webhook経由でobnizのLED点灯とブザーを鳴らす
obnizを使って作ります。詳しくは次の章で説明します。
# 2.作り方
# 作り方
#### ソフトウェア
## ソフトウェア
obnizのプログラムを作成して、webhook経由でプログラム実行できるようにします。 実際に設定した手順は以下になります。 1. [開発者コンソール](https://obniz.com/ja/console)にアクセス 2. リポジトリをクリック 3. 新規作成でタイプをBlockProgram、ファイル名入力し作成ボタンをクリック 4. プログラムを作成 して保存 ほぼサンプルプログラムと同じですが、以下のプログラムを作成しました。 ![キャプションを入力できます](https://camo.elchika.com/37dcc5dc7d445b37441b8d45c08698890e9da969/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35613862326366622d356434392d343239662d623639632d6438646431346462613361382f30613330646663362d393634662d343039362d396663342d383965303965653636653466/) 5. 開発者コンソールから[サーバレスイベント](https://obniz.com/ja/console/events)をクリック 6. 新規作成をクリック、「1. トリガー」はwebhook、「2. 実行するアプリケーション」は先程作成したプログラムのファイル名を選択 7. Endpointと書かれた場所にURLが表示されるので、そのURLにアクセスすると先程作成したプログラムを実行することができます。 ソフトウェアはこれで完成です。次にハードウェアについて説明します。
#### ハードウェア
## ハードウェア
材料は以下を使いました。 - obniz 1Y 1個 - [速攻!6-TONEジェネレータonブレッドボード](https://www.aitendo.com/product/18875) 1個 - LED 1個 - 抵抗 1個 obniz Bord 1Yと各部品とのつなぎ方ですが、 [速攻!6-TONEジェネレータonブレッドボード](https://www.aitendo.com/product/18875)の+3~5Vをobnizの0番、GNDをobniz 1Yの1番に接続しました。LEDと抵抗もアノード側を0番、カソード番を1番に接続しています。外観はこんな感じでobniz Bord 1Yの裏側に両面テープで貼り付けてました。 ![キャプションを入力できます](https://camo.elchika.com/836acc26d5a5f6b49233c8c225992cfba61c68dd/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35613862326366622d356434392d343239662d623639632d6438646431346462613361382f32393964343636382d663838642d346164622d623166622d316232613461616538633863/)
# 3.動かしてみた
# 動かしてみた
準備ができたので、動作確認をしてみました。 機能②で紹介したzabbixのアクションにて、軽度以上の障害が発生した際に、以下のようにcurlコマンドでwebhookのURLにアクセスするように設定しました。 ```curl https://obniz.com/events/xxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/run``` では、実際にラズパイに負荷をかけて、障害を発生させてみました。 @[youtube](https://www.youtube.com/watch?v=svDl661yeDo) ラズパイ側の負荷が上がって「Load average is too high (per CPU load over 1.5 for 5m)」の障害が発生したタイミングでブザーが鳴り、LEDが点灯が点灯させることができました。 これで何か異常があった時に気づくことができそうです。
#4. 作ってみた感想
# 作ってみた感想
今回obnizを初めて使いましたが、プログラム作成や各種設定がブラウザ上の開発者コンソールで完結しており、やりたいことが簡単に実現できる便利さに驚きました。 また、javascriptで開発ができるので、いろんなアプリケーションと簡単に連動させることも魅力的に感じました。今後も引き続き色々作ってみようと思います。 ボードの提供ありがとうございました。大事に使います!