LoginSignup
0
0

More than 1 year has passed since last update.

[Loki] docker/cri両用config

Last updated at Posted at 2021-12-02

kubernetesを運用している皆さん、ランタイム移行はお済みでしょうか

私も運用しているEKSのnodeをdockerからcontainerdに移行するために諸々調整をしています

この移行にあたって、変更が大きくて面倒だな思っているのが、ログのフォーマットです
dockerはjsonだったのですが、criはそうではなくなっているので、同じconfigは使えません
それぞれのランタイムのnodeが混在する時期がある場合、それぞれのフォーマットに対応したconfigを作成して、それぞれのconfigを使用するdaemonsetを用意して、taintsを活用してdeployするnodeを指定して…
と、ちょっと面倒、できるならひとつで済ませたい


私はログの保存にLokiを使用しているのですが、promtailのconfigにはdockerもcriもプリセットのparserが用意されています

https://grafana.com/docs/loki/latest/clients/promtail/stages/docker/
https://grafana.com/docs/loki/latest/clients/promtail/stages/cri/

これがあるのでpromtailのpipeline_stagesには

- docker: {}

とか

- cri: {}

とか書いておけば細かい設定をしないならこれで事足ります
これって両方書いたらどっちもいい感じにparseしてくれるのでは…と思ったのですが結果としてはうまく出力できませんでした
両方ともparseすると、ログ本文・ストリーム・タイムスタンプの3つのフィールドが作られるのですが
docker の場合はログ本文のキーが output なのに対して、 cri の場合は content となっているあたりがダメな原因なのでしょうか?

そしてこの docker と cri それぞれ以下の設定のエイリアスになっているだけなので

docker
- json:
    output: log
    stream: stream
    timestamp: time
- labels:
    stream:
- timestamp:
    source: timestamp
    format: RFC3339Nano
- output:
    source: output
cri
- regex:
    expression: "^(?s)(?P<time>\\S+?) (?P<stream>stdout|stderr) (?P<flags>\\S+?) (?P<content>.*)$",
- labels:
    stream:
- timestamp:
    source: time
    format: RFC3339Nano
- output:
    source: content

この2つを組み合わせて

- json:
    expressions:
      content: log
      stream:
      time:
- regex:
    expression: "^(?s)(?P<time>\\S+?) (?P<stream>stdout|stderr) (?P<flags>\\S+?) (?P<content>.*)$"
- labels:
    stream:
- timestamp:
    source: time
    format: RFC3339Nano
- output:
    source: content

とすると、docker/cri両方で使えるconfigになるはずです、たぶん…
jsonとregex両方ある部分がそこはかとなく怪しいですが、なんとなくいい感じにやってくれてるようで、今のとこ問題なく動いてます

fluent-bitとかはちょっと難しそうでしたね、残念

0
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
0
0