二十年里12个开源监控工具大对比

注:本文会不定期持续更新,目前已经增加到为13个工具的对比。

推荐指数:

Cacti,最悠久的监控系统之一,2001年9月,一个名叫LanBerry的高中生,当时他还在为一家小的ISP厂商工作,为了更好地监控网络质量,开发了Cacti的第一个版本,基于RRDtool,提供更友好的使用体验。

RRDtool使用的数据存储格式,大家也常常称之为环状数据库,其工作方式有三个显著的特点:第一,RRD文件在创建的时候,其文件大小就确定下来了,随着数据的不断写入,RRD文件的大小一直保持不变;第二,数据每次更新到RRD文件的时候,都会触发RRD文件中的归档策略,也就是数据采样策略;第三,查询历史数据的时候,会自动选择最优化的采样数据,而不是全量获取数据,查询效率很高。

使用RRDtool的过程中遇到过一些问题,RRDtool的数据是以文件的形式存储在磁盘上,以单机的形式来提供服务的,这样就存在容量上限。该上限的决定因素较多,比如磁盘容量、磁盘IO、CPU等,但是最核心的制约因素就是磁盘IO,用户每push一次数据,都会转化为对相应的RRD文件的一些全量的读/写,磁盘IO会最先遇到瓶颈。在一台普通的Linux服务器上,在1分钟push数据的频率下,一般20万条的Counter上报就会跑满磁盘IO。这显然无法满足较大规模数据下的监控需求。

为了在一定程度上缓解磁盘IO压力的问题,RRDtool官方提供了一个组件rrdcached,这是一个常驻内存的后台程序,用户可以把读/写请求通过网络发送给rrdcached,而不是直接操作磁盘。rrdcached内部做了一些优化措施来减轻对磁盘的读/写压力,包括:缓存RRD文件的header部分,每次数据push上来的时候可以减少一次读取操作;对RRD文件的写入,提供了用户态的缓存,即把用户的多次写入操作合并成一次flush到磁盘上,这样有效地提高了写入效率。通过该项优化,使得单机的容量提升不少。不过上述优化,也只能解决一定程度上的问题,整体容量仍然局限于单机的容量上限。

Collectd相比Cacti、RRDtool来说,较为年轻一些,项目最早是在2005年由FlorianForster开发的,之后便蓬勃发展成为一个开源的项目,很多开发者对其做了大量的改进和扩展。Collectd的定位是收集和传输数据。在告警方面不是Collectd的设计初衷,不过它也支持一些简单的阈值判定,并发送告警信息。要支持更高级的一些告警需求,Collectd可以和Nagios配合使用,有一个名为collectd-nagios的插件可以很方便地完成这个功能。

Collectd是一个用C语言开发的常驻内存的程序,由一堆功能强大的插件组成,其架构示意图如图1所示。

Nagios可以监控各种网络服务,比如SMTP、POP3、HTTP、NTP、ICMP、FTP、SSH等,也可以监控主机资源,比如CPU、Load、磁盘使用、Syslog等。基本工作模式如图2所示。

这里介绍两个比较重要的概念:NRPE和SNMP。

NRPE的全称是NagiosRemotePluginExecutor,是Nagios的Agent,这可以让Nagios具备监控远程主机和设备的能力。Nagios服务端,通过check_nrpe插件会定期地调用运行在远程主机上的NRPE,执行具体的脚本来获取数据,比如check_load、check_disk、check_ftp等。

SNMP(SimpleNetworkManagementProtocol,简单的网络管理协议)是一种应用层协议,被路由器、交换机、服务器、工作站、打印机等网络设备广泛支持,主要用于管理和监控网络设备。SNMP的工作方式主要有三种:管理员需要向设备获取数据,SNMP提供了“读”操作;管理员需要向设备执行设置操作,SNMP提供了“写”操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,SNMP提供了“Trap”操作。

SNMP的基本思想是:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义一个统一的接口和协议,使得管理员可以使用统一的方式对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高了网络管理的效率,简化了网络管理员的工作。Nagios很好地利用了SNMP的读和Trap功能,很容易地获取各种网络设备的运行数据,达到监控的目的。

