一篇文章带你了解当下主流的监控工具

  • 2019 年 11 月 22 日
  • 筆記

监控做为自动化运维的重要组成部分,承担着反馈的作用。

以往,在缺少告警机制的情况下,企业无法第一时间洞悉到系统发生故障,只能通过用户的反馈来获取,系统运维人员往往也只是充当了一个“救火” 队员,大面积的系统瘫痪往往也会给企业和用户带来极大的损失

当下,通过监控,企业可以在系统受损的第一时间得到反馈,及时处理问题,大大减小了系统故障对企业和用户造成的影响,更有可以做到无感知的修复。

选择监控工具的原则是根据公司业务场景选择,而不要盲目的追求新工具(如果公司内部有一定的研发能力,且对监控工具的需求比较大,那尝试新工具也未尝不可)。

但是大多数企业对于监控都是新模块,面对琳琅满目的监控工具,不知所措。是选择便宜的商业软件,还是选择开源工具自主开发,还是选择第三方公司外包。今天就跟大家分享目前市场上最热的十个监控工具详解,希望能够帮助您更好的选择到合适的监控工具。

Prometheus

官方网站:https://prometheus.io/docs/introduction/overview/

Prometheus是一套开源的监控系统,它将所有信息都存储为时间序列数据;因此实现一种Profiling监控方式,实时分析系统运行的状态、执行时间、调用次数等,以找到系统的热点,为性能优化提供依据。

本身的功能在于数据的提取,不具备监控功能,但是依靠它周边组件从而实现了强大的监控功能。

优点:

  • 易管理性,核心部分只有一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
  • 业务数据相关性,监控服务的运行状态,从而让用户可以获取服务和应用内部真正的运行状态。
  • 高效,单一Prometheus可以处理数以百万的监控指标;每秒处理数十万的数据点。
  • 易于伸缩,通过使用功能分区(sharing)+联邦集群(federation)可以对Prometheus进行扩展,形成一个逻辑集群;Prometheus提供多种语言的客户端SDK。
  • 良好的可视化,自带有Prometheus UI,还提供了一个独立的基于Ruby On Rails的Dashboard解决方案Promdash。

缺点:

  • 对于Prometheus的使用者来说,所有的公制端点都必须是可达的,这意味着一个更加复杂的安全网络配置。
  • 在大型部署中,扩展成为一个问题,Prometheus建议采用一种基于推特的方法来收集短期的工作指标。
  • Prometheus的主要设计目标之一是操作简单性。这样,Prometheus就限制了监控系统的可能失效模式数量,遵循着一原则,Prometheus目前只局限于单个点,因为集群带来了额外的操作复杂性,使用单个节点不那么复杂,但是对可以由Prometheus监控的度量指标适量有着严格的限制。

Zabbix

官方网站:https://www.zabbix.com/

Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,在企业中有非常全面的应用,也是目前国内互联网用户中使用最广的监控软件。

入门容易、上手简单、功能强大并且开源免费是对Zabbix的最直观评价。Zabbix易于管理和配置,能生成比较漂亮的数据图,其自动发现功能大大减轻日常管理的工作量,丰富的数据采集方式和API接口可以让用户灵活进行数据采集,而分布式系统架构可以支持监控更多的设备。理论上,通过Zabbix提供的插件式架构,可以满足企业的任何需求。

优点:

  • 支持多平台的企业级分布式开源监控软件
  • 安装部署简单,多种数据采集插件灵活集成
  • 功能强大,可实现复杂多条件告警,
  • 自带画图功能,得到的数据可以绘成图形
  • 提供多种API接口,支持调用脚本
  • 出现问题时可自动远程执行命令(需对agent设置执行权限)

缺点:

  • 项目批量修改不方便;
  • 中文资料较少,服务支持有限:
  • 入门容易,但是深层次需求需要非常熟悉 Zabbix 并进行大量的二:次定制开发,难度较大;
  • 系统级别报警、报警邮件、自定义项目报警需要自己设置,过程繁琐;
  • 缺少数据汇总功能,数据报表也需进行二次开发。

Nagios

官方网站:https://www.nagios.org/

Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信通知。

Nagios提供一个基于浏览器的web界面,方便管理人员查看系统的运行状态,网络状态、服务状态、日志信息,以及其他异常现象。

优点:

  • 出错的服务器、应用和设备会自动重启,自动日志滚动
  • 配置灵活,可以自定义shell脚本,通过分布式监控模式
  • 支持以冗余方式进行主机监控,报警设置多样
  • 命令重新加载配置文件无需打扰Nagios的运行

缺点:

  • 事件控制台功能弱,插件易用性差
  • 对性能、流量等指标的处
  • 无历史数据,难追查故障
  • 配置复杂,初学者费时长

Open-falcon

官方网址:http://open-falcon.org/

小米的监控系统:OpenFalcon是一款企业级、高可用、可扩展的开源监控解决方案。

可以从运营级别(基本配置即可),以及应用级别(二次开发,通过端口进行日志上报),对服务器、操作系统、中间件、应用进行全面的监控,及报警。

