Mackerel のメタデータに Amazon Linux のパッケージ情報を登録してみる
mackerel-agent でメタデータの登録が対応したので、早速 Amazon Linux のパッケージ情報を登録してみることにした。
ソースコード #
#!/usr/bin/env perl
use 5.016;
use warnings;
use utf8;
use JSON::PP qw/encode_json/;
my @lines = split(/\n/, `repoquery --all --installed --queryformat="%{name} %{arch} %{version}-%{release}"`);
my %packages;
for my $line (@lines) {
my ($name, %info) = parse_package($line);
next unless %info;
$packages{$name} = \%info;
}
say encode_json \%packages;
sub parse_package {
my $line = shift;
my @items = split(/\s+/, $line);
return $items[0], (
architecture => $items[1],
version => $items[2]
);
}
使い方 #
Mackerel エージェントの設定ファイルに下記を追加する。
[plugin.metadata.packages]
command = "perl /path/to/mackerel-metadata-packages.pl"
execution_interval = 60
そうすると、60 分間隔でインストール済みのパッケージ情報がメタデータとして更新される。
例えば、OpenSSL のバージョンを確認したい場合は下記のようなコマンドを実行する。
$ curl -s -XGET -H 'X-Api-Key:<APIKEY>' https://mackerel.io/api/v0/hosts/<hostId>/metadata/packages | jq '.openssl'
{
"architecture": "x86_64",
"version": "1.0.1k-15.96.amzn1"
}