Help us understand the problem. What is going on with this article?

Prometheus+Grafanaで快適Mastodon監視生活

More than 1 year has passed since last update.

この記事はMastodon Advent Calendar 20182日目の記事です。

Mastodonを運用していて気になるのがSidekiqです。
Sidekiqのジョブ状態を監視するいくつかの方法をご紹介します。

Sidekiqダッシュボードでの監視

Sidekiqのダッシュボードでジョブの処理状況が確認できます。
ほぼリアルタイムで確認できますが、アラートを上げたりする仕組みは無いので、監視するには常に見ているしかありません。
image.png

mackerelによるSidekiq監視

サーバー監視にmackerelを使用している場合、mackerel-plugin-sidekiqを使えばsidekiqのジョブ情報をカスタムメトリックとして表示差せることができます。
ただし、メトリクスの投稿は1分ごとなので、リアルタイム性は落ちます。またFreeプランでは1日分しかメトリクスを保持できません。
image.png

Prometheus+GrafanaによるSidekiq監視

Prometgeusやgrafanaについては、下記の記事を参照してください。

ざっくり言うと、メトリクスを収集するのがPrometheus、収集したメトリクスを可視化するのがgrafanaです。

Mastodonは.env.productionに設定を書くだけでStatsDによるメトリクス投稿が可能です。
PrometheusとMastodonの間にstatsd_exporterを挟むことで、Prometheusでメトリクスを取得することができます。

statsd_exporterは9175番ポートでStatsDでのメトリクスを受け取り、9102番ポートで受け取ったメトリクスを公開します。

.env.productionは以下のように設定します。

env.production
STATS_ADDR=your_statsd_exporter_address:9175

prometheus.ymlは以下のように設定します。

prometheus.yml
scrape_configs:
  - job_name: 'StatsD'
    static_configs:
      - targets: ['your_statsd_exporter_address:9102']

これでMastodonが出力する各種メトリクスを、Prometheusで取得することができます。
デフォルトでは15秒ごとにメトリクスを取得します。

あとはgrafanaでメトリクスを好きなように加工するだけです。
Sidekiqだけでなく様々なメトリクスが取れるので、いろいろ試してみることをお勧めします。
例えばこんな感じでグラフ化できます。
image.png

grafanaを使用することで、ジョブの状態などで通知を出すことができます。
例えば私が運用しているインスタンスでは、直近1分間のsidekiq_enqueuedの平均がある値を超えた場合、Discordにアラートを送るように設定しています。

最後に

Mastodonに限らず、サーバーの安定運用にメトリクス収集や監視は欠かせません。
Prometheusでは様々なexporterが提供されており、いろんなメトリクスを取得することができます。
grafanaにも様々なプラグインが提供されており、Prometheusに限らずいろんなデータソースからメトリクスを取得することができます。

Prometheus+Grafanaで快適なMastodon監視生活を!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした