PrometheusはSoundCloudがスポンサーになっているモニタリングツール。これをLXC/LXDで動かしたときのメモ。
u1
というコンテナが10.0.3.101
で動いているとする。
Prometheusのインストール
ドキュメントによれば、バイナリを持ってくるか、自分でビルドするか。今回はさくっと試したいだけなので、ビルド済みのバイナリをダウンロードして使う。
lxc exec
にはssh
と同じ感覚で標準入力が渡せるので、アーカイブは標準入力から渡して、それをtar
で展開する。(lxc file
でもいいけど)
$ wget https://github.com/prometheus/prometheus/releases/download/0.16.1/prometheus-0.16.1.linux-amd64.tar.gz
$ cat prometheus-0.16.1.linux-amd64.tar.gz | lxc exec -- u1 tar xzf -
設定ファイルのサンプルを取ってくる。
$ lxc exec -- u1 wget https://github.com/prometheus/prometheus/raw/master/documentation/examples/prometheus.yml
で、バイナリを実行する。
$ lxc exec -- u1 prometheus-0.16.1.linux-amd64/prometheus prometheus, version 0.16.1 (branch: release-0.16.1, revision: 968ee35) build user: fabianreinartz@macpro build date: 20151016-13:19:57 go version: 1.5 INFO[0000] Loading configuration file prometheus.yml source=main.go:196 INFO[0000] Loading series map and head chunks... source=storage.go:262 INFO[0000] 0 series loaded. source=storage.go:267 INFO[0000] Starting target manager... source=targetmanager.go:114 INFO[0000] Listening on :9090 source=web.go:223
これで10.0.3.101:9090
でPrometheusが動いていることになる。
curl http://u1:9090/graph
でHTMLが返ってくればたぶんOK。
UFWの設定
NAT用にiptablesを使うけど、単純にUFWを有効にしてしまうと通信がつながらなくなったりするので、必要最低限度の設定を入れておく。とりあえずsshのポートとPrometheusのポート(どうせポートフォワードするから9090じゃなくてもいいけど)が許可されてればいい。
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
$ sudo ufw allow ssh
$ sudo ufw allow 9090
あと、dnsmasqと通信するのに53番ポートも空けないといけないみたい。これよく分からない。
$ sudo ufw allow to 10.0.1.3 port 53 proto udp
/etc/ufw/before.rules
のいちばん上に以下のような設定を書く。
*nat :PREROUTING ACCEPT [0:0] -A PREROUTING -i eth0 -p tcp --dport 9090 -j DNAT --to-destination 10.0.3.101 COMMIT
おわったらUFWを有効に
$ sudo ufw enable
これでポートフォワードされるので、http://(ホストのIP):9090/
でPrometheusの画面が表示されるはず。