docker-compose部署loki+promtail+grafana。 收集项目日志,docker容器日志。全网最详细,不包括k8s

 

服务介绍

 

loki 2.6.1           数据库;进行日志聚合处理 

promtail 2.1.0         日志收集工具

grafana 9.5.18       日志显示,可以通过各种标签和表达式过滤显示日志

版本和配置文件一致

 

一、 环境准备

mkdir loki/{conf,data}  -p
mkdir promtail
chmod 777 loki/data

 

二、配置文件准备

loki

vim loki/conf/loki-config.yaml     
复制代码
server:
  http_listen_port: 3100

common:                             #通用配置
  path_prefix: /loki
  storage:
    filesystem:
      chunks_directory: /loki/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                  # 索引周期

storage_config:                                                # 存储相关
  boltdb_shipper:
    active_index_directory: /loki/boltdb-shipper-active        # 活动索引的目录
    cache_location: /loki/boltdb-shipper-cache                 # 缓存位置
    cache_ttl: 24h                                             # 缓存的过期时间
    shared_store: filesystem                                   # 共享存储类型为文件系统
  filesystem:
    directory: /loki/chunks                                    # 文件系统的目录

compactor:
  working_directory: /loki/boltdb-shipper-compactor            # 紧缩器的工作目录
  shared_store: filesystem                                     # 共享存储类型为文件系统

limits_config:
  reject_old_samples: true               # 是否拒绝旧样本
  reject_old_samples_max_age: 72h        # 72小时之前的样本被拒绝
  max_entries_limit_per_query: 9999      # 数值改为自己想要的最大查询行数
  ingestion_rate_mb: 32                  # mb单位,每个用户每秒的采样率限制  不设置客户端会报错
  ingestion_burst_size_mb: 64            # 每个用户允许的采样突发大小

chunk_store_config:
  max_look_back_period: 72h              # 为避免查询超过保留期的数据,必须小于或等于下方的时间值

table_manager:
  retention_deletes_enabled: true        # 保留删除开启
  retention_period: 72h                  # 超过72h的块数据将被删除

ruler:
  alertmanager_url: http://localhost:9093
复制代码

promtail
vim promtail/promtail-config.yaml  
复制代码
server:
  http_listen_port: 9080 #云服务器需开放9080端口
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

#loki地址
clients:
  - url: http://123.123.123.123:3100/loki/api/v1/push


#我名词定义是 ”环境-服务-文件/容器“ scrape_configs: - job_name: demo-servername-file static_configs: - targets: - localhost labels: client: demo #自定义变量 定义环境 job: servername-file #变量定义类型 __path__: /data/server/logs/*.log #收集程序输出的日志 - job_name: dev-servername-file static_configs: - targets: - localhost labels: client: dev job: servername-file __path__: /data/server/logs/*.log
复制代码

 

 

三、docker-compose.yml文件

vim docker-compose.yml           #名称可以自己自定义。 loki+promtail+grafana三个服务可以放不同机器
复制代码
version: '3'
services:
#数据库 loki: container_name: loki image: grafana
/loki:2.6.1 ports: - "3100:3100" - "9095:9095" volumes: - ./loki/data:/var/loki - ./loki/conf/loki-config.yaml:/etc/loki/local-config.yaml user: root #不开报错 command: ["-config.file=/etc/loki/local-config.yaml"] #收集 promtail: image: grafana/promtail:2.1.0 container_name: promtail restart: always ports: - 9080:9080 volumes: - ./promtail/promtail-config.yaml:/opt/promtail-config.yaml - /data/server/logs/:/data/server/logs/ #文件日志路径挂到容器 - /etc/localtime:/etc/localtime:ro privileged: true #不开报错 deploy: resources: limits: memory: 2G reservations: memory: 200M logging: driver: json-file options: max-size: "200m" max-file: "4" command: ["-config.file=/opt/promtail-config.yaml"] #web界面。 有的就不需要再部署了,都一样 grafana: image: grafana/grafana:9.5.18 restart: "always" ports: - 3000:3000 container_name: "grafana" volumes: - "./grafana/grafana.ini:/etc/grafana/grafana.ini" #配置文件自行拷贝出来。通过docker run 启动grafana容器。 docker cp拷贝出来后杀掉容器 - "./grafana/grafana-storage:/var/lib/grafana" - "/etc/localtime:/etc/localtime:ro"
复制代码

 

启动  一般是没问题的。到这,文件收集结束了。 剩下docker收集

docker-compose -f docker-compose.yml up -d 

 

四、在要被监控的机器docker安装loki插件

 loki2.2以上 ,成功会提示 已安装插件****

docker plugin install registry.docker.com/grafana/loki-docker-driver:main --alias loki --grant-all-permissions

 

五、docker配置loki相关内容

三个方法

1,全局配置; /etc/docker/daemon.json    最后行指定阿里云改成自己得仓库 。 中间指定loki数据库

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

2,docker run 启动配置

docker run --rm --name=nginx --log-driver=loki --log-opt loki-url="http://123.123.123.123:3100/loki/api/v1/push" --log-opt max-size=50m --log-opt max-file=10 grafana/grafanax  

3,docker-compose 配置  我用得这个

    logging:
        driver: loki                                                      #驱动器指定loki
        options:
          loki-url: "http://123.123.123.123:3100/loki/api/v1/push"        #指定loki地址      
          max-size: "50m"                                                 #日志最大大小
          max-file: "4"                                                   #日志最大数量
          loki-external-labels: "client=demo,job=servername-docker"       #自定义标签。方便查询  文件我是servername-file   这里-docker 方便自己看

配置完重启docker或重启容器

 

六、配置grafana   全图文小白操作

 打开grafana  http://123.123.123.123:3000

1,设置中文,方便自己查看

 

2.添加loki数据源

 

3,查看日志

 

 4, 使用教程

刚才定义的两个标签。 其他标签不管他,容器传过来的

 

 

也可以直接看有哪些文件

 

posted @   mrdongdong  阅读(3645)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示