news 2026/5/28 1:57:12

SpringCloud+loki+promtail+grafana 集成日志监控收集搜索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringCloud+loki+promtail+grafana 集成日志监控收集搜索

1.先确认是否安装docker 和docker compose

curl -fsSL https://get.docker.com | bash -s docker systemctl start docker systemctl enable docker # 下载并安装 Docker Compose 插件 sudo apt-get update sudo apt-get install docker-compose-plugin -y

2.创建项目目录与配置文件

mkdir -p /home/retail/monitoring cd /home/retail/monitoring

2.1 创建docker-compose.yml

version: '3.8' services: # Loki: 日志存储引擎 loki: image: grafana/loki:2.9.2 container_name: retail-loki ports: - "3100:3100" # 配置:只保留最近 30 天的日志,超出部分自动清理,确保磁盘占用在可控范围 command: -config.file=/etc/loki/local-config.yaml -limits_config.retention_period=720h volumes: - ./loki-data:/tmp/loki networks: - retail-net # Promtail: 日志采集器(负责读取服务器本地日志并发送给 Loki) promtail: image: grafana/promtail:2.9.2 container_name: retail-promtail volumes: # 关键:将宿主机的 /home/retail 目录挂载到容器内相同路径 - /home/retail:/home/retail:ro - ./promtail-config.yaml:/etc/promtail/config.yaml command: -config.file=/etc/promtail/config.yaml networks: - retail-net depends_on: - loki # Grafana: 可视化展示平台 grafana: image: grafana/grafana:10.2.0 container_name: retail-grafana ports: - "3000:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=admin # 配置根 URL,让 Grafana 知道外部访问地址(路径访问模式) - GF_SERVER_ROOT_URL=http://fengchaogjx.top/grafana/ - GF_SERVER_SERVE_FROM_SUB_PATH=true volumes: - ./grafana-data:/var/lib/grafana networks: - retail-net depends_on: - loki networks: retail-net: driver: bridge

2.2 创建promtail-config.yaml

server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml # 关键配置:忽略旧文件的位置记录,允许重新读取历史文件 ignore_invalid_yaml: true clients: - url: http://loki:3100/loki/api/v1/push scrape_configs: - job_name: retail-jar-logs static_configs: - targets: - localhost labels: job: retail-system # 修改通配符:匹配 application.log 以及 application.2026-05-27.1.log 等 __path__: /home/retail/*/logs/application*.log pipeline_stages: # 尝试从日志中提取 traceId - regex: expression: '.*\[(?P<traceId>[a-f0-9\-]+)\].*' - labels: traceId:

3.pom文件引入依赖

<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-brave</artifactId> </dependency>

4.修改logback配置

修改 Logback 配置(logback-spring.xml): 确保 pattern 里有 %X{traceId},且日志输出路径统一为 /home/retail/${spring.application.name}/logs/application.log。 <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds"> <springProperty scope="context" name="APP_NAME" source="spring.application.name" defaultValue="retail"/> <property name="LOG_HOME" value="${LOG_PATH:-logs}"/> <property name="CONSOLE_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{traceId:-}] %logger{36} - %msg%n"/> <property name="FILE_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{traceId:-}] %logger{64} - %msg%n"/> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_PATTERN}</pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="APP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/application.log</file> <encoder> <pattern>${FILE_PATTERN}</pattern> <charset>UTF-8</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/application.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> </appender> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/error.log</file> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <pattern>${FILE_PATTERN}</pattern> <charset>UTF-8</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> </appender> <logger name="org.springframework" level="INFO"/> <logger name="com.alibaba.nacos" level="WARN"/> <logger name="com.zaxxer.hikari" level="WARN"/> <root level="${LOG_LEVEL:-INFO}"> <appender-ref ref="CONSOLE"/> <appender-ref ref="APP_FILE"/> <appender-ref ref="ERROR_FILE"/> </root> </configuration>

5.启动监控平台

# 1. 解决权限问题(非常重要!) mkdir -p grafana-data loki-data chmod -R 777 grafana-data loki-data # 2. 启动容器 docker compose up -d

6.配置nginx反向代理

location /grafana/ { proxy_pass http://127.0.0.1:3000/; # 注意末尾斜杠 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }

执行sudo nginx -s reload

7.访问http://域名/grafana/

7.1 进入Connections -> Data Sources -> Add Loki,URL 填http://loki:3100

7.2进入Explore,输入{job="retail-system"},点击运行。

即可查到日志

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 1:56:30

锻炼学龄前孩子自理能力,养成独立生活习惯

学龄前是孩子习惯养成的关键期&#xff0c;自理能力的培养不仅能让家长轻松一些&#xff0c;更重要的是帮助孩子建立“我能行”的自信。三到六岁的孩子已经有能力做很多事情&#xff0c;关键在于家长是否愿意放手&#xff0c;并且用对方法。从简单的日常小事开始&#xff0c;是…

作者头像 李华
网站建设 2026/5/28 1:50:59

Windsurf 完整实战教程

Windsurf 完整实战教程:从入门配置、核心功能、规则技能到批量网页开发(零基础全覆盖) Windsurf 作为目前最强工程级 AI 编程编辑器(原 Codeium,OpenAI 深度合作产品),凭借超长上下文、智能记忆、自定义规则、可复用技能、全域代码理解能力,碾压传统 AI 编辑器。很多开…

作者头像 李华
网站建设 2026/5/28 1:42:07

钉钉消息防撤回补丁PC版:完整指南与高效使用技巧

钉钉消息防撤回补丁PC版&#xff1a;完整指南与高效使用技巧 【免费下载链接】DingTalkRevokeMsgPatcher 钉钉消息防撤回补丁PC版&#xff08;原名&#xff1a;钉钉电脑版防撤回插件&#xff0c;也叫&#xff1a;钉钉防撤回补丁、钉钉消息防撤回补丁&#xff09;由“吾乐吧软件…

作者头像 李华
网站建设 2026/5/28 1:31:04

告别穿戴束缚!黎阳之光无感定位赋能矿山矿洞精细化管控

矿山矿洞作为高危作业场景&#xff0c;人员管理的精准度与时效性直接关乎安全生产大局。长期以来&#xff0c;穿戴式定位设备因依赖佩戴、易受环境影响等问题&#xff0c;难以满足矿洞精细化管控需求。黎阳之光科技有限公司创新研发人员无感定位技术&#xff0c;以纯视觉空间计…

作者头像 李华