Zabbix作为一款企业级分布式监控系统,功能齐全,用户体验良好,文档完善,API强大,适合于中小规模的公司或者团队使用。

Zabbix的主要特点有:

在以上特点中,尤其是API功能,完善程度很高,基本上Zabbix的大部分操作都提供了相应的API接口,方便用户编程,和现有的一些系统进行整合。比如以下一些场景。

Zabbix主要由Server、Agent、Proxy和Web-portal几个部分组成。典型的Zabbix的部署模式如下图所示。

Zabbix的数据采集,主要有两种模式:Server主动拉取数据和Agent主动上报数据。以前者为例,用户在Web-portal中,配置好机器,并给机器应用相应的模板后,Zabbix-server就会定期地去获取Agent的数据,存储到MySQL中,同时根据用户配置的策略,判定是否需要告警。用户可以在Web端,以图表的形式,查看各种指标的历史趋势。

在Zabbix中,将Server主动拉取数据的方式称之为activecheck。这种方式配置起来较为方便,但是会对Zabbix-server的性能存在影响,所以在生产环境中,一般会选择主动推送数据到Zabbix-server的方式,称之为trapper。即用户可以定时生成数据,再按照Zabbix定义的数据格式,批量发送给Zabbix-server,这样可以大大提高Server的处理能力。

Proxy是Zabbix具备分布式监控能力的一个必备条件,试想我们有一批服务器和网络设备位于防火墙之后,Zabbix-server无法直接访问这些Agent,这时候我们可以选择在防火墙的后面放置一个Zabbix-proxy,那么Proxy就会充当Server的角色,定期收集它所负责的这些Agent的数据,然后定期推送回Zabbix-server。另外,Proxy还可以分担Server的压力,代替Server定期拉取数据,再统一push给Server,这样可以有效地降低Server的开销。

在Zabbix的设计中,以下几个概念是最重要的。

Zabbix在业务处于较小规模的时候,效果还是相当不错的。但是当监控的对象超过上千台设备,并且还包括一些服务自身的业务指标也推送到Zabbix的时候,我们遇到了两个严重的问题——Zabbix的性能问题和用户的“使用效率”低下问题。

Zabbix的性能问题主要存在两个方面,一是Zabbix-server处理能力有限,尤其当activecheck模式的采集项较多的时候,会显著消耗Server的Puller线程,使得数据采集延迟,产生堆积,造成报警延迟。我们可以调大Puller的线程数,缓解这个问题,但Zabbix-server自身无法水平扩展,所以不能解决根本问题;二是Zabbix的数据存储引擎存在性能瓶颈,我们线上采用的是MySQL,当数据采集项过多的时候,比如在每分钟大概有20万采集项的规模下,MySQL的写入会达到瓶颈。

综上所述,在业务规模较小的前提下,Zabbix是一个很可靠的开源解决方案。在业务规模不断增长的情况下,需要投入较多的精力在其性能优化上。

OpenTSDB的部署结构和工作流程如下图所示。

HBase为数据存储引擎,TSD是OpenTSDB最核心的组件,和HBase的所有数据交互都通过TSD来完成。TSD是一个常驻内存的进程,是无状态的,可以水平扩展。

OpenTSDB提供了Web界面,通过HTTP的接口向TSD查询数据;我们也可以编写一些插件,比如告警插件,从TSD中获取某个指标的数据来判定是否满足阈值,以及是否需要告警。

TDengine是一款开源、云原生的时序数据库,专为物联网、工业互联网、金融、IT运维监控等场景设计并优化。它能让大量设备、数据采集器每天产生的高达TB甚至PB级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警,从大数据中挖掘出商业价值。

此外,TDengine也可以作为Prometheus的分布式时序数据库,来解决存储的扩展性问题。Prometheus是一款流行的开源监控告警系统。Prometheus于2016年加入了CloudNativeComputingFoundation(云原生云计算基金会,简称CNCF),成为继Kubernetes之后的第二个托管项目,该项目拥有非常活跃的开发人员和用户社区。

