iftttを使用してサーバーのディスク使用率が閾値超過時にTwitterに自動投稿するようにした

タイトルのとおり、先日iftttを使用してLinuxマシン(Ubuntu 17.10)の
ディスク使用率がしきい値を越えたら、Twitterに自動投稿出来るようにしたので
その際の手順を記載します。


#iftttってなに
「IF Thid Then That」の略で「イフト」と読みます。
WebサービスやIoT機器を連携させて新しいサービスを生み出す
ハブ的役割を果たすWebサービスです。
iftttでは、Webサービスを一つずつ選んで自分で設定する方法と、
公開されている「レシピ」をLINEに連携する方法があります。
※レシピには「Googleカレンダーにスケジュールが登録されたらLINEに通知する」
のような具体的な連携方法が定義されていて、それを選ぶだけで動かせるのですが、
注意点として無料で使えるサービスには制限時間付きのものがあり、
一定の利用を超えると課金の対象になる場合があることがあるので、
本格的に利用する際にはサービスごとの制限や条件をよく確認しましょう。

iftttを利用するには以下のURL先でログインしましょう。
メアドを使って新規登録、もしくはGoogleやFacebookのアカウントを使って
ログインして利用開始出来ます。
https://ifttt.com

#ifttt側の設定をする

iftttにログインします。
※Welcome to IFTTTの画面が出たら画面右上の×で閉じましょう。

ログイン後はアカウント名をクリックして現れるプルダウンから
New Appletを選択するとアプレット登録画面が表示されるので
「+this」をクリックします。
サービスが大量に表示されますが、検索窓にwebと入力すると出てくる
「Webhooks」というサービスを選択します。
![Screenshot from 2018-09-23 15-42-53.png](https://qiita-image-store.s3.amazonaws.com/0/257565/8c858a3f-00d2-234a-a7d3-6c5c14add140.png)


すると以下の画面に遷移するので「Receive a web request」をクリックします。
![Screenshot from 2018-09-23 15-47-25.png](https://qiita-image-store.s3.amazonaws.com/0/257565/8dde8350-cbf2-6386-1aea-154631f7f450.png)


画面が遷移したらEvent Name 内に「system_event」と入力して
「Create trigger」をクリックします。
※Event NameはTwitterにイベント名として表示させるための名称です。
![Screenshot from 2018-09-23 19-48-19.png](https://qiita-image-store.s3.amazonaws.com/0/257565/d281b0a8-7ed9-de83-37d8-21d0566314ee.png)


「Create trigger」をクリックすると「if then +that」と表示されている画面に遷移するので
+thatをクリックして連携するサービスを選択します。
今回はTwitterを選択します。
![Screenshot from 2018-09-23 20-06-17.png](https://qiita-image-store.s3.amazonaws.com/0/257565/cbe8d44d-e2e8-4ff1-29e5-08079e5c5c59.png)

すると画面が遷移して「Choose action」画面になります。
今回は単純にPCのディスク使用率をツイートするだけなので「Post a tweet」を選択します。
選択後、Tweet text内を以下のように編集しましょう。

```
The event named "{{EventName}}" occurred: DiskUsage "{{Value1}}" is "{{Value2}}"%
```
※EventNameは上記で設定したsystem_eventが設定値になります。
　value1,2はWebhooksサービスへPCからアクセス（POST）する際に
　送信する値です。

設定が完了したら「Create Action」をクリックして設定を保存して、
画面下のFinishをクリックしアプレットを完成させましょう。

#Linuxマシン側の設定をする
ifttt側の設定が完了したらLinuxマシン側の設定をやっていきます。

WebhooksのサービスにPOSTするためにcurlを利用します
※curlはCLIでwebサイトからファイルをダウンロードしたり
　アップロードしたり出来るコマンドです。
　今回はWebhooksへのPOST機能を使うために利用します。

```
sudo apt -y install curl
```

#定期的にツイートさせる
後はディスク使用率を監視したいファイルシステムをチェックする
シェルスクリプトを作成して「crontab」に登録するだけです。

以下の画面で左上にあるWebhhooksをクリックすると画面遷移するので、
遷移した先で右上にあるDocumentationをクリックすると
アクセスキー（Your key is:）の情報が確認出来ます。
![Screenshot from 2018-09-24 09-23-36.png](https://qiita-image-store.s3.amazonaws.com/0/257565/f3c05e8e-92e8-43b1-9fe2-c7ef05cf77d1.png)
![Screenshot from 2018-09-24 09-43-01.png](https://qiita-image-store.s3.amazonaws.com/0/257565/cb50cc0a-5a1a-3f90-35aa-cd2e585fbcf8.png)
![Screenshot from 2018-09-24 09-43-19.png](https://qiita-image-store.s3.amazonaws.com/0/257565/5d1cb7b6-d06a-75aa-1786-b37ce3c6de4c.png)

アクセスキーの情報が確認出来たら、shell scriptを作成します。

```
#!/bin/sh -x
keys="ここはアクセスキーを入力"
# system_event（ここはwebhooksで登録したevent名を入れる）
event="system_event"
# しきい値
MAX=*（*の値は自分の設定したい値を入れてください）
for disk in `df | grep "^/dev" | awk '{printf("%s,%s\n", $6, $5)}' | sed 's/%//g'`
do
  FS=`echo $disk | cut -d, -f1`
  USAGE=`echo $disk | cut -d, -f2 | sed 's/%//'`
  if [ $USAGE -gt $MAX ] ; then
    curl -X POST -H "Content-Type: application/json" -d '{"value1":"'$FS'","value2":"'$USAGE'"}' https://maker.ifttt.com/trigger/${event}/with/key/${keys}
  fi
done
```

shell scriptを作成出来たらchmodコマンドで実行権限をつけます。

```
chmod 755 /usr/local/bin/ifttt.sh
```

後はcrontabの最後の行に以下を追加してshell scriptを
定期的に実行させるようにさせます。

```
$ sudo crontab -e
 
30 12 * * * root /usr/local/bin/ifttt.sh >/dev/null 2>&1
```
実行時間は毎日12時30分に実行するようにしていますが、
ここは好きな時間を設定してください。

今回参考にした記事
Linuxでもペイントは使えるんやで https://qiita.com/kaitaku/items/dd20c292c903b4b62b17

Qiitaが教えてくれない記述方法 https://qiita.com/consolesoup/items/37241ee79501523fb49e