关于监控系统

本贴最后更新于 2451 天前,其中的信息可能已经时移俗易

为什么需要监控系统

监控在运维工具中属于最基础的运维系统,因为人工不可能 24 小时去盯着服务器各种运行状态,而且实际需要监控的指标也是非常的多,所以这就需要借助工具来帮助我们对系统的各种状态进行实时监控。

在监控系统中需要做到的基础功能

  • 数据采集,对监控的指标基于时间流式做周期性的采样。
  • 对采集数据进行存储(如需要进行展示)
  • 对采集到的不合理指标发出告警(如发短信,邮件,或即时通讯工具等)
  • 对采集的数据进行展示

需要能对各种设备进行监控,服务器,路由器等网络设备,甚至对网络状态的监控。

监控指标

系统指标

CPU, Memory, IO(Disk, Network)等

对硬件做操作系统级别的监控,如:

CPU: sys(内核态的 CPU 消耗比例),user(用户态的 CPU 消耗比例),idle(闲置时间比例)等
Memory: total(总大小), used(已用大小), free(剩余大小), cached(缓存占用),buffer(缓冲区占用)等

业务指标

对各种业务应用系统状态进行监控。

监控方式

SNMP

SNMP 全称叫做 Simple Network Managerment Protocol 即简单网络管理协议;
他既有数据指标采集的功能,同时也有一定的管理功能;比如他可以在监控到某个指标异常后触发管理操作完成自动修复。所以他被成为简单网络管理协议;他至今已经升级了三个版本,但他们都存在很多缺陷,甚至是非常严重的缺陷,所以他也不被建议作为数据指标的采集方式。所以大多数监控工具也没有主要采用 SNMP 做为数据指标采集的协议,而是采用各自专门设计的协议。

Server/Agent

所谓 Server/Agent 就是监控工具采用自己专门的客户端来进行数据的采集,为了安全他们应该为他们配置专有的运行用户,在 Server 端运行 Server 守护进程,在客户端运行 Agent 守护进程。 Server 端向 Agent 端发送数据采集指令后,Agent 端通过提前设计好的操作指令使用专用用户权限对数据进行采集,对于没有权限操作的指令他将无法进行采集。

b3c2549611cd4900bb47f31cd07c3a9b-monitor1img.png

对于这种模式只能适用于如 类 Linux, Windows,Macos 对于一些网络设备如路由器,交换机等他们还是离不开传统的监控方式,比如使用 SSH,Telnet,SNMP。

IPMI

IPMI 全称 Intelligent Platform Management Interface 即智能平台监控接口;在一些专业级别的服务器设备中厂商会在他们硬件级别嵌入 IPMI 接口,他不依赖与操作系统,即便服务器没有安装操作系统,他们照样能监控到这些硬件的指标。

JMX

JMX 全称 Java Mangaenment Extensions 即 Java 管理扩展;在实际业务模式中,有很多程序是由 JAVA 语言所开发,这些 JAVA 程序依赖与 JVM Java 虚拟机,JVM 其内部非常的复杂,他控制着在他之上运行的程序所需要的一些资源,如内存,所以我们也需要对他内部的状态进行监控;这就需要通过 JVM 的 JMX 来实现了。

数据存储

对采集到的数据我们需要进行存储;在实际应用中对于单个系统的监控项可能就多达十几个,再加上一些对各种服务的监控,加起来可能有上百个,如果有上百台服务器,那可能监控项就有上万个了。对于数据的采集是进行周期性采集的,如果周期过长,出现故障时我们不能即时收到故障告警,所以采集周期越短我们越能在极短的时间收到故障告警,但这样我们需要存储的数据量就越大,对监控服务器的压力也就越大。为了减小压力我们可以将关键型的指标采集周期设置的短一些,非关键型指标周期设置长一些。

数据库问题

对于数据库如果使用关系型数据库系统,如 MySQL,他的 tps 与 qps 比较低,如果监控项非常多,那对 MySQL 的压力是非常大的。可能我们需要保存过去一年的数据,那存储的数据量会非常的大。所以就需要对历史数据做聚合计算存储,比如只取每小时的最大值、最小值和平均值。这样一来短期内数据库既要存储历史数据又要存储聚合数据,那压力又会增加。
所以有一些监控系统会采用其他类型的数据库系统,比如 cacti 所采用的 rrd(round-robin database),他是一个环形数据库,他有固定的大小,写入的数据到达这个环的起始点就开始采用覆盖的方式将最早的数据覆盖掉。
一些新型的监控系统也开始采用专门为时序数据存储开发的时序数据库系统,如 influxdb。

告警方式

对于告警方式常见的有发短信、发邮件;发短信那监控服务就需要能支持调用发短信的 API,同样发邮件也需要支持调用邮件服务。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...