简体   繁体   English

使用 Grafana/loki 处理 json 日志

[英]Process json logs with Grafana/loki

I have set up Grafana, Prometheus and loki (2.6.1) as follows on my kubernetes (1.21) cluster:我在我的 kubernetes (1.21) 集群上设置了 Grafana、Prometheus 和 loki (2.6.1),如下所示:

helm upgrade --install promtail grafana/promtail -n monitoring -f monitoring/promtail.yaml
helm upgrade --install prom prometheus-community/kube-prometheus-stack -n monitoring --values monitoring/prom.yaml
helm upgrade --install loki grafana/loki -n monitoring --values monitoring/loki.yaml

with:和:

# monitoring/loki.yaml
loki:
  schemaConfig:
    configs:
    - from: 2020-09-07
      store: boltdb-shipper
      object_store: s3
      schema: v11
      index:
        prefix: loki_index_
        period: 24h

  storageConfig:
    aws:
      s3: s3://eu-west-3/cluster-loki-logs
    boltdb_shipper:
      shared_store: filesystem
      active_index_directory: /var/loki/index
      cache_location: /var/loki/cache
      cache_ttl: 168h

# monitoring/promtail.yaml
config:
  serverPort: 80
  clients:
    - url: http://loki:3100/loki/api/v1/push

# monitoring/prom.yaml
prometheus:
  prometheusSpec:
    serviceMonitorSelectorNilUsesHelmValues: false
    serviceMonitorSelector: {}
    serviceMonitorNamespaceSelector:
      matchLabels:
        monitored: "true"

grafana:
  sidecar:
    datasources:
      defaultDatasourceEnabled: true
  additionalDataSources:
    - name: Loki
      type: loki
      url: http://loki.monitoring:3100

I get data from my containers, but, whenever I have a container logging in json format, I can't get access to the nested fields:我从我的容器中获取数据,但是,每当我有一个以 json 格式记录的容器时,我都无法访问嵌套字段:

{app="product", namespace="api-dev"} | unpack | json

Yields:产量:

在此处输入图像描述

My aim is, for example, to filter by log.severity例如,我的目标是按log.severity过滤

Actually, following this answer , it occurs to be a promtail scraping issue.实际上,按照这个答案,它恰好是一个promtail抓取问题。

The current ( promtail-6.3.1 / 2.6.1) helm chart default is to have cri as pipeline's stage, which expects this kind of logs:当前 ( promtail-6.3.1 / 2.6.1) helm chart 默认是cri作为管道的阶段,它需要这种日志:

"2019-04-30T02:12:41.8443515Z stdout xx message"

I should have use docker , which expects json, consequently, my promtail.yaml changed to:我应该使用docker ,它期望 json,因此,我的promtail.yaml更改为:

config:
  serverPort: 80
  clients:
    - url: http://loki:3100/loki/api/v1/push
  snippets:
    pipelineStages:
      - docker: {}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM