Mackerel アドベントカレンダーが空いていたので、半年ほど前に作ったプラグインの話を軽くします。22 23日目の記事です*1。
昨日は sfujiwara さんで、「Mackerel と連携する外形監視エージェント maprobe でマネージドサービスのメトリック収集を自動化する」でした。
作ったもの
- mackerel-plugin-strongswan
これは何
strongSwan という広く使われている IPSec 実装があります。
このプラグインは、 strongSwan の IKE デーモンである charon のインターフェースである vici を用いて、アドレスプールの状況や確立された SA (Security Association) の数を出力するものです。
vici は 5.4.0 からデフォルトで有効になっていますが、 swanctl を使わないパッケージの場合は無効になっていて使えないことがあるかもしれません。
libreswan には vici はないので使えません。
作った理由
SA の状況を監視したかったのですが、無かったので作りました。貼ってる SA の数が上限する様子を見て楽しんでいます。
0 -> 1 になっているのは端末から接続したからですね。 1 -> 2 になってるのは常時接続しているルーターが reboot したからです。このルーター不安定でたまに reboot するのですが、その様子がよく分かります。
技術的な話
Python3 で書いています。公式に提供されているバインディングが Python, Ruby, Perl だったので Python にしました。設置する場合は pipenv install
か pip instsall
して vici モジュールを入れてください。
コード自体は、 vici モジュール経由で API を叩いてメトリックにしているだけなので単純です。
mackerel-plugin-strongswan/main.py at master · nonylene/mackerel-plugin-strongswan · GitHub
その他
strongSwan は ipsec.conf
に設定を書いていくという形式*2でしたが、新しく swanctl というのが開発され、strongswan.conf
と同じ形式で非常に分かりやすく & 書きやすくなりました。今のところ困る点もなく使えており、おすすめです。
例えば、 left
right
というどっちがどっちか良く分からない名前も、local
と remote
になっています。
ちなみに、 swanctl 内部では vici を使って charon とやり取りしています。