ドキュメント読んで普通にやっただけなのにやたら躓いたポイントが多かったのでメモ
環境
Loki: v2.4.1
Monolithic mode
この先修正・変更があるかと思いますのでバージョンを確認してください
ドキュメント
出てくるもの
ruler:
ring: # 今回ここはスルー
kvstore:
store: inmemory
storage:
type: local
local:
directory: /etc/loki/rules
rule_path: /data/rules/rule
wal:
dir: /data/rules/wal
remote_write: # 今回ここはスルー
enabled: true
client:
url: 'prometheusのremote writeエンドポイント'
躓きポイントは3種類のローカルなストレージ
- storage
- ruleの設定ファイルを置くストレージを設定する場所
- 今回はconfigMapをマウントするので、
local
を使用
- rule_path
- storageからrule設定ファイルをコピーして置いておく場所
- 最初storageとの違いがわからなかったけど、storageはs3などのサービスも使えるので、そういう場合は一時的にローカルに保存する流れが必要っぽい(想像)
- wal
- walとはWrite Ahead Logのこと
- https://grafana.com/docs/loki/latest/design-documents/2020-09-write-ahead-log/
- ここではとりあえずローカルにデータを書き込むということがわかっていればヨシ
storage
ここはconfigMapをマウントするんですが、
subPathを使うとなぜか読んでくれない
ので使わずにディレクトリごとでマウントするようにしましょう
理由までは追えてません(なにかわかったら追記したい)
rule_path
ここはstorageからファイルをコピーするので、書き込みが発生します
コンテナのボリュームは読み込み専用でエラーになるので、書き込み可能なボリュームをマウントしてそこのpathを指定しましょう
wal
ここも書き込みが発生するので、書き込み可能なボリュームをマウントしてそこのpathを指定しましょう
デフォルト値のruler-wal
はどこに対しての相対pathになるのか把握してませんが、基本的な構成だとおそらく読み込み専用ボリュームになると思いますので、実質設定必須になります
また、公式ドキュメントではwalの記述箇所はremote_write
の下になってますが、これは何かの間違いで、ruler
の下でないと動作しません
(何かしら修正があるはずですが、2021/12/24 v2.4.1の時点でどっちが本来の正しいものなのかわからないのでアップデートを待ちます)
ちなみにその下のwal_cleanerもruler
の下が正しいです
ストレージに関してはこのあたりを押さえておけばとりあえず変に躓くことはないのではないかなと思います