无监控不运维—浅述各种监控方案使用场景
监控是运维的第一道防线,业务系统可以不做运维自动化,甚至可以不做 DevOps,但一定不能不做监控。监控是业务的“眼睛”,能让对应的异常问题在第一时间被发现,只有这样我们才能第一时间去解决问题。运维工作做的好不好,更多的是看监控有没有加好。下面是从传统环境到云环境各种监控方案使用的场景及特点介绍。
1、脚本监控
应用场景
通过 Shell 或者 Python 脚本,甚至 Java、PHP 来完成监控需求。这个监控解决方案一般用于不懂运维的研发人员,他们一般没听说过监控系统,也不知道用什么监控系统,所以就用自己擅长的开发语言,来完成日常的监控需求。
特点介绍
主要做些系统基础监控指标(CPU/内存/网卡/磁盘)报警。缺乏中间件、应用层监控。缺乏监控数据存储、数据查看等监控集中化管理平台。
2、Nagios 监控
应用场景
IT 基础架构监控的行业标准,主要应用在主机系统、交换机路由器等网络设备的监控上。
特点介绍
主要偏向做主机系统、交换机路由器等网络设备的监控。偏向主机层面监控,比如在 Nginx、Tomcat 等应用中间件性能方面监控偏弱。监控数据的图形展示效果很差。很多功能通过插件化来实现,对技术能力要求很高。
3、Nagios+Cacti 监控
应用场景
Cacti 是一套基于 PHP、MySQL、SNMP 及 RRDTool 开发的网络流量监测图形分析工具。Cacti 可以单独部署使用用以监控网络流量,监控数据图形界面展示效果比较好。整合 Cacti 和 Nagios 是利用了 Cacti 的一个插件 Nagios for Cacti(NPC),它的原理是将 Nagios 的数据通过 ndo2db 导入到 MySQL 数据库(Cacti 的库)中,然后 Cacti 读取数据库信息将 Nagios 的结果展示出来。
特点介绍
Cacti 的良好数据展示,弥补了 Nagios 监控软件的不足,但监控的内容和 Nagios 是一样的。
4、Zabbix 监控
应用场景
Zabbix 不仅仅能做 Nagios 主机、网络设备层面的监控,还能满足企业级其他方面的监控需求,用于监控中间件、日志。有完善详细的 API,支持企业级定制化开发。可以通过 API 把 Zabbix 集成在其他运维自动化平台中。
特点介绍
资料丰富,入门简单,有完善的社区支持,有详细的报表图标绘制,支持自动发现网络设备和服务器,支持分布式集中管理、管理监控点。但是 Server 端的数据存储用的是以 MySQL 为主的关系型数据库,Server 端存在很严重的性能问题。需要在监控的目标主机中安装 Agent,这样将会存在安全隐患。同时对容器监控支持还在持续完善。
5、云监控
应用场景
云监控(CloudMonitor)是一项针对阿里云资源和互联网应用进行监控的服务。云监控是一项针对阿里云资源和互联网应用进行监控的服务。
特点介绍
提供自定义查看监控数据的功能,可以在一张监控大盘中跨产品、跨实例查看监控数据,将相同业务的不同产品实例进行集中展现。
提供跨云产品、跨地域的云产品资源分组管理功能,支持从业务角度集中管理业务线涉及的服务器、数据库、负载均衡、存储等资源。
提供云产品服务各类异常事件的报警功能,也支持自定义事件类型数据的上报、查询、报警功能。
开源中间件之类的监控,需要通过自定义监控调用云 API 来完成,有一定的研发要求,监控门槛较高。
6、Prometheus+Grafana 监控
应用场景
监控系统 &时序数据库,Prometheus 是一个监控系统,并没有和关键字 IT 有所关联,这是因为任何监控目标,只要暴露出标准的 HTTP 协议的 Metric 数据,Prometheus 就都能监控到。类似于容器监控需求,通过 Prometheus 很方便地就能实现,因此 Prometheus 被誉为容器开源解决方案的最佳实践。
特点介绍
时序数据库是典型 NoSQL 分布式数据库,使用它不用担心数据库的性能问题。
灵活的数据模型,特别适用于对动态灵活性高的容器的监控。
采用 HTTP 协议,使用 pull 模式拉取数据,简单易懂。
要每个中间件或者监控目标都要单独安装 Export,如果有多个监控目标的话,多个监控目标对应暴露 HTTP 服务端口,在维护管理等方面非常不便。
Prometheus 的监控项值只能为浮点数据类型,不能为字符串数据类型,这个就具有局限性了。
7、Telegraf+InfluxDB+Prometheus 监控
应用场景
解决了原生态 Prometheus 需要安装多个 Export 且只能存储浮点数据类型的问题,同时也解决了 TICK 技术栈中在监控数据图形展示、报警通知等方面的缺陷。
特点介绍
但是该架构仅解决了主机+中间件的监控问题,无法解决以下监控问题:
云产品监控:对 RDS、SLB、OSS、VPC、CDN 等云产品的监控。
站点监控:站点的可用性、响应时间、延时监控。
日志监控:日志的存储、日志查询、日志监控报警。
代码监控:业务代码层次,比如 Java、PHP 代码层面的性能监控。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/b7428cc0881e568d02fede096】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论