Promtailで収集したログとタイムスタンプを一致させる
Promtailはデフォルトの設定のままだとのログを収集した時刻をタイムスタンプとして扱います。 ログに出力されている時刻をタイムスタンプとして扱えるようにするには設定が必要です。
Promtailの設定
Promtailのドキュメントに載っている設定例をベースにします。
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /var/log/positions.yaml
client:
url: http://ip_or_hostname_where_Loki_run:3100/loki/api/v1/push
scrape_configs:
- job_name: system
pipeline_stages:
static_configs:
- targets:
- localhost
labels:
job: varlogs
host: yourhost
__path__: /var/log/*.log
pipeline_stagesを変更します。
pipeline_stages:
- match:
selector: '{job=~".*"}'
stages:
- regex:
expression: '^(?P<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) .*$'
- timestamp:
source: time
format: "2006-01-02 03:04:05.000"
location: Asia/Tokyo
matchルールのregexでタイムスタンプを正規表現で指定します。
上記の例ではtime
変数に格納するように指定しています。
これはあとでtimestampのsourceで指定します。
matchルールのtimestampでタイムスタンプを設定します。
sourceにはregexで設定した変数を指定します。
formatでタイムスタンプの形式を指定します。 事前定義されたフォーマットが使える場合はRFC1123、RFC3339Nanoなどの文字列も指定できますが自分で指定することもできます。
お好みでlocationにタイムゾーンを指定します。
Promtailを再起動すると反映されます。
コメントする