Victoria Metricsがよう落ちる

## きっかけ

以前、ラズパイで収集した自宅データをPrometheusで収集、Victoria Metricsで永続化、という記事を書いたのですが、しばらく稼働させていたところ、長期保存も得意と言ってるVictoria Metricsがまさかのダウン。
原因調査、対策までのお話。


Prometheusは元気ということで、Victoria Metricsがどうもダメっぽい。
こんな感じで息も絶え絶え。
（何度も再起動したがすぐに落ちる）

![history.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321595/0f4cd18d-fa50-512c-4e85-314d1fe6dd6e.png)

こちら、以前の記事。

https://qiita.com/reema/items/7865bcf67bf85456a820


２年間保存しようと思ってたのに、全然保たない。。。
```
# cat victoria-metrics.service
[Unit]
Description=Victoria Metrics
Before=prometheus.service

[Service]
User=prometheus
ExecStart=/usr/local/bin/victoria-metrics-prod \
  -storageDataPath /var/lib/victoria/ \
  -retentionPeriod=24 

[Install]
WantedBy=multi-user.target
```



## 環境

- Raspberry Pi 3 Model B+
- Raspbian GNU/Linux 10 (buster)

構成として
（センサー）->（Pythonスクリプト）->（Node Exporter）->（Prometheus）->（Victoria Metrics）->（Grafana）
な感じです。
グラフの「１かい」は上記ラズパイ３、「３かい」は別に置いてるラズパイzeroで収集。


## 調査

/var/log/syslogにこんなのが。

```
Sep 18 17:05:14 rasp3 victoria-metrics-prod[379]: 2022-09-18T08:05:14.695Z#011panic#011VictoriaMetrics/lib/fs/dir_remover.go:50#011FATAL: cannot remove "/var/lib/victoria/data/small/2022_09/tmp/1715E5652798B8B9": openfdat /var/lib/victoria/data/small/2022_09/tmp/1715E5652798B8B9: too many open files
Sep 18 17:05:14 rasp3 victoria-metrics-prod[379]: panic: FATAL: cannot remove "/var/lib/victoria/data/small/2022_09/tmp/1715E5652798B8B9": openfdat /var/lib/victoria/data/small/2022_09/tmp/1715E5652798B8B9: too many open files
Sep 18 17:05:14 rasp3 victoria-metrics-prod[379]: goroutine 362 [running]:

（中略）

Sep 18 17:05:14 rasp3 systemd[1]: victoria-metrics.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Sep 18 17:05:14 rasp3 systemd[1]: victoria-metrics.service: Failed with result 'exit-code'.
Sep 18 17:05:17 rasp3 prometheus[385]: ts=2022-09-18T08:05:17.359Z caller=dedupe.go:112 comp
```

「too many open files」だって。
えーっとこれなんだっけ。。。と色々ググってたら、ファイルディスクリプタの問題だと気づく。
（LPICでやったのに忘却の彼方）

変更前のファイルディスクリプタはというと、1024。
524288はハードリミットなので、1024でハネられることになる。

```
# cat /proc/（Victoria Metoricsのpid）/limits | grep 'Max open'
Max open files            1024                 524288               files 
```

## 対策

こちらを参考にさせていただき、変更してみる。

https://oji-cloud.net/2022/03/16/post-6951/

systemdのデーモンのファイルディスクリプタは/etc/security/limits.confをいじっても無駄だよ、ということでサービスの構成ファイルとして追加してあげる。

```
# mkdir /etc/systemd/system/victoria-metrics.service.d
# vi /etc/systemd/system/victoria-metrics.service.d/00-limits.conf
```

/etc/systemd/system/victoria-metrics.service.d/00-limits.confの中身
とりあえず65536としてみた。（適当。）

```
[Service]
LimitNOFILE=65536:65536
```

修正後、反映

```
# systemctl daemon-reload
# systemctl start victoria-metrics
# systemctl status victoria-metrics
● victoria-metrics.service - Victoria Metrics
   Loaded: loaded (/etc/systemd/system/victoria-metrics.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/victoria-metrics.service.d
           └─00-limits.conf
   Active: active (running) since Sun 2022-09-18 23:19:30 JST; 3s ago
 Main PID: 4450 (victoria-metric)
    Tasks: 9 (limit: 2059)
   CGroup: /system.slice/victoria-metrics.service
           └─4450 /usr/local/bin/victoria-metrics-prod -storageDataPath /var/lib/victoria/ -retentionPeriod=24

Sep 18 23:19:32 rasp3 victoria-metrics-prod[4450]: 2022-09-18T14:19:32.152Z        info        VictoriaMetrics/lib/storage/partition.go:1530        opened part "/v
Sep 18 23:19:32 rasp3 victoria-metrics-prod[4450]: 2022-09-18T14:19:32.154Z        info        VictoriaMetrics/lib/storage/partition.go:1530        opened part "/v
Sep 18 23:19:32 rasp3 victoria-metrics-prod[4450]: 2022-09-18T14:19:32.156Z        info        VictoriaMetrics/lib/storage/partition.go:1530        opened part "/v
Sep 18 23:19:32 rasp3 victoria-metrics-prod[4450]: 2022-09-18T14:19:32.195Z        info        VictoriaMetrics/lib/storage/partition.go:1530        opened part "/v
Sep 18 23:19:32 rasp3 victoria-metrics-prod[4450]: 2022-09-18T14:19:32.201Z        info        VictoriaMetrics/app/vmstorage/main.go:105        successfully opened
Sep 18 23:19:32 rasp3 victoria-metrics-prod[4450]: 2022-09-18T14:19:32.223Z        info        VictoriaMetrics/app/vmselect/promql/rollup_result_cache.go:106      
Sep 18 23:19:32 rasp3 victoria-metrics-prod[4450]: 2022-09-18T14:19:32.408Z        info        VictoriaMetrics/app/vmselect/promql/rollup_result_cache.go:132      
Sep 18 23:19:32 rasp3 victoria-metrics-prod[4450]: 2022-09-18T14:19:32.409Z        info        VictoriaMetrics/app/victoria-metrics/main.go:61        started Victo
Sep 18 23:19:32 rasp3 victoria-metrics-prod[4450]: 2022-09-18T14:19:32.409Z        info        VictoriaMetrics/lib/httpserver/httpserver.go:83        starting http
Sep 18 23:19:32 rasp3 victoria-metrics-prod[4450]: 2022-09-18T14:19:32.410Z        info        VictoriaMetrics/lib/httpserver/httpserver.go:84        pprof handler
```

65536に変わった。

```
# cat /proc/4450/limits | grep 'Max open'
Max open files            65536                65536                files 
```

## 結果

変更後、6時間ほど経過したが、元気な様子。

![after.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321595/68a9f63e-f5a4-76c4-9f68-30f95469fbc9.png)

台風が来てるし、気圧がどうなるか気になる。
何もありませんように。。。