前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >监控系统开篇

监控系统开篇

原创
作者头像
五分钟学SRE
修改2023-11-19 02:28:40
5380
修改2023-11-19 02:28:40
举报
文章被收录于专栏:五分钟学SRE

监控系统简介

监控系统是运维工作中不可或缺的一部分,它可以帮助我们监控系统的健康状况、运行状态和性能指标等,及时发现和解决问题,确保系统的可靠性和稳定性。SRE对监控系统最基本的需求就是:监控是SRE的第三只眼,使得可以在系统出问题时我们能及时感知到。

    不过随着互联网的发展,监控系统除了最基本已知问题监控之外,还涉及了更多的方面,比如:

告警预测:通过分析历史监控数据趋势,来感知系统在未来的某个时刻可能出的问题,这就是目前比较火的AIOPS的领域

容量模型评估:结合监控与业务趋势,自动化计算业务的容量模型,为服务扩缩容提供数据支撑

分布式跟踪:用于跟踪分布式系统中各个组件的调用关系和性能指标,以便快速定位和解决问题。

日志分析:通过收集、聚合和分析应用程序和系统的日志,帮助识别潜在的问题和优化机会,以提高系统的可靠性和性能。

    为此,Google SRE团队提出的一组监控指标和协议:服务水平目标(SLI)、服务水平指标(SLO)、服务水平协议(SLA)和错误预算。通过这四个指标的定义和监控,我们可以更好地了解系统的状态,预测可能出现的问题,并采取适当的措施来防止和修复问题。

服务水平目标(SLI)

    服务水平目标是指服务的某个特定方面的度量,例如服务的可用性、延迟、吞吐量或错误率。它通常是以百分比的形式表示的,比如服务可用性的目标是99.9%。SLI通常基于监控数据计算得出。

服务水平指标(SLO)

是对SLI的具体目标值,服务水平指标是指团队为了满足业务需求而设定的服务水平目标。SLO通常定义了一段时间内服务水平目标的最小要求,例如在某个季度内服务的可用性要达到99.9%。SLO旨在提供一种可衡量的方式来评估服务的质量,以便团队可以持续改进。

服务水平协议(SLA)

是一个服务提供商与客户之间的合同协议,其中规定了服务提供商应该遵守的SLO和惩罚措施,如果SLO未达到的情况下。SLA通常包括服务提供商的责任、服务级别协议、可用性和故障报告等方面的内容,以确保服务提供商能够满足客户的需求和期望。

错误预算(Error Budget)

是一个可以用于SLA的指标,它是指系统在一段时间内允许的故障次数或错误率。例如,如果一个系统的SLA是99.9%的可用性,那么它的错误预算就是0.1%。如果系统的SLI超过了SLO,那么它就有了一定的错误预算,可以用于实施新功能或进行更新等操作,而不影响系统的可靠性和稳定性。

监控系统的设计

最基本的监控系统设计,需要考虑以下几个方面:

(1)数据收集

    数据收集是监控系统的基础,我们需要选择合适的数据收集方式和工具,收集系统的运行数据,如日志、指标数据、事件等,同时还需要考虑数据的存储和管理方式。

可参考开源工具:

Prometheus

代码语言:javascript
复制
优点:具有高可用性、灵活的数据模型、支持多种数据源和API,可以方便地对接各种应用程序和系统。
缺点:对于大规模数据和高吞吐量的场景,需要进行额外的优化和配置。

Filebeat:

Filebeat是一个开源的轻量级日志数据采集器,可以收集并转发多种格式的日志文件,如系统日志、应用程序日志等,并提供了多种输出和过滤功能。其优点包括:

代码语言:javascript
复制
简单易用:Filebeat提供了易于使用的配置和管理界面,使其易于部署和集成。
轻量级:Filebeat非常轻量,可以在资源受限的系统上运行,并提供了多种输出方式,如Elasticsearch、Logstash等。

其缺点包括:

代码语言:javascript
复制
不适合高负载环境:由于Filebeat采用的是轮询模式,因此在高负载环境下可能会导致性能问题。
不支持持久连接:由于Filebeat是一个轻量级采集器,它不支持持久连接和复杂的过滤器,因此在复杂的采集需求下可能不够灵活。
(2)数据处理

