1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Mackerel でなんでも監視しよう

Posted at
  • Mackerel のサービスメトリックは時系列で値を持つものならなんでも扱うことが出来る。であればサーバやネットワーク以外のメトリックも監視してみよう。
  • Mackerel で監視することで、時系列数値をグラフ化することが出来る。つまり簡易 BI ツールとして使える。
  • Mackerel で監視することで、閾値を超えた際にアラートを出せる。

というような話です。

私は20年超の distributed.net ジャンキーですので(参考1参考2)、RC5-72 の順位を Mackerel で監視してみようと思います。

まず Mackerel のサービスメトリックを送信する API を確認します。といっても API-key を添えて URL をたたくだけのシンプルなものとなっています。

監視対象となる私のの RC5-72 のランキングページはこちらです。

Rank: の右の「1500」という数値を抜き出して監視したいですね。

image.png

ということで順位を抜き出して Mackerel に送信するスクリプトを作成しました。ほんとなら nokogiri とか使って綺麗に書くといいんですが、やっつけの適当です。すんません(誰に対する謝罪)

#!/usr/local/bin/bash

API_KEY="xxx"

RANK=`curl -s 'https://stats.distributed.net/participant/psummary.php?project_id=8&id=497669' | \
  ruby -e 'result = ARGF.gets(rs = nil).gsub(/\R/, "").gsub(/<.*?>/m, "").match(/Rank:.*?([0-9]+)/); p result[1].to_i'`

curl https://api.mackerelio.com/api/v0/services/all/tsdb \
  -H "X-Api-Key: ${API_KEY}" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '[{"name": "dnetstats.rc5-72.rank", "time": '$(date +%s)', "value": '${RANK}'}]'

このスクリプトを cron で1日1回実行するようにします。

crontab
30 10 * * * $BINDIR/dnetrank.sh > /dev/null 2>&1

翌日以降に Mackerel を確認すると、順位が受信されてグラフが生成されています。と言いたいところなんですが、無料プランだとグラフが1日分しか作れません。このグラフにも順位が描画されているのですが1点のみなのでグラフに見てないという。しくしく。

image.png

例えば目標順が1000位だったとして、1000位になったらアラートを飛ばしたいなら以下のように設定すれば大丈夫です。

image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?