当前位置:网站首页 >  攻略

轻量级开源搭配普通开发常用的全流程日志分析工具零门槛操作

时间:2026年06月11日 01:12:51 来源:易频IT社区

一、工具选型与准备环境

本次使用docker-compose部署三件套:Promtail(日志采集)、Loki(日志存储查询)、Grafana(可视化展示),无需复杂依赖配置,支持Linux、Mac、Windows(需提前装WSL2+Docker Desktop)。

前置环境检查

  • 打开终端,输入docker -v,返回版本号(如Docker version 24.0.7)即为已装;未装访问https://www.docker.com/get-started/ 下载对应系统版本安装
  • 输入docker-compose -v,返回版本号(如Docker Compose version v2.21.0)即为已装;Docker Desktop默认带v2,无需单独安装

二、docker-compose部署三件套

找个空文件夹,新建两个文件:docker-compose.ymlpromtail-config.yml,所有内容可直接复制。

1. 创建Loki持久化目录(防重启丢失数据)

  • Linux/Mac终端执行:mkdir -p ./loki-data ./promtail-data ./logs-demo
  • Windows WSL2终端执行相同命令(或在Docker Desktop共享目录对应创建)

2. 编写docker-compose.yml

新建文件,粘贴以下完整内容,注意缩进严格为2个空格:

```yaml version: '3.8' services: loki: image: grafana/loki:2.9.2 ports: - "3100:3100" command: -config.file=/etc/loki/local-config.yaml volumes: - ./loki-data:/loki networks: - loki-net promtail: image: grafana/promtail:2.9.2 volumes: - ./promtail-config.yml:/etc/promtail/config.yml - ./logs-demo:/var/log/demo - ./promtail-data:/tmp/promtail command: -config.file=/etc/promtail/config.yml networks: - loki-net depends_on: - loki grafana: image: grafana/grafana:10.2.3 ports: - "3000:3000" volumes: - grafana-storage:/var/lib/grafana networks: - loki-net depends_on: - loki volumes: grafana-storage: networks: loki-net: ```

3. 编写promtail-config.yml

新建文件,粘贴以下完整内容,调整demo日志路径与筛选规则:

```yaml server: log_level: info http_listen_port: 9080 clients: - url: http://loki:3100/loki/api/v1/push scrape_configs: - job_name: demo-logs static_configs: - targets: - localhost labels: job: demo-app __path__: /var/log/demo/.log ```

4. 启动三件套

  • 在当前文件夹终端执行:docker-compose up -d
  • 等待1分钟左右,执行docker-compose ps,三个容器状态均为Up即为成功

三、生成demo日志测试采集

轻量级开源搭配普通开发常用的全流程日志分析工具零门槛操作

打开新的终端窗口,进入刚才新建的logs-demo目录,用命令持续生成带不同级别的日志:

1. 进入目录

  • Linux/Mac/WSL2:cd ./logs-demo

2. 循环生成日志

粘贴以下脚本,按Ctrl+C可停止:

```bash !/bin/bash for i in {1..1000} do level=$((RANDOM % 3)) msg="" case $level in 0) level="INFO" msg="用户${i}登录成功" ;; 1) level="WARN" msg="用户${i}输入密码错误1次" ;; 2) level="ERROR" msg="用户${i}下单超时5秒" ;; esac echo "$(date '+%Y-%m-%d %H:%M:%S') [${level}] ${msg}" >> app.log sleep 0.5 done ```

Windows无WSL2的话,手动创建app.log,粘贴5-10条类似格式的日志即可:

``` 2024-01-01 12:00:00 [INFO] 用户1登录成功 2024-01-01 12:00:01 [WARN] 用户2输入密码错误1次 2024-01-01 12:00:02 [ERROR] 用户3下单超时5秒 ```

四、Grafana配置可视化

1. 登录Grafana

浏览器打开http://localhost:3000,默认账号密码都是admin,首次登录强制修改密码(随便改一个,记不住后面删除grafana-storage卷重置)。

2. 连接Loki数据源

  • 登录后点击左侧菜单栏的ConnectionsData sources
  • 点击右上角的Add new data source
  • 搜索框输入Loki,点击第一个结果
  • HTTP部分的URL输入框填入http://loki:3100(因为是docker-compose同一网络,直接用服务名)
  • 拉到页面最底部,点击Save & test,提示Data source connected and labels found.即为成功

3. 配置日志查询面板

  • 点击左侧菜单栏的DashboardsNew dashboard
  • 点击Add visualization
  • 在弹出的数据源选择框点击刚才添加的Loki
  • Query标签页的Log browser输入框,先点击job → 选择demo-app,再点击Run query,下方就能看到生成的demo日志
  • 如果要筛选ERROR级别,在Log browser输入框补充|~ `ERROR`,再次点击Run query
  • 点击右上角的Save,输入面板名称(如“Demo应用日志分析”),点击Save保存到默认文件夹

4. 配置日志级别统计面板

  • 回到刚才新建的Dashboard,点击右上角的AddVisualization
  • 同样选择Loki数据源
  • Query标签页输入以下完整查询语句(可直接复制):
  • ``` sum by (level) (count_over_time({job="demo-app"} | regexp `\[(?P[A-Z]+)\]` [1m])) ```
  • 在右侧Visualization type选择框,搜索并点击Pie chart
  • 在右侧Options标签页,调整LegendRight,勾选Show values,显示百分比
  • 点击右上角Save,输入面板名称(如“Demo应用日志级别分布”),保存到同一Dashboard

五、常用查询语法(仅记3个够用90%场景)

  • 基础标签筛选:{job="demo-app"},也可组合多个标签,如{job="demo-app",env="prod"}(需提前在promtail-config.yml添加env标签)
  • 正则提取/筛选字段:刚才用的| regexp `\[(?P[A-Z]+)\]`,可直接提取方括号里的大写单词为level字段,方便后续统计
  • 关键词过滤:包含用|~ `ERROR`,不包含用!~ `INFO`,注意引号用反引号(键盘Esc下方),避免与日志里的双引号冲突

六、停止与重启服务

  • 停止服务:在docker-compose.yml所在目录执行docker-compose down(数据会保存在loki-data、grafana-storage卷里)
  • 重启服务:执行docker-compose up -d
  • 完全删除数据(包括配置和日志):先执行docker-compose down -v,再手动删除创建的文件夹

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图