首页 > 其他分享 >loki采集k8s日志

loki采集k8s日志

时间:2023-11-09 15:04:08浏览次数:32  
标签:promtail name pods loki 日志 k8s config containers

前言
  • loki 是轻量、易用的日志聚合系统。如果你的k8s集群规模并不大,推荐使用grafana+loki的方案来做微服务日志的采集;
Loki组成
  • loki架构很简单,主要由3部分组成:
  • loki:服务端,负责存储日志和处理查询;
  • promtail:采集端,负责采集日志发送给loki;
  • grafana:负责采集日志的展示;
promtail.yml

kubectl apply -f promtail.yml  

注意: 使用前,请删掉promtail.yml中的中文注释


---
apiVersion: v1
kind: ConfigMap
metadata:
  name: promtail-configmap
data:
  promtail-config.yml: |
    server:
      http_listen_port: 9080
      grpc_listen_port: 0

    positions:
      filename: /tmp/positions.yaml

    clients:
    - url: https://{YOUR_LOKI_ENDPOINT}/loki/api/v1/push  #输入自己的loki地址

    scrape_configs:
    - job_name: containers
      static_configs:
      - targets:
        - localhost
        labels:
          log_from: static_pods
          __path__: /var/log/pods/*/*/*.log
      pipeline_stages:
      - docker: {}
      - match:
          selector: '{log_from="static_pods"}'
          stages:
          - regex:
              source: filename
              expression: "(?:pods)/(?P<namespace>\\S+?)_(?P<pod>\\S+)-\\S+?-\\S+?\\S+?/(?P<container>\\S+?)/"
          - labels:
              namespace:
              pod:
              container:
      - match:
          selector: '{namespace!~"(default|kube-system|kube-systemen)"}'   #输入自己的命名空间
          action: drop
          drop_counter_reason: no_use
          
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: promtail
  namespace: kube-systemen
spec:
  selector:
    matchLabels:
      name: promtail
  template:
    metadata:
      labels:
        name: promtail
    spec:
      nodeSelector:
        promtail: promtail
      containers:
        - name: promtail
          image: grafana/promtail:2.4.2
          imagePullPolicy: Always
          args:
            - -config.file=/mnt/config/promtail-config.yml
            - -client.external-labels=hostip=$(NODE_IP),hostname=$(NODE_NAME),env=STM
          ports:
            - containerPort: 9080
          volumeMounts:
            - mountPath: /opt/docker/containers
              name: containers-volume
            - mountPath: /var/lib/docker/containers
              name: containers-volumes
            - mountPath: /var/log/pods
              name: pods-volume
            - mountPath: /mnt/config
              name: config-volume
          env: 
          - name: NODE_NAME
            valueFrom:
              fieldRef:
                fieldPath: 'spec.nodeName'
          - name: NODE_IP
            valueFrom:
              fieldRef:
                fieldPath: 'spec.nodeIP'
                
      volumes:
        - name: containers-volume
          hostPath:
            path: /opt/docker/containers
        - name: containers-volumes
          hostPath:
            path: /var/lib/docker/containers
        - name: pods-volume
          hostPath:
            path: /var/log/pods
        - name: config-volume
          configMap:
            name: promtail-configmap
            items: 
              - key: promtail-config.yml
                path: promtail-config.yml
      tolerations:
        - key: node-role.kubernetes.io/master
          operator: Exists
          errect: NoSchedule

官方文档:https://grafana.com/docs/loki/latest/send-data/promtail/installation/



标签:promtail,name,pods,loki,日志,k8s,config,containers
From: https://blog.51cto.com/u_11873474/8279125

相关文章

  • k8s通过sidecar模式收集pod的容器日志至ELK
    架构:已完成的部署1、ES集群及kibana部署 https://blog.51cto.com/yht1990/60809812、kafaka+zookeeper集群 https://blog.51cto.com/yht1990/6081518准备sidecar镜像(filebeat)找一台服务器打镜像[root@yw-testfilebeat]#catDockerfileFROMdocker.elastic.co/beats/f......
  • 运行k8s
      这个总算全部都run起来了,记录下要点,如果flannel一直显示crashloopback: ......
  • DHorse(K8S的CICD平台)的实现原理
    综述首先,本篇文章所介绍的内容,已经有完整的实现,可以参考这里。在微服务、DevOps和云平台流行的当下,使用一个高效的持续集成工具也是一个非常重要的事情。虽然市面上目前已经存在了比较成熟的自动化构建工具,比如jekines,还有一些商业公司推出的自动化构建工具,但他们都不能够很好的......
  • salt自定义模块内使用日志例子
    如果你想要在你的SaltMinion中使用自定义的Salt模块并且记录日志,你可以创建一个自定义Salt模块,并在模块中使用Python的标准`logging`库来记录日志。以下是一个示例:首先,在SaltMaster上创建一个自定义模块的目录,例如`/srv/salt/_modules/`。然后在该目录中创建一个Python文件,例......
  • 通过日志恢复SQL Server的历史数据
    通过日志还原方案一:前提条件1.必须有一个完整的备份,且这个备份必须是在修改、删除数据之前做的。2.在更新、删除数据之后,做日志备份,该log备份将用于还原之前的数据建议使用备份数据库进行还原操作,确认无误再对原库进行操作,或同步数据开始还原操作:此处使用SQLmanagement界......
  • mysql8.x通过备份文件及binlog日志恢复数据
    问题简述记一次mysql数据库被误删(是整个库被删了)后的还原前提条件数据库版本为mysql8.x以上具有库被删除前的完整备份数据库开启binlog还原步骤第一步:通过完整备份还原被删的库注意事项:还原后切勿让其他用户连接,操作数据库。待使用binlog日志恢复数据后再对库进行操作,否......
  • 209-logback-spring.xml,指定日志输出到指定文件
    logback-spring.xml,指定日志输出到指定文件<configuration><!--定义日志输出路径--><propertyname="LOG_HOME"value="/path/to/log/directory"/><!--定义日志格式--><propertyname="LOG_PATTERN"value=......
  • openGauss学习笔记-118 openGauss 数据库管理-设置数据库审计-维护审计日志
    openGauss学习笔记-118openGauss数据库管理-设置数据库审计-维护审计日志118.1前提条件用户必须拥有审计权限。118.2背景信息与审计日志相关的配置参数及其含义请参见表1。表1审计日志相关配置参数配置项含义默认值audit_directory审计文件的存储目录。/......
  • Python如何将日志输入到文件里
    要将日志输出到文件中,你可以使用Python标准库的`logging`模块。以下是一个示例,演示如何配置`logging`模块来记录日志到文件:```pythonimportlogging#配置日志log_file='/path/to/your/logfile.log'logging.basicConfig(  filename=log_file,  level=logging.DEBU......
  • 有趣的Java之记录用户操作日志
    Java记录操作日志java自带的日志框架是java.util.logging(JUL),从JDK1.4(2002)开始捆绑在JDK中。可以使用JUL来记录操作日志。以下是使用JUL记录事务的示例://java.util.loggingjava.util.logging.Loggerlogger=java.util.logging.Logger.getLogger(this.getClass().getName());......