LoginSignup
1
0

More than 1 year has passed since last update.

InfluxDBをGCPで動かす。

Last updated at Posted at 2021-12-11

はじめに

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の設定ファイルを以下の通り作成する。

influxdb.conf
[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ファイルを作成することで作ることは可能である。

/etc/nginx/conf.d/https.conf
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のサービスであのように料金設定している理由に納得がいった。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0