优点:

  • 自动发现,支持 falcon-agent. Snmp、支持用户主动 push、用户自定义插件支持;
  • 支持单周期亿次的数据采集、告警判定、历史数据存储和查询;
  • 支持策略模板、模板继承和覆盖、多种告警方式、支持 callback 调用;
  • 单机支撑 200 万 metric 的上报、归档、存储;
  • 采用 rdool 的数据归档策略;
  • 多维度的数据展示,用户自定义 Screen;
  • 通过各种插件目前支持 Linux、Windows、Mysql、Redis、Memache RabbitMQ 和交换机监控。

缺点:

  • 发布时间较短;
  • 不支持很多基础的服务监控插件(如 Tomcat、apache 等);
  • 功能不完善
  • 无专门运维支撑,社区运营有欠缺。

Ganglia

官方网站:http://ganglia.info/

Ganglia监控系统是UC Berkeley开源的一个项目,设计初衷就是要做好分布式集群的监控。监控层面包含资源层面和业务层面,资源层面包含cpu、memory、disk、IO、网络负载等

它是一个易于扩展的监控系统。使用它可以实时查看 Linux 服务器和集群(图形化展示)中的各项性能指标。

优点:

  • 适合监控系统性能,通过曲线很容易见到每个节点的工作状态
  • 可以自定义监控项,监控展示有表格和图像两种,支持手机版
  • 部署方便,通过不同的分层管理上万台机器,无需逐个添加配置,有利于后期的大规模扩张。

缺点:

  • 没有内置的消息通知系统
  • 没有报警机制,出现问题不能够及时报警

Cacti

官方网站:https://www.cacti.net/

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。

优点:

  • 开源,自由发行,开放源代码,运行高效。
  • 跨平台,支持的平台redhat 、windows 、solaris、centos 、suse
  • 界面友好,图形丰富、各种模板、自定义模板
  • 可扩展,支持二十种的插件,丰富的插件资源,大大提高了cacti的功能。

缺点:

  • 使用文本式的数据库,数据不能重复使用;
  • 只能按日、周、月、年来查看数据;每图只能画两个DS(一条线、一个块);
  • 每取一次数据即需要绘图一次,浪费系统资源;
  • 不具备管理功能。

Graylog

官方网站:https://www.graylog.org/

Graylog是一个开源的完整的日志管理工具,功能和ELK类似,但又比ELK要简单,是强大的日志管理、分析工具。它基于 Elasticsearch, Java和MongoDB。Graylog可以收集监控多种不同应用的日志

优点:

  • 一体化方案,安装方便,不像ELK有3个独立系统间的集成问题。
  • 个性化定制开发(带来很大的自由度)采集日志的脚本,
  • 搜索结果高亮显示。
  • 搜索语法简单

缺点:

  • 不能处理多行日志,比如Mysql慢查询,Tomcat/Jetty应用的Java异常打印
  • 不能保留原始日志,只能把原始日志分字段保存,这样搜索日志结果是一堆Json格式文本,无法阅读。
  • 不符合正则表达式匹配的日志行,被全部丢弃。

Grafana

官方网站:http://grafana.org/

Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。

Grafana是一个展示的工具,我们可以搭配Prometheus和zabbix一同使用。

Zenoss Core

官方网站:https://www.zenoss.com/

Zenoss Core是开源企业级IT管理软件-是智能监控软件,他允许IT管理员依靠单一的WEB控制台来监控网络架构的状态和健康度。

Zenoss Core的强大能力来自于深入的列表与配置管理数据库,以发现和管理公司IT环境的各类资产(包括服务器、网络、和其他结构设备)。Zenoss可以创建 关键资产清单和对应的组件级别(接口、服务、进程,已安装的软件等)。建立好模型后,就可以监控与报告IT架构中各种资源的状态和性能容限了。Zenoss同时提供与CMDB关联的事件和错误管理系统,以协助提高各类事件和提醒的管理效率。

优点:

  • 功能全面,网络管理软件所应涵盖的功能主要有:可用性管理,事件管理,性能监视等
  • 配置使用灵活,由于使用了CMDB数据库来存储数据模型对象,可以方便地对数据模型对象进行增删改操作
  • 对开发者友好,基于zenoss下的开发,方便在于开发周期短,代码简洁,上手较为容易

缺点:

  • 对资源要求较高,即使只管理少数几台设备,也需要消耗大量硬件及内存等附加资源
  • 针对windows系统,开源版只提供SNMP,通过WMI检测CPU,Disk,软硬件和性能只在收费版提供

Graphite

官方网站:https://graphiteapp.org/

Graphite 是一款用 Python 写的开源企业级监控绘图工具,可以在廉价机硬件上运行。Graphite 可以实时收集、存储、显示时间序列类型的数据。

优点:

  • 非常快,它的架构是模块化可规模化的
  • 有很多与Graphite相互协作的开源工具
  • Graphite完成单个工作且做得很好

缺点:

  • Graphite不能对数据进行分片,因此要解决这个问题就是采用多个Graphite实例
  • Graphite的安装是一个很复杂的任务,尽管目前有了完整的Docker映像可以一次性安装Graphite及其依赖