ぶていのログでぶログ

思い出したが吉日

mackerelメタデータでパッケージ一覧を管理するCLIツールを作った

この記事はMackerel Advent Calendar 2016の5日目の記事です。 昨日はww24さんによるRaspberry Pi を Mackerel で監視するでした!


先日、Mackrelにメタデータ機能がリリースされましたね! 早速メタデータ機能を使ったMackerelの活用方法を考えてみました!

パッケージ管理は意外とめんどくさい

例えば、opensslの脆弱性が見つかった時にパッケージのアップデートをする必要があると思います。 そんな時に、全サーバのパッケージバージョンを取得したくなりますが、サーバが増えてくるとなかなかの手間です。。 ? そこで、Mackerelのメタデータ機能を使ってサーバのパッケージ情報を管理する方法を考えました!

mkr-meta-pkgを作った!

buty4649/mkr-meta-pkg

このツールはパッケージ情報をメタデータに格納または、メタデータから取得するコマンドです。 使い方は以下の通りです。

パッケージ一覧の収集と格納

以下のコマンドを実行するとパッケージ一覧を取得しメタデータに格納します。 今のところ、RedHat系にのみ対応しています。

$ mkr-meta-pkg collect

パッケージ一覧の取得

取得したいhostIdを指定すると、メタデータからパッケージ一覧を取得します。 この機能は、MacOSX用のバイナリでも実行できます。

$ mkr-meta-pkg dump <hostId>

実行例

$ mkr-meta-pkg dump $HOSTID | jq -r ".openssl.version"
1.0.1e-51.el7_2.7

mkrコマンドと組み合わせれば、複数のホストの情報を取得できます

$ mkr hosts -s $SERVICE -r $ROLE  | jq -r ".[].id" | xargs -L1 mkr-meta-pkg dump | jq -r ".openssl.version"
1.0.1e-51.el7_2.7

今後の課題

パッケージ一覧の取得・格納とメタデータの取得しかできないので、バージョン番号を指定してホストを絞る機能をつけたいと思っています! 定期的にパッケージ一覧を照合するサーバみたいなのを立てて、パッケージ一覧を監視するみたいなことができたらいいなぁっと思っています。

おわりに

今回紹介した方法はMackerelの持つ可能性の1つに過ぎないと思っています。 皆さんも是非Mackerelを活用して日々の運用を楽にしましょう! ?

明日は syou6162@githubさん です!