博客
关于我
ELK 学习总结(3)—— 从零搭建一个基于 ELK 的日志、指标收集与监控系统
阅读量:815 次
发布时间:2019-03-25

本文共 2395 字,大约阅读时间需要 7 分钟。

基于 ELK 的私有化部署日志与指标监控方案

在私有化部署的系统中,日志采集与指标监控是确保系统稳定运行的重要环节。虽然这些系统主要提供业务功能如用户管理、财务管理等,但为了维护系统健康,仍需实现日志采集、指标收集以及分布式日志查看和监控告警等功能。传统的解决方案往往需要额外的部署和运维工作,为了简化部署流程并降低运维复杂度,本文提出了一种基于 ELK(Elasticsearch、Logstash、Kibana)开箱即用的日志和指标收集方案。

方案设计原则

我们遵循以下设计原则:

  • Self-Contained Deployment:所有部署脚本、配置文件和 Jenkins 任务都打包到一个标准化的 Jenkins Docker 包中。仅安装到目标环境即可完成所有部署所需工具的引入。

  • Single Source of Truth:在 Jenkins 中集成一个 YAML 格式的配置文件管理器,统一管理所有依赖变量配置。例如,后端服务对外暴露的端口号仅需在 Jenkins 配置一次,所有脚本自动读取该变量。

  • Configuration as Code,Infrastructure as Code:一旦所有配置确定,后续流程可以全自动化完成。所有安装均通过脚本实现。

  • 需求分析

    在私有化部署环境中,日志采集的关键特点包括:

    • 快速部署:客户数量众多,需快速部署监控系统,监控系统本身应承受较小运维压力。
    • 部署组件简单且健壮:部署环境复杂,希望每个组件自身具备健壮性,组件间交互尽量简单,避免复杂网络拓扑。
    • 功能性优于稳定性:宿主主机和应用上已有日志和指标副本,故即时数据丢失影响较小,但功能上的强大分析能力更有优势。
    • 性能要求不高:可采用单机部署,稍微迟缓或资源占用不高的情况不影响使用。

    此外,需要满足以下几个需求:

    • 采集分布式日志并集中查看
    • 采集机器基本信息(CPU、磁盘等)并进行监控
    • 最好采集应用数据(如导入数据条目数)并进行监控
    • 实现异常指标告警功能

    方案分析

    针对上述需求,我们进行了以下方案分析:

  • ELK(Elasticsearch、Logstash、Kibana)方案

    • 采用 Elasticsearch、Logstash、Kibana 进行整体监控。
    • 使用 Elastic 的 beat 系列作为采集工具。
    • 优化细节
      • 快速部署:通过 Jenkins 一键部署 Elasticsearch 和 Kibana。
      • 简单健壮部署:仅部署单机 Elasticsearch,避免复杂网络拓扑。
      • 激进版本升级:使用 Elasticsearch 7.6.0 版本,删除数据重新部署以适应新版本。
      • 性能要求:采用单机部署,资源占用可控。
  • Zabbix、Open-Falcon 等工具

    • 适用于基础系统监控,但日志和指标的收集能力不足,排除。
  • TICK(Telegraph、InfluxDB、Chronograf、Kapacitor)方案

    • 适合大规模指标监控和告警,但在日志集中和查看功能上不如 ELK 满足需求。
  • 综合比较后,选择 ELK方案最符合需求,接下来对其进行细化。

    方案细化

    • 快速部署:通过 Jenkins 一键部署函数实现。
    • 组件简单:仅部署 Elasticsearch 和 Kibana,单机部署,确保系统稳定。
    • 激进版本管理:直接升级到 Elasticsearch 7.6.0版本,若出现不兼容问题,可删除数据重新部署。
    • 性能要求:采用单机部署,资源使用可控。

    日志与指标收集

    日志采集

    全部相关主机上部署 Filebeat 进行日志采集,简化配置仅使用 Filebeat 配置文件,无需 Logstash 预处理。

    日志查看

    日志直接上传至 Elasticsearch,通过 Kibana 可使用图形化界面查看。

    系统指标收集

    部署 Metricbeat 收集系统指标,支持 Docker 资源使用、系统 CPU、内存、磁盘、网络状态,开放 Statsd 格式指标收集端口。

    现场状态检测

    在网关机器上部署 Heartbeat 开启主动探测,监控相关数据库、HTTP服务状态。

    基于 ES 的告警

    • ElasticsearchNative告警需付费,故Using开源项目Elastalert实现告警。
    • Elastalert支持多种告警接收方式(如 Slack、HipChat、PagerDuty 等),目前仅使用邮件告警。
    • 配置多种告警类型,如某指标频率检测、异常值检测等。
    • 提前配置好告警规则文件,部署时直接导入,减少手工配置。

    监控大盘

    利用 Kibana 可视化功能,创建直观监控大盘查看各系统组件和宿主主机健康状况。

    Kibana 配置自动化

    所有持久化配置作为 Saved Object 存储,包括快捷搜索、监控大盘、可视化面板、索引配置等。通过 CI 系统定期导出并存储于 Git 仓库中,更新时直接导入到目标环境,无需手工配置。

    扩展监控范围

    新增监控需求时,按照标准流程进行:

    • 监控更多应用组件

      • 服务状态可通过Heartbeat 监控服务访问地址。
      • 日志可通过Filebeat 监控文件路径。
    • 监控应用指标

      • 使用Statsd 形式接口,向 Metricbeat 发布指标。
      • 注意当前 Metricbeat 不支持标签,故只能实现基础指标收集。
    • 增加服务 tracing

      • 使用 Elasticsearch APM(不在此方案中使用,但为未来提供可能性)。

    总结

    私有化部署环境中日志和指标监控不需高性能和高可扩展性,开箱即用和功能强大尤为重要。Elasticsearch 7.6.0 及 Kibana 能够很好满足需求,通过标准化部署流程和提前准备配置文件,可在半小时内完成一整套监控体系部署。这套方案简化了运维工作,被广泛应用于私有化系统。

    转载地址:http://fzdyk.baihongyu.com/

    你可能感兴趣的文章
    android中button修改不了背景颜色
    查看>>
    github 入门
    查看>>
    温故知新,.Net Core遇见Consul(HashiCorp),实践分布式服务注册与发现
    查看>>
    社区医疗app-Ui设计
    查看>>
    HTML 表单验证
    查看>>
    ubuntu System program problem detected
    查看>>
    17场演讲,500+嘉宾 |「观远2020智能决策峰会暨产品发布会」看点先知道
    查看>>
    免费好用的证件扫描仪-扫描全能王
    查看>>
    面试题5:(事务管理) ACID 是什么?
    查看>>
    10.Mybatis执行流程
    查看>>
    Http状态码
    查看>>
    通信过程图
    查看>>
    使用maven
    查看>>
    依赖范围scope
    查看>>
    apache服务器 vs Tomcat服务器
    查看>>
    springboot:集成 Jsp
    查看>>
    python:字符串
    查看>>
    HTML中如何给HTML元素添加事件
    查看>>
    wpf 使用Font Awesome
    查看>>
    Windows10:远程桌面连接报错“出现身份验证错误。要求的函数不受支持”
    查看>>