数据处理是将收集的数据进行分析和加工的过程,我们需要选择合适的分析工具和技术,将数据转化为有用的信息,如图表、报警等。

可参考开源工具:

InfluxDB:

    一个高性能、分布式的时序数据库,可用于存储和查询指标数据。优点是适合处理大量的时间序列数据,具有高吞吐量和低延迟,易于使用,支持 SQL 查询语言。缺点是不适合存储非时序数据,不支持事务处理。

Elasticsearch:

    一个开源的全文搜索和分析引擎,可以用于存储和查询日志和指标数据。优点是具有出色的搜索和分析能力,可用于处理非结构化数据,支持实时查询和聚合操作,易于集成到其他系统中。缺点是相比于InfluxDB,存储和查询时序数据的性能较低。

(3)数据可视化

数据可视化是将处理后的数据以可视化的方式呈现出来,以帮助我们更好地了解系统的运行状态和趋势,我们可以选择一些开源的可视化工具,如Grafana等。

可参考开源工具:

Grafana:

    一个开源的数据可视化和监控平台,可以与多种数据源集成,包括InfluxDB和Elasticsearch。优点是易于使用,具有丰富的可视化选项和面板模板,支持警报功能和多用户权限控制。缺点是在处理大数据量时,需要注意性能和资源的使用。

Kibana:

    一个开源的数据分析和可视化平台,专为Elasticsearch而设计,可用于搜索、分析和可视化大量的结构化和非结构化数据。优点是具有出色的搜索和分析能力,易于使用和定制,支持实时查询和聚合操作。缺点是相对于Grafana,更侧重于日志分析和搜索,对于时序数据的处理能力有限。

(4)警报机制

警报机制是当系统出现问题时,能够及时发现并采取相应的措施的关键,我们需要定义合适的警报规则,并选择合适的警报方式,如邮件、短信、微信等。

可参考开源工具:

Alertmanager:

     一个开源的警报管理器,可用于处理和路由警报通知。优点是易于集成到多个监控系统中,支持多种警报方式,如电子邮件、PagerDuty、Slack等,支持分组和静默规则。缺点是需要额外的配置和定制,不具备独立的监控能力。

Zabbix:

    一个开源的网络监控系统,可用于监控各种设备和服务。优点是具有强大的监控和报警功能,支持多种监控方式和警报方式,如SNMP、JMX、SMTP等,具有灵活的配置选项和多种报表和图表。缺点是安装和配置较为复杂,需要额外的资源和维护成本。

优秀的开源监控系统

zabbix

Zabbix 是一款功能强大的开源监控系统,支持多种监控方式,包括主动采集、被动采集、SNMP、JMX、IPMI 等,擅长设备、网络、中间件的监控。它提供丰富的监控指标、报表和告警功能,并支持分布式部署和高可用性。

    工作原理是,客户端安装 Zabbix Agent 并将监控数据发送到 Zabbix Server,Zabbix Server 再将这些数据存储到数据库中,并通过 Web 界面展示给用户。在微服务与云原生兴起之前,使用的监控系统主要就是用来监控设备和中间件,所以当时在国内应用还是非常广泛的。

Zabbix 核心由两部分构成,Zabbix Server 与可选组件 Zabbix Agent。Zabbix Server 可以通过 SNMP、Zabbix Agent、JMX、IPMI 等多种方式采集数据。

优点:

  • 功能丰富,支持多种监控方式。
  • 客户端 Agent 可以自定义监控项,可以灵活适应各种监控需求。
  • 开源且社区活跃,支持插件扩展。

缺点:

  • 安装和配置较为繁琐,需要一定的技术水平。
  • 监控数据存储在数据库中,大规模监控需要考虑数据库性能问题。

Nagios

Nagios 是一款经典的网络监控软件,具有广泛的应用场景,可以监控网络设备、服务器、应用程序等。Nagios 的工作原理是,通过插件收集监控数据,将数据存储在文件中,并通过 Web 界面展示给用户。

优点:

  • 社区活跃,拥有大量插件可供选择。
  • 界面简洁直观,易于使用。
  • 安装和配置较为简单。

缺点:

  • 功能相对较少,不支持自定义监控项。
  • 监控数据存储在文件中,对大规模监控不太友好。

Open-Falcon

