そーだいなるらくがき帳

そーだいが自由気侭に更新します。

Mackerel プラグインアドベントカレンダー(全部CRE)を楽しむために知っておくべきこと

この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の0日目です。

qiita.com

Mackerelとは

「Mackerel」は、サーバーにおける各種ハードウェアやアプリケーションソフトウェアの性能をリアルタイムに監視することができるSaaS型サーバー監視サービスです。 はてなが提供する「はてなブックマーク」や「はてなブログ」などの大規模な個人ユーザー向けサービスの提供で培ってきたサーバー・インフラ環境の管理ノウハウをもとに開発し、2014年のサービス開始から現在まで継続的な機能開発に取り組んでいます。 マルチクラウド環境での大規模な監視から小規模なサーバー監視までの幅広いニーズに対応することで導入企業を増やし、エンジニアの開発・運用プロセスの効率化に貢献しています。

Mackerelのプラグインについて

Mackerelは各種ミドルウェアに対応したプラグインを公開しており、こちらを使うことでより深くモニタリングすることができます。またMackerelの公式プラグインOSSとして公開されています。

github.com

github.com

このアドベントカレンダーではサーバ監視サービスであるMackerelの公式プラグインについて、1日1個紹介していきます。 また非常に簡単に作ることができ、作り方については去年の id:karupanerura さんの記事と2015年の @la_luna_azul さんの記事が参考になるのでぜひ見てください。

qiita.com

go-check-pluginsを勝手に解説 – Mackerelアドベントカレンダー12日目 | Ore no homepage

この2つでメトリックプラグインとチェックプラグインは完全にマスターできるはずです。

Mackerel 公式プラグイン集をインストール

上記にあるMackerel 公式プラグインの多くはパッケージで提供されています。

mackerel.io

こちらを利用した場合、各プラグインは/usr/binにインストールされます。 そのため /usr/bin はPATHが通っているので省略することができます。 ですのでmackerel-agentの設定ファイルに利用するプラグインに合わせて以下のような設定を追加してください。 設定ファイルであるmackerel-agent.confは標準では /etc/mackerel-agent/mackerel-agent.conf にインストールされます。

[plugin.metrics.apache2]
command = "mackerel-plugin-apache2"

設定の反映には、mackerel-agentの再起動が必要です [plugin.metrics.apache2] の意味ですが [plugin(固定).種類.識別名] となっています。 種類には以下の3点があります。

  • metrics
  • checks
  • metadata

識別名は任意の名前を付けることができます。 識別名に使用できる文字は英数字もしくはハイフン(-)、アンダースコア()のいずれか、または連続しない ドット(.)です。 識別名はドットを除く文字の連続 [-a-zA-Z0-9]+ にマッチします。

mackerel.io

go-mackerel-plugin-helperを使ったPluginを読み解くコツ

公式プラグインは多くは go-mackerel-plugin-helper を利用しています。 同じように go-mackerel-plugin-helper を利用しているプラグインを使おうと思った時にどんな値を出力してくれるかわからないことがあると思います。 そういうときは var graphdef にグラフ定義が "大体のプラグイン" は書いてあります(古い場合などは書いていないこともあります。

mackerel.io

グラフ定義の値については公式ドキュメントの引用ですが次のとおりです。

フィールド 説明
Name string (必須)メトリックの名前。 FetchMetrics() で取得する map のキー名と対応する
Label string Mackerel上での表示名
Diff bool plugin上で差分値計算をするかどうか (Default: false)
Type strint "float64", "uint32" もしくは "uint64"。主に整数値のカウンターでDiff計算が必要な場合に上限値の決定のために用いられる (Default: float64)
Stacked bool Mackerel上で積み上げ表示されるかどうか (Default: false)
Scale float64 指定された場合、取得した値にこのScaleの値を乗じてから出力をおこなう。例えば、KBで取得した値をByteに補正したい場合に、1024を指定する

使ってみたいプラグインのコードを読むときはぜひ、ご参考ください。

より良い、go-mackerel-plugin

上記の公式ドキュメントを読むと次のように書いてあります。

現在、プラグイン作成には、ここで紹介しているgo-mackerel-plugin-helperよりも、go-mackerel-pluginを利用することを推奨しています。go-mackerel-pluginを利用したプラグイン作成方法の詳細は https://mackerel.io/ja/docs/entry/advanced/go-mackerel-plugin をご覧ください。

つまりはそういうことなので自分で作成するときはgo-mackerel-pluginを使いましょう。 公式プラグインでも最近のモノはgo-mackerel-pluginが使われています。

mackerel.io

github.com

それでは明日から始まる、Mackerel プラグインアドベントカレンダーをお楽しみに!!

qiita.com