当前位置: 首页 > news >正文

Docker部署Loki+Grafana+Vector实现全服务器日志监控(含N8N/SSH/Fail2ban监控)

Docker部署Loki+Grafana+Vector实现全服务器日志监控(含N8N/SSH/Fail2ban监控)

一、前言

很多自建服务玩家、服务器运维新手,都想把Docker容器日志(N8N/Airflow等)、服务器SSH登录日志、Fail2ban攻防拦截日志统一收集,在Grafana图形界面集中查看、检索、回溯。

本文全程小白向,无复杂命令、无专业术语绕弯,手把手教你用Docker Compose 一键部署 Loki + Grafana + Vector,实现:

  • 所有Docker容器日志自动采集
  • 服务器SSH登录/失败日志收集
  • Fail2ban拦截黑客暴力破解日志收集
  • Grafana可视化检索、按关键词过滤、按时间回溯

二、架构原理

  1. Vector:日志采集搬运工,负责抓取容器日志、系统日志,转发给Loki
  2. Loki:日志存储仓库,专门存放所有日志,不占大量磁盘
  3. Grafana:可视化面板,用来查询、看日志、做监控面板

简单理解:Vector收日志 → Loki存日志 → Grafana看日志

三、前置准备

  1. 一台Linux云服务器(Ubuntu/Debian均可)
  2. 已安装dockerdocker-compose
  3. 服务器开放3000(Grafana)、3100(Loki)端口

四、目录准备

新建专属部署目录,后续所有配置都放这里:

mkdir-p~/apps/log-monitorcd~/apps/log-monitor

五、编写docker-compose.yml

log-monitor目录创建docker-compose.yml,复制以下内容直接使用:

version:"3.8"services:loki:image:grafana/loki:2.9.0container_name:lokirestart:alwaysports:-"3100:3100"volumes:-./loki-data:/lokicommand:-config.file=/etc/loki/local-config.yamlgrafana:image:grafana/grafana:latestcontainer_name:grafanarestart:alwaysports:-"3000:3000"volumes:-./grafana-data:/var/lib/grafanaenvironment:-GF_SECURITY_ADMIN_PASSWORD=adminXXXXXdepends_on:-lokivector:image:timberio/vector:0.55.0-alpinecontainer_name:vectorrestart:alwaysvolumes:-./vector.toml:/etc/vector/vector.toml-/var/run/docker.sock:/var/run/docker.sock-/var/log:/host/var/log:ro

说明:

  • 挂载docker.sock:让Vector能监听所有Docker容器日志
  • 挂载/var/log:ro:只读挂载系统日志目录,用来采集auth.log、fail2ban.log
  • Grafana默认账号:admin密码:adminxxx,可自行修改

六、编写Vector核心配置 vector.toml

在同目录创建vector.toml最终稳定可用版,无语法报错、无429限流

data_dir = "/var/lib/vector" # 1. 采集所有Docker容器日志 [sources.docker_logs] type = "docker_logs" docker_host = "unix:///var/run/docker.sock" # 2. 采集服务器SSH登录日志 auth.log [sources.host_auth] type = "file" include = ["/host/var/log/auth.log"] read_from = "end" # 3. 采集Fail2ban拦截日志 [sources.fail2ban] type = "file" include = ["/host/var/log/fail2ban.log"] read_from = "end" # 输出所有日志到Loki [sinks.loki] type = "loki" inputs = ["docker_logs", "host_auth", "fail2ban"] endpoint = "http://loki:3100" encoding.codec = "json" # 固定标签,保证Loki正常接收 labels.job = "vector"

配置关键点小白解释:

  • read_from = "end":只采集后续新产生日志,不加载海量历史日志,避免Loki被限流报429错误
  • 三个数据源:容器日志、SSH日志、Fail2ban日志,统一发给Loki

七、启动整套服务

log-monitor目录执行:

dockercompose up-d

等待1分钟,三个容器全部后台启动完成。

查看Vector运行日志,确认无报错:

dockercompose logs-fvector

出现Healthcheck passed即为正常启动。

八、配置Grafana对接Loki

  1. 浏览器访问:服务器IP:3000
  2. 账号admin,密码admin123456
  3. 左侧菜单 →Connections → Data sources
  4. 点击Add data source→ 选择Loki
  5. URL填写:http://loki:3100
  6. 拉到最下方 →Save & test,显示成功即可

