利用状況から見るMackerelで人気のメトリックプラグイン トップ10

MackerelチームCREの吉田(id:syou6162)です。Mackerelの特徴の一つに豊富なプラグインの存在がありますが、たくさんあるがゆえに「どれを使うといいんだろう?」と迷われる方もいらっしゃるかと思います。また、「プラグインを導入後、ミドルウェアのメトリックが可視化できるようになった。しかし、どのメトリックを監視すればよいのだろうか?」と悩んでおられる方もいらっしゃるかと思います。

今日はそういった方に向けて

  • Mackerelで利用数の多いメトリックプラグイン、トップ10
  • ホストメトリックの監視に使われている代表的なメトリックプラグインのメトリック

を紹介しようと思います。

なお、Mackerelのプラグインは以下の3種類が存在していますが、今回はメトリックプラグインの利用状況についてのエントリとなります。

Mackerelで利用数の多いメトリックプラグイン、トップ10!

それでは早速ですが、ランキングを公開したいと思います!...ジャン!

順位 プラグイン名 利用度スコア*1
1 linux 7.3
2 mysql 4.4
3 nginx 3.4
4 apache2 3.3
5 docker 2.3
6 redis 1.2
7 accesslog 1.1
8 conntrack 1.1
9 jvm 1.1
10 inode 1

すでにお使いのプラグインも、実は知らなかったプラグインもあるかと思います。どういったメトリックが監視されているかを含めて、個別のプラグインをチェックしていきましょう。

第1位: linuxプラグイン

栄えある1位はlinuxプラグインでした。2位に2倍近くの差を付けての堂々の1位で、Linuxをお使いなら必須のプラグインと言ってもよいでしょう。よく監視されているメトリックとしては、ログインしているユーザー数やネットワークの状態を表わすメトリックが人気でした。

監視によく使われているメトリック
  • custom.linux.users.users
  • custom.linux.ss.ESTAB
  • custom.linux.ss.CLOSE-WAIT
  • custom.linux.swap.pswpin
  • custom.linux.ss.TIME-WAIT

参考:

第2位: mysqlプラグイン

サービスの運用に欠かせないデータベースですが、mysqlプラグインが2位にランクインしました。人気のRDBMSなので、利用数が多いのも納得ですね。接続の状態毎の数やデッドロックの検知、スロークエリに関する統計量がよく監視されていました。

監視によく使われているメトリック
  • custom.mysql.seconds_behind_master.Seconds_Behind_Master
  • custom.mysql.threads.Threads_running
  • custom.mysql.capacity.PercentageOfConnections
  • custom.mysql.threads.Threads_connected
  • custom.mysql.table_locks.Slow_queries

参考:

第3位: nginxプラグイン

nginxプラグインが第3位にランクインしました。接続数やqueueの状態などが監視項目に使われていました。

監視によく使われているメトリック
  • custom.nginx.connections.connections
  • custom.nginx.requests.requests
  • custom.nginx.queue.waiting
  • custom.nginx.requests.handled
  • custom.nginx.requests.accepts

第4位: apache2プラグイン

3位に引き続きWebサーバー関係のプラグイン、apache2プラグインが第4位にランクインしました。監視に使われているメトリックとしてはnginxプラグインと似ており、接続数やworkerの状態がよく監視されているようですね。

監視によく使われているメトリック
  • custom.apache2.workers.busy_workers
  • custom.apache2.workers.idle_workers
  • custom.apache2.req.requests
  • custom.apache2.cpu.cpu_load

第5位: dockerプラグイン

5位はdockerプラグインがランクインしました。コンテナ化をする中で、もちろん監視もしたくなってきますよね。実際の監視項目としてはmemoryの使用量やstateに関するものが多かったです。

監視によく使われているメトリック
  • custom.docker.running.XXX.state
  • custom.docker.memory_used.XXX.memory_percentage
`XXX`の箇所は環境により異なります。

第6位: redisプラグイン

折り返し地点の第6位はredisプラグインがランクインしました。ちなみに、同じく人気のキーバリューストアmemcachedのプラグインは11位でした。接続しているクライアント数、メモリの使用量などがよく監視されていました。

監視によく使われているメトリック
  • custom.redis.clients.connected_clients
  • custom.redis.connections.rejected_connections
  • custom.redis.capacity.percentage_of_memory
  • custom.redis.uptime.uptime_in_seconds
  • custom.redis.capacity.percentage_of_clients

第7位: accesslogプラグイン

第7位にまたしてもWebサーバー関連のプラグイン、accesslogプラグインもトップ10に食い込みました。こちらはApacheやLTSVの形式のログを集計してくれるものであり、SLI / SLOの測定にも役に立つプラグインです。nginxプラグインやapache2プラグインと一緒に是非お使いください。

監視によく使われているメトリック
  • custom.accesslog.access_num.5xx_count
  • custom.accesslog.access_rate.5xx_percentage
  • custom.accesslog.access_rate.4xx_percentage
  • custom.accesslog.latency.99_percentile
  • custom.accesslog.access_num.2xx_count

参考:

第8位: conntrackプラグイン

第8位にはiptablesのトラッキング情報の統計情報である ip_conntrack を監視するconntrackプラグインがランクインしました。ip_conntrackには最大トラッキング数というものが存在し、それをオーバーしてしまうと新規セッションが弾かれ、ネットワークパフォーマンスの劣化を招いてしまいます。大量のトラフィックを捌くサーバー(ロードバランサーやキャッシュサーバー)では、忘れずにip_conntrackのトラッキングの監視を入れておきましょう。

監視によく使われているメトリック
  • custom.conntrack.count.used
  • custom.conntrack.count.free

第9位: jvmプラグイン

第9位にはjvmプラグインがランクインしました。jvm上で動くアプリケーションの運用に避けては通れない監視項目は色々あると思いますが、そういったものの典型例であるGCにかかった時間 / イベント数、ヒープの使用量などが上位の監視項目として挙がっていました。

監視によく使われているメトリック
  • custom.jvm.bootstrap.gc_events.FGC
  • custom.jvm.bootstrap.gc_time.FGCT
  • custom.jvm.heap.used
  • custom.jvm.prodserverstart.gc_events.FGC
  • custom.jvm.elasticsearch.memorySpace.oldSpaceRate

第10位: inodeプラグイン

トップ10の最後はinodeプラグインがランクインしました。普段は特に問題がなくても、inodeが枯渇すると新しいディレクトリやファイルが作れなくなるので、監視しておくと安心ですね。

監視によく使われているメトリック
  • custom.inode.percentage.*.used

参考:

inodeの監視 ~ mackerel-plugin-inodeを読み解く - そーだいなるらくがき帳

所感

  • 各メトリックプラグインでどういった項目が監視されているかは監視の知見が溢れていて、調査した私も勉強になりました
  • 惜しくもトップ10入りはならなかったものの、multicoreプラグイン / postgresプラグイン / fluentdプラグインなど人気のプラグインもまだまだあり、今後もブログ等を通じて紹介していきたいなと思います

*1:利用度スコアは第10位の利用数を1としたときの相対値を表わしています。