监控场景及开源监控方案选型

这篇具有很好参考价值的文章主要介绍了监控场景及开源监控方案选型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 先看监控的需求来源,即监控系统可做什么
  • 再跳出监控,从可观测性,看监控与日志、链路间的关系及它们各自的作用
  • 最后介绍开源社区几个有代表性的方案以及它们各自的优缺点,便于你之后做技术选型。

1 监控需求来源

系统出问题我们能及时感知。随时代发展,对监控系统提出更多诉求:

  • 通过监控了解数据趋势,知道系统在未来的某个时刻可能出问题,预知问题
  • 通过监控了解系统的水位情况,为服务扩缩容提供数据支撑
  • 通过监控来给系统把脉,感知到哪里需要优化,比如一些中间件参数的调优
  • 通过监控来洞察业务,提供业务决策的数据依据,及时感知业务异常

目前监控系统越来越重要,同时也越来越完备。不但能很好地解决上面这几点诉求,还沉淀很多监控系统中的稳定性相关的知识。当然,这得益于对监控体系的持续运营,特别是一些资深工程师的持续运营的成果。

2 可观测性三大支柱

监控系统,其实只是指标监控,通常使用折线图形态呈现在图表上,如某机器的CPU利用率、某个数据库实例的流量或者网站的在线人数,都可体现为随着时间而变化的趋势图。

监控场景及开源监控方案选型,云原生微服务监控,开源

指标监控 只能处理数字,但它的历史数据存储成本较低,实时性好,生态庞大,是可观测性领域里最重要的一根支柱。聚焦在指标监控领域的开源产品有Zabbix、Open-Falcon、Prometheus、Nightingale等。

除了指标监控,另一个重要的可观测性支柱是 日志。从日志中可以得到很多信息,对于了解软件的运行情况、业务的运营情况都很关键。比如操作系统的日志、接入层的日志、服务运行日志,都是重要的数据源。

从操作系统的日志中,可以得知很多系统级事件的发生;从接入层的日志中,可以得知有哪些域名、IP、URL 收到了访问,是否成功以及延迟情况等;从服务日志中可以查到 Exception 的信息,调用堆栈等,对于排查问题来说非常关键。但是日志数据通常量比较大,不够结构化,存储成本较高。

处理日志这个场景,也有很多专门的系统,比如开源产品ELK和Loki,商业产品Splunk和Datadog,下面是在 Kibana 中查询日志的一个页面。

监控场景及开源监控方案选型,云原生微服务监控,开源

可观测性最后一大支柱 链路追踪。微服务一个问题具体是哪个模块导致的,排查非常困难。

链路追踪思路

以请求串联上下游模块,为每个请求生成一个随机字符串作为请求ID。服务之间互相调用时,把该ID逐层往下传递,每层分别耗费多久,是否正常处理,都可收集附到该请求ID。后面追查问题时,拿着请求ID就可将串联的所有信息提取。链路追踪这个领域也有很多产品,如 Skywalking、Jaeger、Zipkin都是翘楚。

虽把可观测性领域划分3大支柱,但它们之间有很强关联关系。如经常会从日志提取指标,转存到指标监控系统,或者从日志中提取链路信息来做分析,业界都有实践。

本专栏聚焦指标监控领域,把这领域讲透,助你在工作中快速落地实践。

3 解决方案横评

了解业界方案优缺点,对选型有大助。这里主要评价开源方案。

3.1 老代整体方案代表Zabbix

企业级开源解决方案,擅长设备、网络、中间件监控。因为前几年使用监控系统主要就是用来监控设备和中间件,所以Zabbix在国内应用非常广泛。

核心构成

Zabbix Server与可选组件Zabbix Agent。Zabbix Server可通过SNMP、Zabbix Agent、JMX、IPMI等多种方式采集数据,它可以运行在Linux、Solaris、HP-UX、AIX、Free BSD、Open BSD、OS X等平台。

配套组件,Zabbix Proxy、Zabbix Java Gateway、Zabbix Get、Zabbix WEB等,共同组成Zabbix整体架构:

监控场景及开源监控方案选型,云原生微服务监控,开源

优点
  • 对各种设备的兼容性较好,Agentd不但可以在Windows、Linux上运行,也可在Aix运行
  • 架构简单,使用数据库做时序数据存储,易于维护,备份和转储都较易
  • 社区庞大,资料多。Zabbix大概是2012年开源的,因为发展的时间比较久,在网上可以找到海量资源
缺点
  • 使用数据库做存储,无法水平扩展,容量有限。如采集频率较高,比如10秒采集一次,上限大约可监控600台设备,还要把数据库部署在一个高配机器,如SSD或NVMe的盘
  • Zabbix面向资产的管理逻辑,监控指标的数据结构较为固化,没有灵活的标签设计,面对云原生架构下动态多变的环境,显得力不从心

老国产代表 Open-Falcon

Open-Falcon在Zabbix后,开发初衷就是解决Zabbix容量问题。Open-Falcon最初来自小米,14年开源,当时小米有3套Zabbix,1套业务性能监控系统perfcounter。Open-Falcon初衷想做大一统方案,来解决这乱局。Open-Falcon架构图:

监控场景及开源监控方案选型,云原生微服务监控,开源

Open-Falcon基于RRDtool做了一个分布式时序存储组件Graph。这可将多台机器组成一个集群,大幅提升海量数据处理能力。前面负责转发的组件是Transfer,Transfer对监控数据求取一个唯一ID,再对ID做哈希,就可生成监控数据和Graph实例的对应关系,这就是Open-Falcon架构中最核心的分片逻辑。

告警部分用Judge模块,发送告警事件Alarm模块,采集数据Agent,心跳模块HBS,聚合监控数据的模块是Aggregator,负责处理数据缺失的模块是Nodata。和用户交互的Portal/Dashboard模块。

Open-Falcon把组件拆散,组件较多,部署较麻烦。不过每个组件的职能单一,二次开发较容易,很多互联网公司都是基于Open-Falcon二开,如美团、快网、360、金山云、新浪微博、爱奇艺、京东、SEA等。

优点

  • 可以处理大规模监控场景,比Zabbix的容量要大得多,不仅可以处理设备、中间件层面的监控,也可以处理应用层面的监控,最终替换掉了小米内部的perfcounter和三套Zabbix。
  • 组件拆分得比较散,大都是用Go语言开发的,Web部分是用Python,易于做二次开发。

缺点

  • 生态不大,是小米公司在主导,很多公司二开,但都没回馈社区,贡献者数量较少
  • 开源软件治理架构不够优秀,小米公司核心开发人员离职,项目就停滞,小米公司后续也没有大的治理投入,相比托管在基金会的项目,缺少生命力

新一代整体方案代表 Prometheus

Prometheus设计思路来自Google的Borgmon,师出名门,就像Borgmon为Borg而生,Prometheus就是为Kubernetes而生。它针对Kubernetes直接支持,提供多种服务发现机制,大幅简化Kubernetes的监控。

在Kubernetes环境下,Pod创建和销毁非常频繁,监控指标生命周期大幅缩短,导致类似Zabbix这种面向资产的监控系统力不从心,而且云原生环境下大都是微服务设计,服务数量变多,指标量也呈爆炸态势,对时序数据存储提出高要求。

Prometheus 1.0设计较差,但2.0重新设计时序库,性能、可靠性都大幅提升,社区涌现越来越多的Exporter采集器,非常繁荣。

Prometheus架构图:

监控场景及开源监控方案选型,云原生微服务监控,开源

Prometheus优点:

  • 对Kubernetes支持很好,目前看,Prometheus就是Kubernetes监控标配
  • 生态庞大,有各种各样Exporter,支持各种时序库作为后端存储,也很好支持多种不同语言SDK,供业务代码嵌入埋点