Open-Falcon是国内知名的开源监控系统,由小米运维团队开发并开源。其架构包括Agent、Transfer、Judge、Alarm、Portal等组件。其中,Agent负责采集各种数据指标,Transfer负责将数据传输给Judge,Judge则是Open-Falcon的核心组件,负责实时计算、聚合和存储监控数据。Alarm用于告警,Portal用于展示监控数据。

优点:

  • 支持海量监控数据采集和存储
  • 支持自定义数据指标和告警规则
  • 灵活的可扩展性,可根据需要扩展Agent和Judge组件
  • 社区活跃,有大量的第三方插件和应用

缺点:

  • 配置复杂度较高,需要花费一定的学习成本
  • 由于开发者主要来自小米运维团队,有一定的局限性,适用性不够广泛

Prometheus

Prometheus是由SoundCloud开发的开源监控系统,被CNCF(云原生计算基金会)收购。其核心组件包括Prometheus Server、Client Library、Exporter和Alertmanager等。其中,Prometheus Server负责存储和查询监控数据,Client Library用于采集数据,Exporter用于采集第三方应用程序的指标数据,Alertmanager用于告警。

优点:

  • 支持多维度的数据模型和查询语言
  • 内置的报警功能和钩子机制,支持自定义报警规则和处理逻辑
  • 支持多种数据采集方式,包括Pull和Push两种模式
  • 社区活跃,有大量的第三方Exporter和工具

缺点:

  • 对于大规模集群的监控,需要考虑数据存储和查询的性能问题
  • Alertmanager的配置比较复杂,需要一定的技术储备

Nightingale

Nightingale是由美团点评开发并开源的一款全栈监控系统,包括了数据采集、存储、分析和展示等功能。Nightingale主要面向云原生和容器化的环境,支持自动发现和自动化管理。它采用了Golang开发,并使用InfluxDB和Elasticsearch作为存储引擎,Grafana作为可视化组件。

Nightingale的工作流程如下:首先,它通过自动化的方式进行数据采集,并将数据发送到InfluxDB和Elasticsearch等存储引擎。其次,它使用PromQL(Prometheus Query Language)语言对数据进行查询和聚合,并提供了一些内置函数和操作符来处理数据。最后,它使用Grafana进行数据可视化和展示。

优点:

  • 高度自动化:Nightingale支持自动发现和自动化管理,可以自动化采集、存储、分析和展示监控数据,减轻了运维人员的工作负担。
  • 支持多种存储引擎:Nightingale支持InfluxDB和Elasticsearch等多种存储引擎,可以根据需求选择合适的存储引擎。
  • 支持PromQL语言:Nightingale支持PromQL语言,具有类似于Prometheus的查询和聚合功能。
  • 灵活的可视化:Nightingale使用Grafana进行数据可视化和展示,可以根据需求自定义展示方式。

缺点:

  • 社区相对较小:Nightingale是一个比较新的项目,相对于Prometheus和Open-Falcon等监控系统,其社区相对较小,缺乏成熟的生态系统和丰富的插件支持。
  • 文档和资料相对较少:由于Nightingale是一个比较新的项目,其文档和资料相对较少,对于初学者来说可能不够友好

这个是关于监控系统的敲门砖,每个目前开源的系统都有其独特的特点和适用场景。在选择监控系统时,我们需要根据自己的需求和实际情况来选择最合适的系统。我们后续将以prometheus为例子入手,将深入介绍Prometheus,并探讨其内部的工作原理、数据模型、查询语言和可视化工具等方面的细节。

可以查看原文:

https://mp.weixin.qq.com/s?__biz=MzA5NTgwNzY1NA==&mid=2247483994&idx=1&sn=e7c8d5818fdc8ea8b6971ad39494c922&chksm=90b8f393a7cf7a85840e88b841ea182b714921bf45fedd0c5db4ad0947b7b0727db14247f70b&token=2069274630&lang=zh_CN#rd

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 监控系统简介
    • 服务水平目标(SLI)
      • 服务水平指标(SLO)
        • 服务水平协议(SLA)
          • 错误预算(Error Budget)
            • 监控系统的设计
              • (1)数据收集
              • (2)数据处理
              • (3)数据可视化
              • (4)警报机制
          • 优秀的开源监控系统
            • zabbix
              • Nagios
                • Open-Falcon
                  • Prometheus
                    • Nightingale
                    相关产品与服务
                    Prometheus 监控服务
                    Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档