Prometheus提供了remote_write和remote_read接口来利用其它数据库产品作为它的存储引擎。为了让Prometheus生态圈的用户能够利用TDengine的高效写入和查询,TDengine也提供了对这两个接口的支持。

通过适当的配置,Prometheus的数据可以通过remote_write接口存储到TDengine中,也可以通过remote_read接口来查询存储在TDengine中的数据,充分利用TDengine对时序数据的高效存储查询性能和集群处理能力。

vmstorage、vminsert、vmselect三者组合构成VictoriaMetrics的集群功能,三者都可以通过启动多个实例来分担承载流量,通过要在vminsert和vmselect前面架设负载均衡。

vmstorage是数据存储模块:

vminsert接收来自客户端的数据写入请求,并负责转发到选定的vmstorage:

vmselect接收来自客户端的数据查询请求,并负责转发到所有的vmstorage查询结果,最后将结果merge后返回:

Prometheus是由前Google工程师从2012年开始在Soundcloud以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了Prometheus作为监控告警工具。Prometheus的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了证明这一点,Prometheus于2016年5月加入CNCF基金会,成为继Kubernetes之后的第二个CNCF托管项目。

Prometheus是一个开源的完整监控解决方案,其对传统监控系统的测试和告警模型进行了彻底的颠覆,形成了基于中央化的规则计算、统一分析和告警的新模型。相比于传统监控系统Prometheus具有以下优点:

1.易于管理

Prometheus核心部分只有一个单独的二进制文件,不存在任何的第三方依赖(数据库,缓存等等)。唯一需要的就是本地磁盘,因此不会有潜在级联故障的风险。

Prometheus基于Pull模型的架构方式,可以在任何地方(本地电脑,开发环境,测试环境)搭建我们的监控系统。对于一些复杂的情况,还可以使用Prometheus服务发现(ServiceDiscovery)的能力动态管理监控目标。

2.监控服务的内部运行状态

Pometheus鼓励用户监控服务的内部状态,基于Prometheus丰富的Client库,用户可以轻松的在应用程序中添加对Prometheus的支持,从而让用户可以获取服务和应用内部真正的运行状态。

3.强大的数据模型

4.强大的查询语言PromQL

Prometheus内置了一个强大的数据查询语言PromQL。通过PromQL可以实现对监控数据的查询、聚合。同时PromQL也被应用于数据可视化(如Grafana)以及告警当中。

通过PromQL可以轻松回答类似于以下问题:

5.高效

对于监控系统而言,大量的监控任务必然导致有大量的数据产生。而Prometheus可以高效地处理这些数据,对于单一PrometheusServer实例而言它可以处理:

6.可扩展

Prometheus是如此简单,因此你可以在每个数据中心、每个团队运行独立的PrometheusSevrer。Prometheus对于联邦集群的支持,可以让多个Prometheus实例产生一个逻辑集群,当单实例PrometheusServer处理的任务量过大时,通过使用功能分区(sharding)+联邦集群(federation)可以对其进行扩展。

7.易于集成

使用Prometheus可以快速搭建监控服务,并且可以非常方便地在应用程序中进行集成。目前支持:Java,JMX,Python,Go,Ruby,.Net,Node.js等等语言的客户端SDK,基于这些SDK可以快速让应用程序纳入到Prometheus的监控当中,或者开发自己的监控数据收集程序。同时这些客户端收集的监控数据,不仅仅支持Prometheus,还能支持Graphite这些其他的监控工具。

同时Prometheus还支持与其他的监控系统进行集成:Graphite,Statsd,Collected,Scollector,muini,Nagios等。

Prometheus社区还提供了大量第三方实现的监控数据采集支持:JMX,CloudWatch,EC2,MySQL,PostgresSQL,Haskell,Bash,SNMP,Consul,Haproxy,Mesos,Bind,CouchDB,Django,Memcached,RabbitMQ,Redis,RethinkDB,Rsyslog等等。

8.可视化