缺点
  • 易用性差些,如告警策略需要修改配置文件,协同起来比较麻烦。当然了,对于IaC落地较好的公司,反而认为这样更好,不过在国内当下的环境来看,还无法走得这么靠前,大家还是更喜欢用Web界面来查看监控数据、管理告警规则。
  • Exporter参差不齐,通常是一个监控目标一个Exporter,管理起来成本比较高。
  • 容量问题,Prometheus默认只提供单机时序库,集群方案需要依赖其他的时序库。

新一代国产代表 Nightingale

Nightingale 可看做 Open-Falcon 的一个延续,因为开发人员是一拨人,不过两个软件的定位截然不同,Open-Falcon 类似 Zabbix,更多的是面向机器设备,而Nightingale 不止解决设备和中间件的监控,也希望能一并解决云原生环境下的监控问题。

但 Kubernetes 环境下,Prometheus 已大行其道,再重复造轮意义不大,所以 Nightingale 是和 Prometheus 做良好的整合,打造更完备方案。当下的架构,主要是把 Prometheus 当成一个时序库,作为 Nightingale 的一个数据源。如果不使用 Prometheus 也没问题,如用 VictoriaMetrics 时序库。

监控场景及开源监控方案选型,云原生微服务监控,开源

优点
  • 有比较完备的UI,有权限控制,产品功能比较完备,可以作为公司级统一的监控产品让所有团队共同使用。Prometheus一般是每个团队自己用自己的,比较方便。如果一个公司用同一套Prometheus系统来解决监控需求会比较麻烦,容易出现我们上面说的协同问题,而Nightingale在协同方面做得相对好一些。
  • 兼容并包,设计上比较开放,支持对接 Categraf、Telegraf、Grafana-Agent、Datadog-Agent 等采集器,还有Prometheus生态的各种Exporter,时序库支持对接 Prometheus、VictoriaMetrics、M3DB、Thanos 等。
缺点
  • 考虑到机房网络割裂问题,告警引擎单独拆出一个模块下沉部署到各机房,但很多中小公司无需这么复杂架构,部署维护起来较麻烦
  • 告警事件发送缺少聚合降噪收敛逻辑,官方解释是未来会单独做一个事件中心的产品,支持Nightingale、Zabbix、Prometheus等多种数据源的告警事件,但目前还没放出

如主要需求是监控设备,推荐Zabbix;如主要需求是监控Kubernetes,可选Prometheus+Grafana;如既兼顾传统设备、中间件监控场景,又兼顾Kubernetes做成公司级方案,推荐Nightingale。

4 总结

监控产品的需求来源,即监控问题域,从及时感知系统出现的问题,到现在希望预知问题,并可洞察业务经营数据,越来越多诉求让我们意识到监控重要性。

指标监控是可观测性三大支柱产品之一,日志监控和链路追踪三者联系紧密,共同辅助我们衡量系统内外部健康状况。指标监控因历史数据存储成本较低,实时性好,生态庞大,是可观测性领域里最重要的一根支柱,也是我们关注的重点。

最后对指标监控领域的多个开源解决方案横评对比,助技术方案选型。针对指标监控的几个开源方案的优缺点比较思维导图:

监控场景及开源监控方案选型,云原生微服务监控,开源

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都国企技术专家兼架构,多家大厂后台研发和架构经验,负责复杂度极高业务系统的模块化、服务化、平台化研发工作。具有丰富带团队经验,深厚人才识别和培养的积累。

参考:文章来源地址https://www.toymoban.com/news/detail-813912.html

  • 编程严选网

