thanks弊プロジェクトでprometheusのあるエラーログから発生するメモリリークによりPodが再起動を繰り返す事象に悩まされたが解消できたので経緯も含めてナレッジとして共有。prometheus弊プロジェクトではkubernetes上で稼働するコンテナのメトリクスをprometheusで収集している。prometheusも例外なくkubernetest上で動くpodの1つ。モニタリングはstackdriverを利用しているのでstackdriver-prometheus-sidecarをサイドカーに置いてメトリクスをstackdriverに送っている。/dataに蓄積されるメトリクスの保存期間を短くしていた。/dataのデータがrotationされずメモリリークを起こしていた。発生していた事象prometheusは収集したメトリクスを一定期間ごとにブロックディレクトリを作成して分割していく。前述したとおりデータを長く保持する必要がないので保持期間の設定を短くしていたが実際には期限切れのデータが消えていなかった。(rotationされていなかった)徐々にブロック内のデータが大きくなりrotation時に利用するメモリが肥大化したことが原因と予想される次のようなエラーログとともにpodのメモリ利用量も右肩上がりになっていた。memoryのログが出力され始める。Podのメモリ推移のグラフ以下のようになっていた。※12PMでPodの再デプロイをしている。storage.tsdb.retension.timeだけであったが追加でstorage.tsdb.min-block-durationも追加した。"--web.enable-lifecycle"prometheusのコードを見るとブロックディレクトリ内のmeta.jsonにあるmaxTimeを判定に入れていることがわかる。wal01DYS17xxxxxのディレクトリが複数ある。※12PM以降に対策を入れた新しいPodをデプロイしている。Whiteplain。