はじめに
Prometheusの外部保存装置として、InfluxDBというソフトがあるので、それをGCPの一番安いインスタンスで動かして外部保存装置とする。
GCPでインスタンスを立てる
GCPには、VMインスタンスというサービスがあるので、それを使用して、Ubuntuのマシーンを作る。
以下の条件だと、一か月7.11$ぐらいになる
名称 | 設定 | 備考 |
---|---|---|
リージョン | us-central1 | アイオワ |
シリーズ | E2 | |
マシンタイプ | e2-micro | 2 vCPU, 1GB |
image | Ubuntu 20.04 |
作成後、SSHでターミナルでアクセスを行いその環境下で作業を行う。
SWAPの設定
デフォルトのままだと、InfluxDBがメモリを食いつぶす可能性があるため、
SWAPが使えるようにするため、SWAP機能を使用して、ディスクを使用し使えるメモリの量を以下のコマンドで増やす
sudo fallocate -l 1G /swap
sudo chmod 600 /swap
sudo mkswap /swap
sudo swapon /swap
/etc/fstab
に以下のテキストを追加して、再起動してもSWAPが有効にする
/swap none swap sw 0 0
InfluxDBを起動
InfluxDBのサーバを立てるのに、コンテナを使用すると作業が行いやすいので、Podmanのインストールを行いその環境下でInfluxDBのコンテナを立ち上げる。
Podmanのインストール
OS=xUbuntu_20.04
VERSION=1.22
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -
apt-get update
apt-get install podman
InfuxDBの起動
influxdbの設定ファイルを以下の通り作成する。
[meta]
dir = "/var/lib/influxdb/meta"
[data]
dir = "/var/lib/influxdb/data"
engine = "tsm1"
wal-dir = "/var/lib/influxdb/wal"
cache-max-memory-size = "512m"
cache-snapshot-memory-size = "10m"
compact-full-write-cold-duration = "1h"
max-concurrent-compactions = 1
compact-throughput = "12m"
compact-throughput-burst = "12m"
max-values-per-tag = 25000
max-series-per-database = 250000
max-index-log-file-size = "256k"
series-id-set-cache-size = 25
[http]
# auth-enabled = true #認証できるユーザを作成したら有効にする
max-body-size = 12500000
[logging]
label = "error"
podman run --name=influxdb -p 8086:8086 -d -v $PWD/influxdb:/var/lib/influxdb -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro influxdb:1.8.10
上の設定で、InfluxDBのサーバを作成完了する。
サービスの公開について
firewallで8086ポートを開放するか、nginxなどのソフトで、8086へのリバースプロキシを設定することで、サービスを公開できる。
一応、以下のようにnginxのconfigファイルを作成することで作ることは可能である。
erver {
listen 443 ssl;
ssl_certificate /key/server.crt;
ssl_certificate_key /key/server.key;
location / {
proxy_pass http://localhost:8080/;
}
location /api/v1/prom/ {
proxy_pass http://localhost:8086/api/v1/prom/;
}
}
上記ファイルで、3000ポートに割り振っているのはgrafanaを3000ポートで解放しているため、振り分けできるようにした。
サービスを運用してみての感想
Prometheusから、InfluxDBサーバにむけてデータ送信する運用を試してたけど、
早いときで1日、持っても5日ぐらいと結構短い期間でInfluxDBによる負荷がかかりすぎて、InfluxDBのコンテナが落ちた。
設定次第では、落ちないように変更できるかもしれないが、InfluxDB側の設定では難しいので、
送信するPrometheusをいじって必要最低限しか送信しないほうが良いかもしれない。
また、これを実行してみるとDBサーバって意外に落ちることが分かってAWSやGCPのサービスであのように料金設定している理由に納得がいった。