美文网首页
使用loki+promtail+grafana收集展示docke

使用loki+promtail+grafana收集展示docke

作者: pilisiyang | 来源:发表于2023-11-02 11:49 被阅读0次

    介绍

    • Grafana 提供 Loki 中捕获的日志行的可视化与搜索平台。
    • Loki 是日志记录存储与检索引擎。
    • Promtail 做为日志采集器,从 flog 中抓取日志行,并通过网关将它们推送给 Loki。

    Promtail 是运行环境的代理(或客户端),它捕获日志行并通过网关将它们推送到 Loki 集群。在典型环境中,生成日志的应用程序和代理一起运行,但位置与 Loki 集群不同。Grafana 提供了一种对 Loki 中存储的日志进行查询并可视化查询结果的方法。

    部署

    通过docker-compose的方式部署服务

    version: "3"
    
    networks:
      loki:
    
    services:
      loki:
        image: grafana/loki:2.9.0
        ports:
          - "3100:3100"
        command: -config.file=/etc/loki/local-config.yaml
        networks:
          - loki
    
      promtail:
        image: grafana/promtail:2.9.0
        volumes:
          - /var/lib/docker/containers:/var/lib/docker/containers:ro
          - /var/run/docker.sock:/var/run/docker.sock
          - /data/softs/grafana_promtail_loki/promtail:/etc/promtail
        command: -config.file=/etc/promtail/promtail-docker-config.yaml
        networks:
          - loki
    
      grafana:
        environment:
          - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
          - GF_AUTH_ANONYMOUS_ENABLED=true
          - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
        entrypoint:
          - sh
          - -euc
          - |
            mkdir -p /etc/grafana/provisioning/datasources
            cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
            apiVersion: 1
            datasources:
            - name: Loki
              type: loki
              access: proxy
              orgId: 1
              url: http://loki:3100
              basicAuth: false
              isDefault: true
              version: 1
              editable: false
            EOF
            /run.sh
        image: grafana/grafana:latest
        ports:
          - "3000:3000"
        networks:
          - loki
          
    

    loki

    使用默认配置

    auth_enabled: false # 是否启用鉴权
    
    server:
      http_listen_port: 3100 # http访问端口
    
    common:
      path_prefix: /loki
      storage:
        filesystem:
          chunks_directory: /loki/chunks # 记录块存储目录,默认chunks块上的日志数量或到期后,将chunks数据打标签后存储
          rules_directory: /loki/rules # 规则配置目录
      replication_factor: 1
      ring:
        kvstore:
          store: inmemory
    
    schema_config:  # 配置索引信息
      configs:
        - from: 2020-10-24
          store: boltdb-shipper
          object_store: filesystem
          schema: v11
          index:
            prefix: index_  # 索引前缀
            period: 24h  # 索引时长
    
    ruler:
      alertmanager_url: http://localhost:9093 # 告警通知url
    
    # By default, Loki will send anonymous, but uniquely-identifiable usage and configuration
    # analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/
    #
    # Statistics help us better understand how Loki is used, and they show us performance
    # levels for most users. This helps us prioritize features and documentation.
    # For more information on what's sent, look at
    # https://github.com/grafana/loki/blob/main/pkg/usagestats/stats.go
    # Refer to the buildReport method to see what goes into a report.
    #
    # If you would like to disable reporting, uncomment the following lines:
    #analytics:
    #  reporting_enabled: false
    

    promtail

    1. 默认配置,可以通过挂载/var/log目录获取主机日志
    server:
      http_listen_port: 9080
      grpc_listen_port: 0
    
    positions:
      filename: /tmp/positions.yaml # 用于记录每次读取日志文件的索引行数,如:promtail重启后从该配置中恢复日志文件的读取位置
    
    clients:
      - url: http://loki:3100/loki/api/v1/push # 推送日志流到Loki中的api
    
    scrape_configs: # 发现日志文件的位置并从中提取标签
    - job_name: system  # 任务名称
      static_configs: # 目录配置
      - targets: # 标签
          - localhost
        labels:
          job: varlogs # 子任务名称,通常以项目命令
          __path__: /var/log/*log # 要读取的日志文件的位置,允许使用通配符/*log或/**/*.log
    
    1. 通过docker
      使用docker_sd_configs提供程序,并仅筛选具有docker标签logging=promtail的docker容器,一旦我们获得这些日志,我们就会重新标记我们的标签以包含容器名称,我们还使用docker标签如log_stream和logging_jobname来为我们的日志添加标签。
      promtail-docker-config.yaml
    server:
      http_listen_port: 9080
      grpc_listen_port: 0
    
    positions:
      filename: /tmp/positions.yaml
    
    clients:
      - url: http://loki:3100/loki/api/v1/push
    
    scrape_configs:
      - job_name: flog_scrape
        docker_sd_configs:
          - host: unix:///var/run/docker.sock
            refresh_interval: 5s
            filters:
              - name: label
                values: ["logging=promtail"]
        relabel_configs:
          - source_labels: ['__meta_docker_container_name']
            regex: '/(.*)'
            target_label: 'container'
          - source_labels: ['__meta_docker_container_log_stream']
            target_label: 'logstream'
          - source_labels: ['__meta_docker_container_label_logging_jobname']
            target_label: 'job'
    

    在容器上添加标签 logging: "promtail"

    访问

    访问http://ip:3000,点击菜单 Explore,即可查看日志,通过Label filters选择 container,查看各个容器日志

    相关文章

      网友评论

          本文标题:使用loki+promtail+grafana收集展示docke

          本文链接:https://www.haomeiwen.com/subject/nbkgvdtx.html