Zabbix
介绍
常见监控软件
mrtg
- mrtg(Multi Router Traffic Grapher)通过snmp协议得到设备的流量信息,并以包含PNG格式的图形的HTML文档方式显示给用户,现在很少使用
Cacti
-
Cacti (仙人掌)是一套基于 PHP、MySQL、SNMP 及 RRD Tool 开发的监测图形分析工具,Cacti 是使用轮询的方式由主服务器向设备发送数据请求来获取设备上状态数据信息的,如果设备不断增多,这个轮询的过程就非常的耗时,轮询的结果就不能即时的反应设备的状态了。
-
Cacti 监控关注的是对数据的展示,却不关注数据异常后的反馈。如果凌晨 3 点的时候设备的某个数据出现异常,除非监控人员在屏幕前发现这个异常变化,否则是没有任何报警机制能够让我们道出现了异常。
Nagios
-
Nagios 是一款开源的免费网络监控报警服务,能有效监控 Windows、Linux 和 Unix 的主机状态,交换机、路由器和防火墙等网络设置,打印机、网络投影、网络摄像等设备。在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信通知。Nagios 有完善的插件功能,可以方便的根据应用服务扩展功能。
-
Nagios 已经可以支持由数万台服务器或上千台网络设备组成的云技术平台的监控,它可以充分发挥自动化运维技术特点在设备和人力资源减少成本。只是 Nagios 无法将多个相同应用集群的数据集合起来,也不能监控到集群中特殊节点的迁移和恢复。
Ganglia
-
Ganglia 是 UC Berkeley 发起的一个开源集群监视项目,设计用于测量数以千计的节点,资源消耗非常小。
-
主要是用来监控系统性能,如:CPU 、内存、硬盘利用率, I/O 负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体 性能起到重要作用,目前是监控HADOOP的官方推荐服务。
open-falcon
-
小米发布的运维监控软件,高效率,高可用。但时间较短,用户基数小
Zabbix
-
官网:https://www.zabbix.com/ 可以设置为中文文档
-
Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
-
Zabbix 是由 Alexei Vladishev 创建,目前由 Zabbix SIA 在持续开发和支持。
-
Zabbix 是一个企业级的分布式开源监控方案。
-
Zabbix 是一款能够监控各种网络参数以及服务器健康性和完整性的软件。
-
Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。
-
Zabbix 支持主动轮询和被动捕获
-
Zabbix开源
prometheus
-
是一个基于时间序列的数值数据的容器监控解决方案
zabbix介绍
优点
- 开源,无软件成本投入
- Server对设备性能要求低
- 支持设备多,自带多种监控模板
- 支持分布式集中管理,有自动发现功能,可以实现自动化监控
- 开放式接口,扩展性强,插件编写容易
- 当监控的item比较多服务器队列比较大时,可以采用主动状态,被监控客户端主动从server 端去下载需要监控的item然后取数据上传到 server 端。 这种方式对服务器的负载比较小
- Api 的支持,方便与其他系统结合
缺点
- 需在被监控主机上安装 agent,所有数据都存在数据库里, 产生的数据据很大,瓶颈主要在数据库
- 项目批量修改不方便
- 社区虽然成熟,但是中文资料相对较少,服务支持有限
- 入门容易,能实现基础的监控,但是深层次需求需要非常熟悉Zabbix并进行大量的二次定制开发,难度较大
- 系统级别报警设置相对比较多,如果不筛选的话报警邮件会很多;并且自定义的项目报警需要自己设置,过程比较繁
- 缺少数据汇总功能,如无法查看一组服务器平均值,需进行二次开发
zabbix组件结构
- Zabbix_Server:整个监控体系中最核心的组件,它负责接收客户端发送的报告信息,所有配置、统计数据及操作 数据都由它组织
- 数据库存储:所有配置信息和Zabbix收集到的数据都被存储在数据库中
- Web界面:为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是 Zabbix Server的一部分,通常跟Zabbix Server运行在同一台物理机器上(!如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上)
- Zabbix_Proxy(可选):用于监控节点非常多的分布式环境中,它可以代理zabbix-server的功能,减轻zabbix_server的压力
- Zabbix_Agent:zabbix_agent为客户端软件,用于采集各监控项目的数据,并把采集的数据传输给zabbix_proxy或zabbix_server
zabbix监控方式
- 被动模式:
- 被动检测:相对于agent而言; server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;
- 主动模式
- 主动检测:相对于agent而言;agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server;
- 主动监控能极大节约监控server的资源。
zabbix常用术语
- 主机:一台你想监控的网络设备,用IP或域名表示
- 主机组:主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组
- 监控项:你想要接收的主机的特定数据,一个度量数据
- 触发器:一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式 当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。
zabbix监控
基本环境配置
虚拟机 | IP地址 | 主机名 |
---|---|---|
server1 | 192.168.139.10 | zabbix_server |
server2 | 192.168.139.20 | zabbix_agent1 |
server3 | 192.168.139.30 | zabbix_agent2 |
修改主机名
hostnamectl set-hostname zabbix_server
su
hostnamectl set-hostname zabbix_agent1
su
hostnamectl set-hostname zabbix_agent2
su
域名解析
cat >> /etc/hosts <<EOF
192.168.139.10 zabbix_server
192.168.139.20 zabbix_agent1
192.168.139.30 zabbix_agent2
EOF
关闭防火墙,selinux
systemctl stop firewalld
systemctl disable firewalld
iptables -F
setenforce 0
sed -i 's/SELINUX=enforced/SELINUX=disabled/' /etc/selinux/config
时间同步
ntpdate cn.ntp.org.cn
zabbix服务器安装
准备yum源,安装服务组件
[root@zabbix_server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
[root@zabbix_server ~]# yum clean all
[root@zabbix_server ~]# yum makecache
[root@zabbix_server ~]# yum install zabbix-server-mysql zabbix-web-mysql
创建初始数据库
[root@zabbix_server ~]# yum install -y mariadb-server.x86_64
[root@zabbix_server ~]# systemctl start mariadb
[root@zabbix_server ~]# systemctl enable mariadb
[root@zabbix_server ~]# mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> create user zabbix@localhost identified by '123456';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
MariaDB [(none)]> quit
导入初始架构和数据,系统将提示您输入新创建的密码
[root@zabbix_server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: 123456
为Zabbix server配置数据库
#默认值正确的不用打开注释,默认值不对的,要修改正确并打开注释
仅DBPassword和DBSocket需要修改,其他可忽略
[root@zabbix_server ~]# vim /etc/zabbix/zabbix_server.conf
[root@zabbix_server ~]# cat /etc/zabbix/zabbix_server.conf|grep -Ev '^#|^$'
ListenPort=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBSocket=