本文共 2395 字,大约阅读时间需要 7 分钟。
在私有化部署的系统中,日志采集与指标监控是确保系统稳定运行的重要环节。虽然这些系统主要提供业务功能如用户管理、财务管理等,但为了维护系统健康,仍需实现日志采集、指标收集以及分布式日志查看和监控告警等功能。传统的解决方案往往需要额外的部署和运维工作,为了简化部署流程并降低运维复杂度,本文提出了一种基于 ELK(Elasticsearch、Logstash、Kibana)开箱即用的日志和指标收集方案。
我们遵循以下设计原则:
Self-Contained Deployment:所有部署脚本、配置文件和 Jenkins 任务都打包到一个标准化的 Jenkins Docker 包中。仅安装到目标环境即可完成所有部署所需工具的引入。
Single Source of Truth:在 Jenkins 中集成一个 YAML 格式的配置文件管理器,统一管理所有依赖变量配置。例如,后端服务对外暴露的端口号仅需在 Jenkins 配置一次,所有脚本自动读取该变量。
Configuration as Code,Infrastructure as Code:一旦所有配置确定,后续流程可以全自动化完成。所有安装均通过脚本实现。
在私有化部署环境中,日志采集的关键特点包括:
此外,需要满足以下几个需求:
针对上述需求,我们进行了以下方案分析:
ELK(Elasticsearch、Logstash、Kibana)方案:
Zabbix、Open-Falcon 等工具:
TICK(Telegraph、InfluxDB、Chronograf、Kapacitor)方案:
综合比较后,选择 ELK方案最符合需求,接下来对其进行细化。
全部相关主机上部署 Filebeat 进行日志采集,简化配置仅使用 Filebeat 配置文件,无需 Logstash 预处理。
日志直接上传至 Elasticsearch,通过 Kibana 可使用图形化界面查看。
部署 Metricbeat 收集系统指标,支持 Docker 资源使用、系统 CPU、内存、磁盘、网络状态,开放 Statsd 格式指标收集端口。
在网关机器上部署 Heartbeat 开启主动探测,监控相关数据库、HTTP服务状态。
利用 Kibana 可视化功能,创建直观监控大盘查看各系统组件和宿主主机健康状况。
所有持久化配置作为 Saved Object 存储,包括快捷搜索、监控大盘、可视化面板、索引配置等。通过 CI 系统定期导出并存储于 Git 仓库中,更新时直接导入到目标环境,无需手工配置。
新增监控需求时,按照标准流程进行:
监控更多应用组件:
监控应用指标:
增加服务 tracing:
私有化部署环境中日志和指标监控不需高性能和高可扩展性,开箱即用和功能强大尤为重要。Elasticsearch 7.6.0 及 Kibana 能够很好满足需求,通过标准化部署流程和提前准备配置文件,可在半小时内完成一整套监控体系部署。这套方案简化了运维工作,被广泛应用于私有化系统。
转载地址:http://fzdyk.baihongyu.com/