この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の0日目です。
Mackerelとは
「Mackerel」は、サーバーにおける各種ハードウェアやアプリケーションソフトウェアの性能をリアルタイムに監視することができるSaaS型サーバー監視サービスです。 はてなが提供する「はてなブックマーク」や「はてなブログ」などの大規模な個人ユーザー向けサービスの提供で培ってきたサーバー・インフラ環境の管理ノウハウをもとに開発し、2014年のサービス開始から現在まで継続的な機能開発に取り組んでいます。 マルチクラウド環境での大規模な監視から小規模なサーバー監視までの幅広いニーズに対応することで導入企業を増やし、エンジニアの開発・運用プロセスの効率化に貢献しています。
- Mackerel公式サイト:https://mackerel.io/
- Mackerel開発ブログ:https://mackerel.io/ja/blog/
- Mackerel料金プラン:https://mackerel.io/ja/pricing
Mackerelのプラグインについて
Mackerelは各種ミドルウェアに対応したプラグインを公開しており、こちらを使うことでより深くモニタリングすることができます。またMackerelの公式プラグインはOSSとして公開されています。
このアドベントカレンダーではサーバ監視サービスであるMackerelの公式プラグインについて、1日1個紹介していきます。 また非常に簡単に作ることができ、作り方については去年の id:karupanerura さんの記事と2015年の @la_luna_azul さんの記事が参考になるのでぜひ見てください。
go-check-pluginsを勝手に解説 – Mackerelアドベントカレンダー12日目 | Ore no homepage
この2つでメトリックプラグインとチェックプラグインは完全にマスターできるはずです。
Mackerel 公式プラグイン集をインストール
上記にあるMackerel 公式プラグインの多くはパッケージで提供されています。
こちらを利用した場合、各プラグインは/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]+ にマッチします。
go-mackerel-plugin-helperを使ったPluginを読み解くコツ
公式プラグインは多くは go-mackerel-plugin-helper
を利用しています。
同じように go-mackerel-plugin-helper
を利用しているプラグインを使おうと思った時にどんな値を出力してくれるかわからないことがあると思います。
そういうときは var graphdef
にグラフ定義が "大体のプラグイン" は書いてあります(古い場合などは書いていないこともあります。
グラフ定義の値については公式ドキュメントの引用ですが次のとおりです。
フィールド | 型 | 説明 |
---|---|---|
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 プラグインアドベントカレンダーをお楽しみに!!