首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes promtail sidecar:如何从父荚元数据中获取标签

Kubernetes promtail sidecar:如何从父荚元数据中获取标签
EN

Stack Overflow用户
提问于 2021-12-15 16:29:29
回答 1查看 1.2K关注 0票数 1

我有一些kubernetes应用程序可以登录到文件中,而不是stdout/stderr,并且我使用Promtail sidecars收集它们。但是,由于sidecars使用"localhost“目标执行,所以我没有一个kubernetes_sd_config为我将pod元数据应用于标签。所以我不得不静态地声明我的标签。

代码语言:javascript
复制
# ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app: promtail
  name: sidecar-promtail
data:
  config.yml: |
    client:
      url: http://loki.loki.svc.cluster.local:3100/loki/api/v1/push
      backoff_config:
        max_period: 5m
        max_retries: 10
        min_period: 500ms
      batchsize: 1048576
      batchwait: 1s
      external_labels: {}
      timeout: 10s
    positions:
      filename: /tmp/promtail-positions.yaml
    server:
      http_listen_port: 3101
    target_config:
      sync_period: 10s
    scrape_configs:
    - job_name: sidecar-logs
      static_configs:
        - targets:
          - localhost
          labels:
            job: sidecar-logs
            __path__: "/sidecar-logs/*.log"

----
# Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-logger
spec:
  selector:
    matchLabels:
      run: test-logger
  template:
    metadata:
      labels:
        run: test-logger
    spec:
      volumes:
        - name: nfs
          persistentVolumeClaim:
            claimName: nfs-claim
        - name: promtail-config
          configMap:
            name: sidecar-promtail
      containers:
        - name: sidecar-promtail
          image: grafana/promtail:2.1.0
          volumeMounts:
            - name: nfs
              mountPath: /sidecar-logs
            - mountPath: /etc/promtail
              name: promtail-config
        - name: simple-logger         
          image: foo/simple-logger
          volumeMounts:
            - name: nfs
              mountPath: /logs

根据父荚的元数据对收集到的日志贴上标签的最佳方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-01-06 19:55:54

您可以执行以下操作:

在sidecar容器中,将所需的荚名、节点名和其他信息作为环境变量公开,然后添加标志'-config.expand-env',以便在promtail配置文件中启用环境扩展,例如:

代码语言:javascript
复制
...
- name: sidecar-promtail
  image: grafana/promtail:2.1.0
  # image: grafana/promtail:2.4.1 # use this one if environment expansion is not available in 2.1.0
  args:
    # Enable environment expansion in promtail config file
    - '-config.expand-env'
  env:
    - name: NODE_NAME
      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
    - name: POD_NAME
      valueFrom:
        fieldRef:
          fieldPath: metadata.name
...

然后在configMap中,将环境变量添加到static_config标签中:

代码语言:javascript
复制
...
    scrape_configs:
    - job_name: sidecar-logs
      static_configs:
        - targets:
          - localhost
          labels:
            job: sidecar-logs
            pod: ${POD_NAME}
            node_name: ${NODE_NAME}
            __path__: "/sidecar-logs/*.log"
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70367116

复制
相关文章

相似问题

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