首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Promtail多行不合并堆栈跟踪。

Promtail多行不合并堆栈跟踪。
EN

Stack Overflow用户
提问于 2021-12-17 11:18:04
回答 1查看 2.6K关注 0票数 1

Promtail,Grafana,Loki版本为2.4.1。跑步是库伯内特斯。

我在跟踪文档

  • 日志中的异常与正则表达式匹配。(ZeroWidthSpace位于日志行的开头)
  • 多行级设置参见附加配置(promtail.yaml)

我原以为错误堆栈跟踪会出现在grafana/loki中的一个条目中,但是每一行都是一个单独的条目。我是不是漏掉了些秘密?

代码语言:javascript
运行
复制
# cat /etc/promtail/promtail.yaml 
server:
  log_level: info
  http_listen_port: 3101

client:
  url: http://***-loki:3100/loki/api/v1/push
  

positions:
  filename: /run/promtail/positions.yaml

scrape_configs:
  # See also https://github.com/grafana/loki/blob/master/production/ksonnet/promtail/scrape_config.libsonnet for reference
  - job_name: kubernetes-pods
    pipeline_stages:
      - multiline:
          firstline: ^\x{200B}\[
          max_lines: 128
          max_wait_time: 3s
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      - source_labels:
          - __meta_kubernetes_pod_controller_name
        regex: ([0-9a-z-.]+?)(-[0-9a-f]{8,10})?
        action: replace
        target_label: __tmp_controller_name
      - source_labels:
          - __meta_kubernetes_pod_label_app_kubernetes_io_name
          - __meta_kubernetes_pod_label_app
          - __tmp_controller_name
          - __meta_kubernetes_pod_name
        regex: ^;*([^;]+)(;.*)?$
        action: replace
        target_label: app
      - source_labels:
          - __meta_kubernetes_pod_label_app_kubernetes_io_component
          - __meta_kubernetes_pod_label_component
        regex: ^;*([^;]+)(;.*)?$
        action: replace
        target_label: component
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_node_name
        target_label: node_name
      - action: replace
        source_labels:
        - __meta_kubernetes_namespace
        target_label: namespace
      - action: replace
        replacement: $1
        separator: /
        source_labels:
        - namespace
        - app
        target_label: job
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_name
        target_label: pod
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_container_name
        target_label: container
      - action: replace
        replacement: /var/log/pods/*$1/*.log
        separator: /
        source_labels:
        - __meta_kubernetes_pod_uid
        - __meta_kubernetes_pod_container_name
        target_label: __path__
      - action: replace
        regex: true/(.*)
        replacement: /var/log/pods/*$1/*.log
        separator: /
        source_labels:
        - __meta_kubernetes_pod_annotationpresent_kubernetes_io_config_hash
        - __meta_kubernetes_pod_annotation_kubernetes_io_config_hash
        - __meta_kubernetes_pod_container_name
        target_label: __path__
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-17 13:10:54

事实证明,这些日志看起来与我们在镜头吊舱日志或kubectl logs {pod}中看到的不一样。

promtail使用的原始日志可以在主机上找到:

代码语言:javascript
运行
复制
minikube ssh
cat /var/log/pods/{namespace}_{pod}/{container}/0.log

它们看起来是这样的:

代码语言:javascript
运行
复制
{"log":"​[default-nioEventLoopGroup-1-1] INFO  HTTP_ACCESS_LOGGER - \"GET /health/readiness HTTP/1.1\" 200 523\n","stream":"stdout","time":"2021-12-17T12:26:29.702621198Z"}

因此,firstline regexp没有匹配任何日志行。不幸的是,在promtail日志中没有这方面的错误。

这是码头日志格式,有一个管道阶段来解析这个文件:

代码语言:javascript
运行
复制
- docker: {}

此外,日志中也有一个问题。在多行堆栈跟踪中有额外的行中断,因此这个附加的管道阶段对它们进行筛选:

代码语言:javascript
运行
复制
- replace:
   expression: '(\n)'
   replace: ''

所以我的工作配置如下所示:

代码语言:javascript
运行
复制
server:
  log_level: info
  http_listen_port: 3101

client:
  url: http://***-loki:3100/loki/api/v1/push
  

positions:
  filename: /run/promtail/positions.yaml

scrape_configs:
  # See also https://github.com/grafana/loki/blob/master/production/ksonnet/promtail/scrape_config.libsonnet for reference
  - job_name: kubernetes-pods
    pipeline_stages:
      - docker: {}
      - multiline:
          firstline: ^\x{200B}\[
          max_lines: 128
          max_wait_time: 3s
      - replace:
          expression: (\n)
          replace: ""

#config continues below (not copied)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70392351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档