PrometheusServer中自带了一个PrometheusUI,通过这个UI可以方便地直接对数据进行查询,并且支持直接以图形化的形式展示数据。同时Prometheus还提供了一个独立的基于RubyOnRails的Dashboard解决方案Promdash。最新的Grafana可视化工具也已经提供了完整的Prometheus支持,基于Grafana可以创建更加精美的监控图标。基于Prometheus提供的API还可以实现自己的监控可视化UI。

9.开放性

通常来说当我们需要监控一个应用程序时,一般需要该应用程序提供对相应监控系统协议的支持。因此应用程序会与所选择的监控系统进行绑定。为了减少这种绑定所带来的限制。对于决策者而言要么你就直接在应用中集成该监控系统的支持,要么就在外部创建单独的服务来适配不同的监控系统。

而对于Prometheus来说,使用Prometheus的clientlibrary的输出格式不止支持Prometheus的格式化数据,也可以输出支持其它监控系统的格式化数据,比如Graphite。

因此你甚至可以在不使用Prometheus的情况下,采用Prometheus的clientlibrary来让你的应用程序支持监控数据采集。

不过prometheus在落地生产环境的过程中,目前存在以下痛点:

监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案。之后,随着业务规模的持续快速增长,监控的对象也越来越多,越来越复杂,监控系统的使用对象也从最初少数的几个SRE,扩大为更多的DEVS,SRE。这时候,监控系统的容量和用户的“使用效率”成了最为突出的问题。

夜莺除了对接时序库,还可以对接各类采集器agent,比如telegraf、categraf、datadog-agent、各类exporter等,不同的数据库、中间件都有提供一些现成的仪表盘、告警规则,这样可以快速上手,省心不少。下面是夜莺内置的模板中心:

很多朋友不会写promql,但是promql在Prometheus生态里又极为重要,那能否让一些资深工程师提前写好,沉淀下来,普通工程师直接用呢?夜莺支持的指标视图就是干这个事的,目前已经内置沉淀了几百个promql,开箱即用。

虽然已经内置了不少仪表盘了,但是还是不如grafana那么丰富,grafana在看图这块确实无出其右,夜莺内置的那些仪表盘,如果你觉得够用了,就用,如果觉得不够用,建议还是上grafana,下图是夜莺内置的一个仪表盘样例:

Prometheus可以搞定数据采集、存储问题,并提供查询接口、查询语言,但是对于数据的展示,Prometheus本身并不是很强大,通常大家会选择使用Grafana作为展示工具。

Grafana不仅仅为Prometheus提供了很多的Dashboard模板,而且还支持多种数据源,比如InfluxDB、Elasticsearch、Loki、MySQL、PostgreSQL、CloudWatch、Zabbix等等。Grafana的可视化能力,基本就是开源领域的标杆甚至事实标准了。

