监控的意义
我们如何及时的获得这些应用的运行状态信息,在出现问题时能够及时知道,这就是监控要做的事情
监控的对象
通常情况下,我们可以将监控对象这么来分:
1.服务器监控,主要监控服务器如:CPU 负载、内存使用率、磁盘使用率、登陆用户数、进程状态、网卡状态等。
2.应用程序监控,主要监控该应用程序的服务状态,吞吐率和响应时间,因为不同应用需要监控的对象不同,这里不一一列举。
3.数据库监控,只所以把数据库监控单独列出来,足以说明它的重要性,一般监控数据库状态,数据库表或者表空间的使用情况,是否有死锁,错误日志,性能信息等等。
4.网络监控,主要监控当前的网络状况,网络流量,端口,连接等。
监控软件
- zabbix
- prometheus
- nagios
- ganglia
- open-falcon
- cacti
1.nagios图形不是特别好,也可以安装图形插件,但是仍然不够直观
2.nagios一般情况下如果需要图形可以和cacti配合使用
3.cacti的监控是轮询监控,效率低,图形相对nagios比较好看
4.zabbix和nagios因为是并发监控,对cpu的要求更高
5.zabbix在性能和功能上都强大很多
6.zabbix的图形相当美观
7.支持多种监控方式 zabbix-agent snmp JVM等等
8.支持分布式监控,能监控的agent非常多,丰富的监控模板
9.zabbix有图形的web配置界面,配置简洁
10.zabbix支持自动发现功能
Zabbix应用手册
1、Zabbix介绍
Zabbix 是一种企业级的分布式开源监控解决方案。 Zabbix 是一款能够监控众多网络参数和服务器的健康度和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的警报。这样可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报告和数据可视化。这些功能使得 Zabbix 成为容量规划的理想选择。 Zabbix 支持轮询和被动捕获。所有的 Zabbix 报告、统计信息和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您的网络状态和服务器健康状况可以从任何地方进行评估。在经过适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于拥有少量服务器的小型组织,还是拥有大量服务器的大型公司而言,同样适用。 Zabbix 是开源的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和分发的。这意味着它的源代码是免费开放的,并且可供公共使用。
Zabbix 优点
监控端(zabbix-server)
被监控(zabbix-agent1)
被监控(zabbix-agent2)
监控模板(包含:监控项:监控的指标 触发器:判断监控到的数据是否正常)
- 开源,无软件成本投入 - Server 对设备性能要求低 - 支持设备多,自带多种监控模板 - 支持分布式集中管理,有自动发现功能,可以实现自动化监控 - 当监控项比较多,服务器队列比较大时可以采用被动模式,被监控端主动从监控端去下载需要监控的item 然后取数据上传到监控端。 这种方式对监控端的负载比较小。 - Api接口的支持,方便与其他系统结合
Zabbix 缺点
zabbix-server(Mysql5.7) zabbix-agent
- 需在被监控主机上安装 agent,所有数据都存在数据库里, 产生的数据据很大,瓶颈主要在数据库。 - 项目批量修改不方便 - 系统级别报警设置相对比较多,如果不筛选的话报警邮件会很多;并且自定义的项目报警需要自己设置,过程比较繁琐; - 缺少数据汇总功能,如无法查看一组服务器平均值,需进行二次开发;
2、Zabbix功能
- 可用性和性能采集;
- 支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
- 自定义检查;
- 按照自定义的时间间隔采集需要的数据;
- 通过 Server/Proxy 和 Agents 来执行数据采集。
- 您可以定义非常灵活的告警阈值,称之为触发器,触发器从后端数据库获得参考值。
- 可以根据递增计划、接收者、媒介类型自定义发送告警通知;
- 使用宏变量可以使告警通知变得更加高效有益;
- 自动动作包含远程命令。
- 使用内置图形功能可实以将监控项绘制成图形。
- Zabbix 可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。
- 能够创建可以将多个监控项组合到单个视图中的自定义图形;
- 网络拓扑图;
- 以仪表盘样式展示自定义聚合图形和幻灯片演示;
- 报表;
- 监控资源的高层次(业务)视图。
- 存储在数据库中的数据;
- 可配置的历史数据;
- 内置数据管理机制(housekeeping)。
- 将被监控设备添加为主机;
- 主机一旦添加到数据库中,就会采集主机数据用于监控;
- 将模板用于监控设备。
- 在模板中分组检查;
- 模板可以关联其他模板,获得继承。
- 自动发现网络设备;
- Zabbix Agent 发现设备后自动注册;
- 自动发现文件系统、网络接口和 SNMP OIDs 值。
- 基于 PHP 的 Web 前端;
- 可以从任何地方访问;
- 您可以定制自己的操作方式;
- 审计日志。
- Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。
- 安全的用户身份验证;
- 将特定用户限制于访问特定的视图。
- 部署于被监控对象上;
- 完美支持 Linux 和 Windows ;
- 为了更好的性能和更少的内存占用,采用 C 语言编写;
- 便于移植。
- 使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。
3、ZABBIX 概述
架构
Zabbix 由几个主要的功能组件组成,其职责如下所示。
SERVER
Zabbix server 是 Zabbix agent 向其报告可用性、系统完整性信息和统计信息的核心组件。是存储所有配置信息、统计信息和操作信息的核心存储库。
数据库
所有配置信息以及 Zabbix 收集到的数据都被存储在数据库中。
WEB 界面
为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
PROXY
Zabbix proxy可以替 Zabbix server 收集性能和可用性数据。Zabbix proxy 是 Zabbix 环境部署的可选部分;然而,它对于单个 Zabbix server 负载的分担是非常有益的。
AGENT
Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
数据流
此外,重要的是,需要回过头来了解下 Zabbix 内部的整体数据流。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,必须有一个监控项,然后创建触发器。最后,您必须有一个触发器来触发一个动作,这几个点构成了一个完整的数据流。因此,如果您想要收到 CPU load it too high on Server X 的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监视其 CPU 的监控项,最后创建一个触发器,用来触发 CPU is too high 这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,其实并不复杂。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
4、Zabbix定义
主机(host)
你想要监控的联网设备,有IP/DNS。
主机的逻辑组;可能包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主