zoukankan      html  css  js  c++  java
  • docker容器使用loki收集日志

    docker-compose安装loki套件(loki+promtail+grafana)

    loki进行日志聚合处理  类似elk中的es

    promtail是日志收集,类似elk中的logstash filebeat等,如果是只收集docker容器的日志则可以用loki的docker plugin替代

    grafana是日志显示,类似elk中的kibana,可以通过各种标签和表达式过滤显示日志

    docker-compose.yml内容如下

    version: "3"
    
    networks:
      loki:
    
    services:
      loki:
        image: grafana/loki
        restart: always
        environment:
        - TZ=Asia/Shanghai
        - LANG=zh_CN.UTF-8
        ports:
        - 3100:3100
        networks:
        - loki
    
      promtail:
        image: grafana/promtail
        restart: always
        environment:
        - TZ=Asia/Shanghai
        - LANG=zh_CN.UTF-8
        networks:
        - loki
      
      grafana:
        image: grafana/grafana:master
        restart: always
        environment:
        - TZ=Asia/Shanghai
        - LANG=zh_CN.UTF-8
        ports:
        - 3000:3000
        networks:
        - loki

    如果只用docker plugin来收集日志则可以把promtail部分删除,已经有grafana的也可以直接复用

    安装loki的docker plugin

    命令行运行

    docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions

    对于loki的docker plugin有两种使用方式。

    • 配置daemon.json,收集此后创建的所有容器的日志(注意,是配置daemon.json后重启docker服务后创建的容器才会把日志输出到loki)。
    • 新建容器时指定logging类型为loki,这样只有指定了logging的容器才会输出到loki

    全局收集配置

    编辑daemon.json。linux下默认路径是/etc/docker/daemon.json (需要sudo), windows则默认是%userprofile%.dockerdaemon.json

    {
      "log-driver": "loki",
      "log-opts": {
        "loki-url": "http://YOUR_IP:3100/loki/api/v1/push",
        "max-size": "50m",
        "max-file": "10"
      },
      "registry-mirrors": ["https://registry.docker-cn.com"]
    }

    记得把YOUR_IP换成loki所在主机的IP,一般都是本机的局域网地址,如果loki映射的端口换了记得这里也需要换。镜像仓库地址也可以换成自己云服务的。

    其中max-size表示日志文件最大大小,max-file表示最多10个日志文件,都是对单个容器来说的。

    然后重启docker服务。

    sudo systemctl restart docker

    在此之后创建的容器默认都会把日志发送到loki。

    如果不全局配置,而只想特定的容器进行日志收集,则根据启动容器的方式,有两种配置方法。

    docker run配置日志输出到loki

    通过docker run启动容器,可以通过--log-driver来指定为loki。示例如下

    docker run --rm --name=grafana --log-driver=loki --log-opt loki-url="http://YOUR_IP:3100/loki/api/v1/push" --log-opt max-size=50m --log-opt max-file=10 grafana/grafana
    --log-driver=loki指定日志驱动器为loki
    --log-opt loki-url则指定了loki的url
    --log-opt max-size日志最大大小
    --log-opt max-file日志文件最大数量

    docker-compose 配置日志输出到loki

    docker-compose 小于3.4可以对需要日志输出的配置添加配置如下

    logging:
      driver: loki
      options:
        loki-url: "http://YOUR_IP:3100/loki/api/v1/push"
        max-size: "50m"
        max-file: "10"

    注意:max-size和max-file这里需要加引号

    对于3.4极其以上版本可以通过定义模板来减少代码量

    version: "3.4"
    
    x-logging:
      &loki-logging
      driver: loki
      options:
        loki-url: "http://YOUR_IP:3100/loki/api/v1/push"
        max-size: "50m"
        max-file: "10"
    
    services:
      host:
        container_name: grafana
        image: grafana/grafana
        environment:
        - TZ=Asia/Shanghai
        - LANG=zh_CN.UTF-8
        logging: *loki-logging

    &loki-logging表示定义模板

    *loki-logging表示引用模板。对于多个服务就只需要对应加上一行 logging: *loki-logging 即可。相比之前的版本可谓是大大简化了

    Grafana显示和过滤日志

    一开始安装的时候将grafana映射到了宿主机的3000端口,所以地址就为 http://YOUR_IP:3000

    grafana默认用户名密码是admin和admin

    第一次进入需要修改admin的密码

    添加loki数据源

     

     选择loki。

    因为一开始安装grafana和loki是在一个docker-compose里,所以默认在同一个子网下,因此可以url可以直接写http://loki:3100。如果grafana和loki是分开的,则需要改为填loki所在的宿主机ip

     

    点击  保存和测试 。会提示链接成功。

    查看过滤日志

    左侧菜单栏选择探索 

    label里有对应选项可以选择。  compose_project就是docker-compose的项目名  compose_service就是其中的服务名   container_name就是容器名。这几个基本就够我们定位到具体的某个容器了。

     

    关键字查询    |~ "keyword"      文档链接: LogQL文档

    然后是时间段选择

    后续应该是loki增加缓存以优化查询速度和集群配置(k8s)

  • 相关阅读:
    AX 2012 Security Framework
    The new concept 'Model' in AX 2012
    How to debug the SSRS report in AX 2012
    Using The 'Report Data Provider' As The Data Source For AX 2012 SSRS Report
    Deploy SSRS Report In AX 2012
    AX 2012 SSRS Report Data Source Type
    《Taurus Database: How to be Fast, Available, and Frugal in the Cloud》阅读笔记
    图分析理论 大纲小结
    一文快速了解Posix IO 缓冲
    #转载备忘# Linux程序调试工具
  • 原文地址:https://www.cnblogs.com/turingguo/p/13847003.html
Copyright © 2011-2022 走看看