THE END
1.Windows10的16款最佳免费网络监控软件下载推荐合集:哪个最好用?有这么多选择可能很难为你的环境和预算选择最好的免费网络监控软件和解决方案。以下是精选的最佳网络监控软件列表。此列表包括免费和付费的开源工具。那么让我们来看看这个适用于 Windows 的免费网络监控工具。 1. OP5 Monitor 热门免费网络监控软件推荐:OP5 Monitor是一款免费的网络监控工具,用于基于 Naemon的Windows软https://www.lsbin.com/45634.html
2.科学网—最佳46款免费软件(同步精译版)4最佳免费浏览器保护工具 5最佳免费防火墙 6最佳免费木马扫描/移除工具 7最佳免费Rootkit扫描/移除工具 8最佳免费入侵检测防护工具 9最佳免费匿名上网服务产品 10最佳免费软件汇集 11最佳免费文件管理器 12最佳免费邮件客户端 13最佳免费Web Mail收取工具 14最佳免费剪贴板增强工具 https://blog.sciencenet.cn/blog-66445-40404.html
3.网工必知:用于监控企业网络的10款最佳工具,拿走!不谢!这10款监控工具,第一要介绍的就是SolarWinds,它是在网络和系统管理最知名的工具之一。它自带超过30多种齐全的工具,可以满足各种需求。特别是,solarwinds最优秀的工具就是netflow流量采集和分析器、带宽监控工具、NPM(网络性能监控器)。solarwinds也提供了一些知名的免费工具,如子网掩码计算器和TFTP服务器。 https://blog.51cto.com/u_15127557/2702470
4.4.9KStar开源国产的轻量级服务器监控工具,支持多种资源监控6.使用功能:在 Nezha 界面中,您可以开始管理服务器,进行实时监控,访问终端和管理文件。 Nezha 提供了强大的服务器管理和监控功能,简化了服务器管理的过程,并提供了一种简单而高效的方式来管理 Linux 服务器和虚拟主机。无论您是一位经验丰富的开发人员还是一个新手,Nezha 都能帮助您更轻松地管理您的服务器资源。https://cloud.tencent.com/developer/article/2336288
5.13个网络监控工具Pandora FMS是一种开源监控工具,可帮助企业观察整个IT基础架构。它不仅具有网络监控功能,还具有Windows和Unix服务器以及虚拟接口。对于网络,Pandora FMS包含诸如ICMP轮询,SNMP支持,网络延迟监控和系统过载等功能。还可以在设备上安装代理,以观察设备温度,以及日志文件等因素。 http://www.360doc.com/content/20/0405/19/64353657_904062015.shtml
6.2024年13个最佳API自动化测试工具监控和分析功能 价格: 基本版使用免费,付费订阅价起为 12 美元/月。 网址: 可以查看详细的Postman 系列教程。 3.JMeter JMeter是一种流行的开源工具,用于负载和性能测试,也可用于 REST API 测试,适合测试大型、复杂的系统或具有各种配置的应用程序。 https://apifox.com/apiskills/best-api-automated-testing-tools/
7.2020年17种服务器监控软件和工具用户可以通过Web界面以及集成的移动应用程序访问这些功能。 结论 我们列出的顶级服务器监视工具有一个共同目标-监视服务器和应用程序的正常运行时间以及运行状况。这些工具大多数都提供功能有限的免费试用版或免费版本,因此请确保在选择适合您服务器的最佳服务器监控工具之前先进行尝试。https://www.febhost.com/help/detail/192.html
8.2024年10款最佳密码管理器:安全易用实惠Bitwarden 是价格实惠的开源密码管理器,具备优秀的安全功能。它应用多种符合行业标准的安全特性保护用户的数据安全,比如 AES 256 位加密算法和零知识协议,还提供多种 2FA 验证选项,以及本地数据存储、密码安全检查和数据泄露监控等高级附加功能。 Bitwarden 的免费套餐很赞。用户可以跨无限台设备存储无数条密码,并与一https://zh.safetydetective.com/best-password-managers/
9.闽江师范高等专科学校计算机系2022年实训室建设采购项目附件7.2报名期限内,供应商应通过福建省政府采购网上公开信息系统的注册账号(免费注册)对本项目进行报名(请根据项目所在地,登录对应的福建省政府采购网上公开信息系统报名(即省本级网址/地市分网))。未报名将导致其不能下载采购文件且响应文件被拒收。 8.获取采购文件时间、地点、方式: 8.1采购文件的提供期限:详见磋商公告http://zfcg.fuzhou.gov.cn/upload/document/20220824/9453695dc7014de5ad256b6134d012e0.html
10.网络监控神器!这7大免费开源工具可别错过雷峰网对普通用户来说,免费总比收费好,因此今天雷锋网编辑决定把自己压箱底的开源工具分享出来,希望它们能守护好各位的网络。这 7 大免费工具可以满足用户从网络到服务器监控的各种需求,里面甚至还有交换机和路由器的备份。 Cacti 此前如果要监控网络链路流量负载,大家一般会用到 MRTG 这个工具。上世纪 90 年代,Tobi Oetihttps://www.leiphone.com/news/201708/qHNNfgX8BNElcDGN.html
11.开源免费的IT监控和管理工具TacticalRMMTactical RMM 是一个开源的远程监控和管理工具,它结合了多种技术栈来构建其解决方案。该工具使用 Django 框架(一个用 Python 编写的 Web 应用程序框架)和 Vue.js(一个用于构建用户界面的渐进式 JavaScript 框架)来创建其前端和后端服务。此外,该项目还使用 Go 语言编写了一个代理,这个代理可能与 MeshCentral 集成http://www.clicksun.cn/mis/bbs/showbbs.asp?id=25178
12.前25名服务器监控工具Dotcom获取我们精选的前 25 种服务器监控工具的专家,以帮助监控您网站的正常运行时间并为您的用户提供最佳体验。http://www.dotcom-monitor.com/blog/zh-hans/%E5%89%8D-25-%E5%90%8D%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9B%91%E6%8E%A7%E5%B7%A5%E5%85%B7/
13.中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景中华人民共和国国民经济和社会发展第十四个五年(2021—2025年)规划和2035年远景目标纲要,根据《中共中央关于制定国民经济和社会发展第十四个五年规划和二〇三五年远景目标的建议》编制,主要阐明国家战略意图,明确政府工作重点,引导规范市场主体行为,是我国开启全面建设社会主义现代化国家新征程的宏伟蓝图,是全国各族人民共同https://fzgh.beihua.edu.cn/info/1011/1477.htm
14.GitHub上高质量有趣实用的开源技术教程开发者工具编程坚持分享 GitHub 上高质量、有趣实用的开源技术教程、开发者工具、编程网站、技术资讯。A list cool, interesting projects of GitHub. - 551685830/GitHubDailyhttps://github.com/551685830/GitHubDaily
15.电脑监视软件监视软件下载系统监视软件工具ProcessExplorer官方版是款适合电脑中使用的增强型任务管理工具。Process Explorer正式版不仅可以帮你监视或重启、终止任何程序,还可以让您清楚了解程序的运行变化情况。并且Process Explorer还能够看到您电脑在运行的程序和CPU、内存的使用情况,方便您管理电脑的后台程序。华军软件园提供Process Explorer软件的下载服务,下载Prochttps://soft.onlinedown.net/sort/143/
16.推荐常用的7款最佳开源运维监控软件!老男孩Linux培训对于企业而言,保证服务器的安全性是非常重要的一项工具,因为服务器是确保网站、业务正常运行的关键,所以做好监控防御工作是十分必要的。在这种情况下,好用的运维监控软件是必不可少的,它是提高我们工作效率的重中之重,那么好用的运维监控软件有哪些?本文为大家介绍常用的7款最佳开源运维监控软件! https://www.oldboyedu.com/blog/3969.html
17.推荐一款开源免费的监控工具Kaelthas监控工具帮助企业管理复杂的基础设施并保持系统稳定。常见的监控工具有Zabbix、Prometheus、SwkingWalking等工具。下面推荐一款开源免费,操作简单的监控工具 - kaelthas。 ? 1. 主要功能 对kaelthas整体功能的简要描述,kaelthas包含了哪些监控维度,能够使用户全面便捷地监控。 https://blog.csdn.net/tiklab2022/article/details/143769929
18.介绍6款开源免费的网络监控工具网络监控是保障网络系统和数据安全的重要手段,能够帮助运维人员及时发现并应对各种问题,及时发现并解决,从而确保网络的顺畅运行。 文本将简单介绍6款开源免费的网络监控工具,并准备了对应的资料文档,建议运维工程师收藏。 一、zabbix Zabbix 是一款开源的、成熟的、企业级的网络监控解决方案。Zabbix可以监控各种网络参数,保https://www.elecfans.com/d/6364847.html
19.十三款流行无线黑客工具介绍在本文中,我将讨论无线网络的安全和最佳的WiFi密码破解或恢复工具,解释无线网络使用的加密类型以及这些工具如何破解网络以获取访问权限。https://www.freebuf.com/sectool/195898.html
20.想要开挂进阶Java架构师?这份超强(长)学习计划单请签收!继续学习应用监控与调优,首先学习到各种应用调优常用技巧,之后进阶并发编程4板斧,并实战线程池调优,Tomcat调优的多种方式,最后综合实战,加深理解。配套干货:《linux安装tomcat》《并发编程与锁的底层原理》《2w字长文,让你瞬间拥有「调用链」开发经验》知识拓展:《Java并发核心知识体系精讲》 https://www.imooc.com/article/297630