概要
PrometheusとはGo製のプル型の監視ツールである。複数の雑多なサービスをまとめているサーバ上でPrometheusをサブディレクトリで動かしたい、つまり、 https://exsample.com/prometheus/ という風にアクセスしたいということがあった。また、環境を汚したくないのでDocker上で動かしたい。しかし、よい日本語情報がなかったのでまとめておく。
Prometheusをサブディレクトリで動かす
キーになる設定が"--web.external-url"と"--web.route-prefix"である。"--web.external-url"では"外側のURL"、つまりnginx側に設定するURLを設定する。"--web.route-prefix"にはprometheus側のprefixを設定設定する。
例えば下記のようにdocker-compose.ymlに設定する。
version: '2'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./data:/prometheus/data
ports:
- 3002:9090
command: >
--config.file=/etc/prometheus/prometheus.yml
--storage.tsdb.path=/prometheus/data
--web.console.libraries=/etc/prometheus/console_libraries
--web.console.templates=/etc/prometheus/consoles
--web.external-url http://localhost:9090/prometheus/
--web.route-prefix=/
nginx側の設定は exsample.com/prometheus/ でアクセスしたい場合たとえば下記のように設定する。
server_name exsample.com;
# 中略
location /prometheus/ {
proxy_pass http://localhost:3002/;
}
これで "https://exsample.com/prometheus/" にきたアクセスを "http://localhost:3002/" に飛ばすということが正常に行えるようになる。