Lazy loaded image
字数 0阅读时长 1 分钟
Invalid Date

文章目录

VictoriaLogs

在目前的运维实践中,我对日志的处理方式还停留在比较原始的阶段,登录服务器,直接定位日志文件,然后通过 vim 或 grep 进行检索排查。这种方式在单机或单实例服务的场景下还可以勉强应付,但随着服务逐步扩展到多实例并引入负载均衡之后,这种模式的问题就变得非常明显:日志分散在多台服务器上,排查问题需要逐台登录定位,缺乏统一的查询入口,整体效率低且不可扩展。本质上,这是一个典型的从单机运维向分布式可观测性演进的问题。
在接触日志系统时,我最先了解的是经典的 Elasticsearch 生态,也就是 ELK 架构:Elasticsearch 负责数据存储与检索,Logstash 负责日志采集与处理,Kibana 负责可视化与查询展示。这套体系在功能完整性和生态成熟度上都非常优秀,几乎是行业标准方案。但在实际使用过程中,也逐渐暴露出一些问题:资源消耗较高,尤其是内存开销明显;架构相对复杂,部署与维护成本较高;对轻量级服务器不够友好,例如在 Docker 环境中启动 Elasticsearch 时,单实例内存占用接近 1GB,这对资源有限的服务器来说压力较大。在重新审视之后,我发现自己真正的需求其实比较清晰:需要一个统一的日志集中管理平台,能够方便快速检索日志内容,不需要过重的分析与可视化能力,日志采集逻辑相对简单,可控。同时,现有系统已经使用 Grafana,因此 Kibana 并不是刚需。在这个目标下,我重点对比了两个方案:
VictoriaLogs:VictoriaMetrics 生态中的 VictoriaLogs,已在公司项目中实际使用,架构轻量,资源占用低,查询性能较好,运维复杂度低,部署简单。优势总结:轻量、高性能、具备落地经验。
Grafana Loki:与 Grafana 生态天然集成,采用标签化索引思路,查询体验与 Prometheus 风格一致,上手成本适中。优势总结:生态统一性强,适合 Grafana 技术栈
VictoriaLogs 是 VictoriaMetrics 生态中推出的开源日志存储与查询后端系统,专注于提供高性能、可扩展的日志可观测能力。它的目标是将传统基础监控升级为更全面的企业级全系统可观测性(Observability),帮助用户从日志数据中更深入地理解系统运行状态与业务影响。传统日志系统(如 ELK 等)在面对现代大规模分布式系统时,通常存在以下问题:对大规模日志数据处理能力有限、查询性能在高并发场景下降明显、对实时系统状态分析支持不足、可观测性视角较碎片化,难以全局分析。
VictoriaLogs 是一个轻量、高性能、易运维的日志系统,相比 Elasticsearch 和 Loki 资源占用更低,支持大规模日志分析,并通过 LogSQL 提供高效查询能力,适用于现代可观测性场景。组件介绍:
vlinsert 接收来自 Fluent-bit、Vector 或 Logstash 的日志数据
vlstorage 核心存储,将日志压缩并持久化到磁盘,响应查询请求。
vlselect 查询网关,处理Grafana或CLI的搜索请求。
vmauth 认证网关 - 可选,提供统一入口、负载均衡和身份验证。

部署

部署 VictoriaLogs

这里使用 Helm 部署 VictoriaLogs Cluster,从 Kubernetes 中运行的所有容器收集日志,并将数据发送到已安装的集群版 VictoriaLogs。vlstorage部署了两个实例,每个实例的保留期为180天,PVC 为200Gi。首先添加helm仓库
使用环境变量的方式,helm VictoriaLogs 部署节点
在这里插入图片描述
修改服务暴露,如果没有ingress,可以和我一样修改SVC类型
查看端口
在这里插入图片描述

部署 fluent-bit

Fluent Bit 采集 Kubernetes Pod 日志路径 /var/log/containers/*.log,并将日志写入 VictoriaLogs 集群 vlc-victoria-logs-cluster-vlinsert 服务,写入端口为 9481。创建 ConfigMap
创建rbac
创建DaemonSet
部署完毕后,可以看到服务状态
图形化访问vlselect,查看效果
在这里插入图片描述

部署 Grafana

首先添加helm仓库
创建如下所示的 values 配置文件:
直接使用上面的 values 文件安装 Grafana:
可以通过上面提示中的命令获取登录密码,账号admin:
进入 grafana pod 容器,在Grafana中需要安装victoriametrics-logs-datasource插件
登录grafana,配置 victoriametrics-logs-datasource 数据源,Home -->Connections --> Add new connection --> VictoriaLogs -->Add new data source,数据源地址为 http://vlc-victoria-logs-cluster-vlselect:9471,然后保存测试连接
在这里插入图片描述
默认Grafana没有提供好的模板选择,需要我们自行导入,这里我让Gemini Pro写了个一个简单的查看日志模板,可以直接导入
在这里插入图片描述
最后模板就可以看到日志
在这里插入图片描述
Namespace 默认 .* 表示查看所有名称空间日志,想看指定名称空间日志就直接输入对应的名称空间。
Pod 默认 .* 表示查看所有 Pod 日志,想看指定 Pod 就直接输入对应的 Pod 服务名。
Search 默认 * 表示查找所有类型日志,如果想搜错误就输 error 或 exception。
时间默认设为了 Last 15 minutes,这是看实时日志最舒服的范围。
上一篇
操作系统-进程
下一篇
go-数据类型