九、日常日志查询用法(小白直接复制)

进入Grafana左侧Explore,数据源选Loki,直接用下面语句查询:

1. 查看所有采集的日志

{job="vector"}

2. 只看N8N容器日志

{container="n8n"}

3. 只看SSH登录、登录失败日志

{job="vector"} |= "sshd"

4. 只看Fail2ban黑客拦截、封禁IP日志

{job="vector"} |= "fail2ban"

十、常见问题避坑(全程踩坑总结)

问题1:Grafana打开日志一片空白,明明Vector已采集

原因:Grafana默认只显示前1000行,Docker容器日志太多,把系统日志挤没了
解决:

  1. 右上角Limit默认1000,改成10000
  2. 不用全量查询,直接用|= "关键词"过滤

问题2:Vector报 429 Too Many Requests

原因:一次性读取海量历史日志,Loki限流拒绝
解决:配置里统一用read_from = "end"只收集新日志,不加载历史

问题3:看不到Fail2ban/SSH日志,Vector能读到文件但不显示

原因1:日志文件权限限制,Vector无读取权限
执行命令开放权限:

sudochmod644/var/log/auth.log /var/log/fail2ban.log

原因2:混用动态标签模板,Loki解析失败
解决:直接用本文极简配置,不搞复杂标签模板,只用固定job="vector"

问题4:Vector配置文件报TOML语法错误

原因:缩进、冒号格式不对
解决:直接复制本文完整vector.toml,不要手动改格式

十一、使用总结

  1. 整套架构一条命令启动,无需复杂安装
  2. 自动全覆盖:Docker容器日志 + SSH安全日志 + Fail2ban攻防日志
  3. 不用登录服务器看日志,浏览器随时随地检索、回溯
  4. 只需复制配置,无需懂日志原理即可落地使用
  5. 避开了429限流、标签解析、行数限制、权限不足等所有坑

http://www.jsqmd.com/news/730136/

相关文章:

  • 别再只当自拍杆!用Osmo Mobile 6的FPV和旋转模式拍出电影感Vlog(含运镜分解)
  • 手机号查QQ号:3分钟掌握逆向查询的完整指南
  • 视觉注意力评分(VAS)原理与多模态优化实践
  • 车间设备实时监控难在哪?边缘计算网关才是答案
  • 可学习小波卷积一维信号异常诊断【附代码】
  • 分布式系统中 Map 增量(Delta)是否需要持久化
  • Freertos——使用队列集优化数据传输
  • 树结构提取与搜索优化技术实战
  • 2026年轴承公司实力推荐/61908薄壁轴承厂家,61806薄壁轴承供应企业,柔性轴承供应企业 - 品牌策略师
  • 在.NET 6.0中使用Serilog实现ElasticSearch日志定制
  • 基于MCP协议构建AI Agent与SQLite数据库的安全交互桥梁
  • WHAT - GitLens supercharged 插件
  • Ledger 官方回应“后门”传闻:秘语盾技术支持可信度分析
  • 基于Flutter的跨平台AI语音助手:实时交互、多协议与MCP扩展实战
  • 2026年计算机本科就业实录:是“天坑”还是“金矿”?普通本科生的破局指南
  • 3Dmax建模避坑指南:用‘桥’和‘推拉’做圆孔,如何避免布线混乱和破面?
  • 【Cursor 工程rules实际感悟】
  • Chapter 5:深度章 - AI 编程思维转变
  • 2026年Q2成都婚纱摄影套餐选型及价格维度技术解析 - 优质品牌商家
  • 中国加密货币投资者必备:Ledger 硬件钱包选购指南
  • Postman/Apifox 实测通关:5分钟搞定微信小程序 auth.code2Session 接口调试与参数获取
  • 改进SMOTE类不平衡故障诊断【附代码】
  • Twitter自动化工具怎么选?实测3种运营方式效果对比(附真实思路)
  • PureThermal 3热成像开发板硬件解析与应用指南
  • 双USB车载充电器设计方案与实现
  • MMD Tools:如何让Blender成为MMD创作者的专业工作站?
  • Java SFTP递归下载踩坑实录:Hutool 5.8.16版本下处理空文件夹和符号链接
  • TongWeb8.0默认 开启 了JNDI缓存导致应用卡
  • Taotoken透明计费与详细账单如何帮助个人开发者控制预算
  • 新手开发者首次接入大模型API可能遇到的常见问题与排查思路