【2020-10-01 追記】当機能は廃止されました。
本日、Pixela( https://pixe.la/ )のアップデートをおこないました(v1.13.0)。これにより、Pixelaのグラフに対して投稿や更新された値を判定して、アラーティングのような通知をおこなうことができるようになりました。
現時点では、通知先としてはslackのみのサポートとなります。以下に利用方法などを解説します。
ユーザー作成から通知をおこなうまでのサンプル
まずはユーザー作成をおこないます。ユーザー名は notify-test
としています。
$ curl -X POST https://pixe.la/v1/users -d '{"token":"thisissecret", "username":"notify-test", "agreeTermsOfService":"yes", "notMinor":"yes"}' {"message":"Success.","isSuccess":true}
続いてグラフを作ります。グラフIDは test-graph
としています。
$ curl -X POST https://pixe.la/v1/users/notify-test/graphs -H 'X-USER-TOKEN:thisissecret' -d '{"id":"test-graph","name":"graph-name","unit":"commit","type":"int","color":"shibafu","timezone":"Asia/Tokyo"}' {"message":"Success.","isSuccess":true}
ここで、チャンネル(Channel
)を定義しておきます。チャンネルとは、「どこに通知するか」という通知先に関する情報のことを指します。作成にはチャンネルIDを指定する必要があり、ここでは my-channel
としています。
$ curl -X POST https://pixe.la/v1/users/notify-test/channels -H 'X-USER-TOKEN:thisissecret' -d '{"id":"my-channel","name":"My slack channel","type":"slack","detail":{"url":"https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxx","userName":"Pixela Notification","channelName":"pixela-notify"}}' {"message":"Success.","isSuccess":true}
あらかじめ slack の incoming webhook を作成しておき、そのURLを detail.url
に指定します。slack の incoming webhook の作成方法についての説明はここでは割愛しますが、詳細は以下を参照してください。
そして、準備としては最後に、通知ルール(Notification
)を定義します。通知ルールとは、「何がどうなったときに通知をおこなうか」という通知条件です。こちらもIDを指定する必要がありますので、my-notify-rule
とします。
$ curl -X POST https://pixe.la/v1/users/notify-test/graphs/test-graph/notifications -H 'X-USER-TOKEN:thisissecret' -d '{"id":"my-notify-rule","name":"my notification rule","target":"quantity","condition":">","threshold":"3","channelID":"my-channel"}' {"message":"Success.","isSuccess":true}
このリクエストにより、どういった通知条件が指定されているかというと、
- 投稿・更新された値が(
"target":"quantity"
) - 閾値 "3"(
"threshold":"3"
) - よりも大きい(
"condition":">"
) - 場合に、チャンネルID
my-channel
を通知先として通知をおこなう("channelID":"my-channel"
)
......という条件になります。試しに、このグラフに値を投稿してみましょう。閾値が 3
なので、4
の値を投稿してみます。
$ curl -X POST https://pixe.la/v1/users/notify-test/graphs/test-graph -H 'X-USER-TOKEN:thisissecret' -d '{"date":"20190920","quantity":"4"}' {"message":"Success.","isSuccess":true}
投稿はできましたね。slackの当該チャンネルを見てみましょう。
無事、通知させることができました!
もう少し詳しく
通知ルール(Notification
)について、もう少し詳しく書きます。
設定可能な通知条件について
target
- いまのところ、
quantity
しか指定することはできません。 - そのうち、「そのグラフの最大・最小値」とか「そのグラフの平均値」とかが指定できるようになると良いですね。
- いまのところ、
threshold
- 対象のグラフのタイプと矛盾のない値である必要があります。
- グラフタイプが
int
なら、threshold
も整数値である必要があります。
condition
- 以下の4タイプをサポートしています。
>
: 投稿および更新されたquantity
が閾値よりも大きくなったときに通知をおこないます。=
: 投稿および更新されたquantity
が閾値と等しい場合に通知をおこないます。<
: 投稿および更新されたquantity
が閾値よりも小さくなったときに通知をおこないます。multipleOf
: 投稿および更新されたquantity
が閾値の倍数になったときに通知をおこないます。- この条件を指定したい場合は、Pixelaサポーターである必要があります。詳細はこちらをご覧ください。
- 以下の4タイプをサポートしています。
その他について
- 今回のサンプルでは、値(
quantity
)の新規登録の例でしたが、「既存の値の更新」や「Webhook による increment/decrement」も通知の対象になります。 - discord に対して Mackerel からアラート通知を送る - えいのうにっき と同じような応用をすることで discord に対しても通知をおこなうことができます(できるはずです)。
- 一つのグラフに対して複数の
notification
を作成したい場合は、Pixelaサポーターである必要があります。詳細はこちらをご覧ください。- 一つのグラフに対して
notifiation
を一つだけ作る場合は、Pixelaサポーターである必要はありません。誰でも作成できます。
- 一つのグラフに対して
今回のリリースに関連するページなど
- APIドキュメント
Channel
Notification
- GitHub Releases
ぜひ使ってみてください
これまでの Pixela のおもしろ活用事例として、飲酒回数をPixelaに投稿したり、といったものがあったのですが、今回の通知機能を利用することにより、それが一定値を超えた場合にすぐにそのことに気がつくことができるはずです。つまり、超えてはいけないラインを超えてお酒を飲んでしまっているときに、そのことの通知を Pixela から受け取ることができるわけですね。これは明らかに便利そうです。ぜひ使ってみてもらえたらと思います。