在 Loki 中删除部分日志
Remove a part of a log in Loki
我已经使用 grafana/loki-stack
.
安装了 Grafana、Loki、Promtail 和 Prometheus
我还使用 Nginx helm chart.
设置了 Nginx
Promtail 正在将日志很好地摄取到 Loki 中,但我想自定义日志的外观。具体来说,我想删除日志的一部分,因为它在尝试使用 logfmt
或 json
(分别为 Error: LogfmtParserErr
和 Error: JsonParserErr
)解析它时会产生错误。
日志如下所示:
2022-02-21T13:41:53.155640208Z stdout F timestamp=2022-02-21T13:41:53+00:00 http_request_method=POST http_response_status_code=200 http_response_time=0.001 http_version=HTTP/2.0 http_request_body_bytes=0 http_request_bytes=63
我想删除 stdout F
的部分,这样日志将如下所示:
2022-02-21T13:41:53.155640208Z timestamp=2022-02-21T13:41:53+00:00 http_request_method=POST http_response_status_code=200 http_response_time=0.001 http_version=HTTP/2.0 http_request_body_bytes=0 http_request_bytes=63
我发现在摄取方面它可能与 Promtail 相关,但是否也可以在 Loki 中进行 LogQL 查询以仅替换该字符串?以及如何为所需的行为设置 Promtail 配置?
Promtail 应配置为用 replace
stage.
替换字符串
这是一个示例配置,它删除了来自命名空间 ingress.
的所有日志的日志的 stdout F
部分
promtail:
enabled: true
pipelineStages:
- docker: {}
- match:
selector: '{namespace="ingress"}'
stages:
- replace:
expression: "(stdout F)"
replace: ""
这个例子特别适用于 grafana/loki-stack
图表。
根据文档,更好的方法是启用 cri 管道阶段而不是 docker 阶段。假设您正在从最近使用 CRI 的 kubernetes 安装中获取日志。
https://grafana.com/docs/loki/latest/clients/promtail/configuration/#cri
我已经使用 grafana/loki-stack
.
我还使用 Nginx helm chart.
设置了 NginxPromtail 正在将日志很好地摄取到 Loki 中,但我想自定义日志的外观。具体来说,我想删除日志的一部分,因为它在尝试使用 logfmt
或 json
(分别为 Error: LogfmtParserErr
和 Error: JsonParserErr
)解析它时会产生错误。
日志如下所示:
2022-02-21T13:41:53.155640208Z stdout F timestamp=2022-02-21T13:41:53+00:00 http_request_method=POST http_response_status_code=200 http_response_time=0.001 http_version=HTTP/2.0 http_request_body_bytes=0 http_request_bytes=63
我想删除 stdout F
的部分,这样日志将如下所示:
2022-02-21T13:41:53.155640208Z timestamp=2022-02-21T13:41:53+00:00 http_request_method=POST http_response_status_code=200 http_response_time=0.001 http_version=HTTP/2.0 http_request_body_bytes=0 http_request_bytes=63
我发现在摄取方面它可能与 Promtail 相关,但是否也可以在 Loki 中进行 LogQL 查询以仅替换该字符串?以及如何为所需的行为设置 Promtail 配置?
Promtail 应配置为用 replace
stage.
这是一个示例配置,它删除了来自命名空间 ingress.
的所有日志的日志的stdout F
部分
promtail:
enabled: true
pipelineStages:
- docker: {}
- match:
selector: '{namespace="ingress"}'
stages:
- replace:
expression: "(stdout F)"
replace: ""
这个例子特别适用于 grafana/loki-stack
图表。
根据文档,更好的方法是启用 cri 管道阶段而不是 docker 阶段。假设您正在从最近使用 CRI 的 kubernetes 安装中获取日志。
https://grafana.com/docs/loki/latest/clients/promtail/configuration/#cri