到了这里,关于监控场景及开源监控方案选型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比

    作者:刘军 不论您是一名开发者、架构师、CTO, 如果您曾深度参与在微服务开发中,那么相信您一定有过开源微服务框架或体系选型的疑问:Apache Dubbo、Spring Cloud、gRPC 以及 Service Mesh 体系产品如 Istio,到底应该选型哪一个?这篇文章对这几个框架进行了详细的说明,并在选

    2024年02月11日
    浏览(27)
  • 【监控】Zabbix:企业级开源监控解决方案

    zabbix是一个监控软件,其可以监控各种网络参数,保证企业服务架构安全运营,同时支持灵活的告警机制,可以使得运维人员快速定位故障、解决问题。zabbix支持分布式功能,支持复杂架构下的监控解决方案,也支持web页面,为主机监控提供了良好直观的展现。 官网 zabbix主

    2024年02月12日
    浏览(30)
  • 国标GB28181视频融合监控汇聚云平台的方案及场景

    Liveweb国标视频融合云平台基于端-边-云一体化架构,部署轻量简单、功能灵活多样,平台可支持多协议(GB28181/RTSP/Onvif/海康SDK/Ehome/大华SDK/RTMP推流等)、多类型设备接入(IPC/NVR/监控平台),在视频能力上,可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、

    2024年01月20日
    浏览(38)
  • liveweb国标GB28181视频融合监控汇聚云平台的方案及应用场景

    liveweb国标视频融合云平台基于端-边-云一体化架构,部署轻量简单、功能灵活多样,平台可支持多协议(GB28181/RTSP/Onvif/海康SDK/Ehome/大华SDK/RTMP推流等)、多类型设备接入(IPC/NVR/监控平台),在视频能力上,可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、

    2024年01月20日
    浏览(43)
  • K8s 场景下 Logtail 组件可观测方案升级-Logtail 事件监控发布

    随着K8s和云的普及,越来越多的公司将业务系统部署到云上,并且使用K8s来部署应用。Logtail是SLS提供的日志采集Agent,能够非常好的适应K8s下各种场景的日志采集,支持通过DaemonSet方式和Sidecar方式采集Kubernetes集群的容器标准输出或者文件日志。Logtail作为一个K8s场景下非常重

    2024年01月17日
    浏览(31)
  • 【配置教程】撑起月6亿PV开源监控解决方案

    上次分享过《一个.Net Core开源监控解决方案,支持Redis、Elasticsearch、SqlServer》,这是Stack Overflow 开源的监控产品,基于.Net Core开发的监控解决方案。 大家对这个监控系统都非常刚兴趣,但是由于这个项目官方文档不够详细,另外网络的资料都是过时的,所以有很多粉丝朋友一

    2024年02月01日
    浏览(41)
  • 云原生场景下,AIGC 模型服务的工程挑战和应对

    “成本”、“性能”和 “效率”正在成为影响大模型生产和应用的三个核心因素,也是企业基础设施在面临生产、使用大模型时的全新挑战。AI 领域的快速发展不仅需要算法的突破,也需要工程的创新。 首先,AI 商业化的时代,大模型推理训练会被更加广泛的使用。比较理

    2024年02月02日
    浏览(32)
  • 开源视频监控服务器Shinobi

    什么是 Shinobi ? Shinobi 是用 Node.JS 编写的开源 CCTV 解决方案。采用多帐户系统、 WebSocket Streams 和直接保存到 MP4 的设计。 Shinobi 提供了一个基于 Web 的用户界面,使用户可以通过浏览器来查看和管理监控视频, Shinobi 支持多个品牌的摄像头和网络视频流,并提供了广泛的定制选

    2024年02月07日
    浏览(31)
  • 【开源软件】服务器状态监控通知平台

    声明:   本文仅以学习交流为目的分享自己的开发成果,希望为更多人提供开发设计的思路,还请善待笔者的开发成果。有任何问题欢迎在文章下方留言或私信,也欢迎评论或私信指教,和大家共同进步! 开发语言: C、C++ 开发平台: Linux、Windows 开发工具: Vim、Qt Crea

    2024年02月02日
    浏览(29)
  • 开源监控服务uptime-kuma

    好久没写文章了,刚好最近用了一个开源的监控服务,感觉蛮有意思的,记录一下 uptime-kuma安装方式有几种,这里当然是选择大家都爱的docker,一条命令搞定 PS一下: 上面的 -v uptime-kuma:/app/data 其实干了两件事,一是创建数据卷uptime-kuma(docker volume create uptime-kuma),至于卷的

    2024年02月05日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包