一:监控介绍

 你用过哪些监控软件?
 zabbix 和 nagios、cacti、ganglia 有什么区别?
 zabbix 有那些好处?
 zabbix 的监控流程是什么?
 zabbix 常见监控项有那些?

1. cacti

Cacti 是一套基于 PHP、MySQL、SNMP 及 RRD Tool 开发的监测图形分析工具,Cacti 是使用轮询的方式由主服务器向设备发送数据请求来获取设备上状态数据信息的,如果设备不断增多,这个轮询的过程就非常的耗时,轮询的结果就不能即时的反应设备的状态了。Cacti 监控关注的是对数据的展示,却不关注数据异常后的反馈。如果凌晨 3 点的时候设备的某个数据出现异常,除非监控人员在屏幕前发现这个异常变化,否则是没有任何报警机制能够让我们道出现了异常。

2. Nagios

Nagios 是一款开源的免费网络监控报警服务,能有效监控Unix、Windows和Linux的主机状态,交换机、路由器和防火墙等网络设置,打印机、网络投影、网络摄像等设备。在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信通知。Nagios 有完善的插件功能,可以方便的根据应用服务扩展功能。
Nagios 已经可以支持由数万台服务器或上千台网络设备组成的云技术平台的监控,它可以充分发挥自动化运维技术特点在设备和人力资源减少成本。只是 Nagios 无法将多个相同应用集群的数据集合起来,也不能监控到集群中特殊节点的迁移和恢复。

3. Ganglia

Ganglia 是 UC Berkeley 发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia 的核心包含 gmond、gmetad 以及一个 Web 前端。主要是用来监控系统性能,如:CPU 、内存、硬盘利用率, I/O 负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用,目前是监控HADOOP 的官方推荐服务。

4. Zabbix

Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix 是由 Alexei Vladishev 创建,目前由 Zabbix SIA 在持续开发和支持。
Zabbix 是一个企业级的分布式开源监控方案。
Zabbix 是一款能够监控各种网络参数以及服务器健康性和完整性的软件。
Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。
基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。
Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。
Zabbix是免费的。Zabbix是根据GPL通用公共许可证第2版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用。

二:监控软件区别

1.nagios图形不是特别好,也可以安装图形插件,但是也不怎么好看
2.nagios一般情况下如果需要图形可以和cacti配合使用
3.cacti的监控是轮询监控,效率低,图形相对nagios比较好看
4.zabbix和nagios因为是并发监控,对cpu的要求更高
5.zabbix在性能和功能上都强大很多
6.zabbix的图形相当漂亮
7.支持多种监控方式 zabbix-agent snmp 等等
8.支持分布式监控,能监控的agent非常多
9.zabbix有图形的web配置界面,配置简洁
10.zabbix支持自动发现功能

三:zabbix监控架构

zabbix-server
                      |
      ------------------------------
     |                                    |

—proxy— —proxy—
| | | |
agent agent agent agent

四:zabbix监控介绍

1. zabbix优点

开源,无软件成本投入
Server 对设备性能要求低
支持设备多,自带多种监控模板
支持分布式集中管理,有自动发现功能,可以实现自动化监控
开放式接口,扩展性强,插件编写容易
Api 的支持,方便与其他系统结合

2. zabbix缺点

需在被监控主机上安装 agent,所有数据都存在数据库里, 产生的数据据很大,瓶颈主要在数据库。

3. zabbix监控系统监控对象

(数据库,应用软件,集群,虚拟化软件,操作系统,硬件设备,网络)
 数据库: MySQL,MariaDB,Oracle,SQL Server agent
 应用软件:Nginx,Apache,PHP,Tomcat agent

 集群: LVS,Keepalived,HAproxy,RHCS,F5 agent
 虚拟化: VMware,KVM,XEN ,docker,k8s agent
 操作系统:Linux,Unix,Windows性能参数 agent

 硬件: 服务器,存储,网络设备 IPMI
 网络: 网络环境(内网环境,外网环境) SNMP

4. zabbix监控方式

被动模式:
相对于agent而言;agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server。
主动模式:
相对于agent而言;agent(active),agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server。

五:zabbix相关组件

1. Zabbix Server(服务器监控端)

Zabbix server 是 agent 程序报告系统可用性、系统完整性和统计数据的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。

2. Zabbix 数据库存储

所有配置信息和 Zabbix 收集到的数据都被存储在数据库中。

3. Zabbix Web 界面

为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。
如果使用 SQLite,Zabbix Web 界面必须要跟Zabbix Server运行在同一台物理机器上。

4. Zabbix Proxy 代理服务器,可代替zabbix服务器搜集数据

Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。

5. Zabbix Agent 监控代理

Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。

6. Zabbix 数据流是指整个流程

 监控方面,为了创建一个监控项(item)用于采集数据,必须先创建一个主机(host)。
 告警方面,在监控项里创建触发器(trigger),通过触发器(trigger)来触发告警动作(action)。 因此,如果你想收到Server XCPU负载过高的告警,必须满足
1、为Server X创建一个host并关联一个用于对CPU进行监控的监控项(Item)。
2、创建一个Trigger,设置成当CPU负载过高时会触发
3、Trigger被触发,发送告警邮件
虽然看起来有很多步骤,但是使用模板的话操作起来其实很简单,Zabbix 这样的设计使得配置机制非常灵活易用。

六:Zabbix 常用术语的含义

1、主机 (host) 监控的主机ip地址
一台你想监控的网络设备,用IP或域名表示
2、主机组 (host group) 监控的主机IP要田间到一个主机组方便管理
主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。
3、监控项 (item) 监控的主机项目或指定数据
你想要接收的主机的特定数据,一个度量数据。
4、触发器 (trigger) 为监控项定义的一个数据阈值,超过值就触发
一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式 当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。
5、事件 (event) 触发器状态发生问题变化,就代表一个事件的发生
单次发生的需要注意的事情,例如触发器状态改变或发现有监控代理自动注册
6、异常 (problem)
一个处在“异常”状态的触发器
7、动作 (action)
一个对事件做出反应的预定义的操作。
一个动作由操作(例如发出通知)和条件(当时操作正在发生)组成
8、升级 (escalation)
一个在动作内执行操作的自定义场景; 发送通知/执行远程命令的序列
9、媒介 (media)
发送告警通知的手段;告警通知的途径
10、通知 (notification)
利用已选择的媒体途径把跟事件相关的信息发送给用户
11、远程命令 (remote command)
一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令
12、模版 (template)
一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合
模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。
13、应用 (application)
一组监控项组成的逻辑分组
14、web 场景 (web scenario)
利用一个或多个HTTP请求来检查网站的可用性
15、前端 (frontend)
Zabbix提供的web界面
16、Zabbix API 接口
Zabbix API允许你使用JSON RPC协议 (是一个无状态且轻量级的远程过程调用(RPC)传送协议,其传递内容透过 JSON 为主) 来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务
17、Zabbix server
Zabbix软件实现监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等
18、Zabbix agent
一个部署在监控对象上的,能够主动监控本地资源和应用的程序
Zabbix agent 部署在监控的目标上,主动监测本地的资源和应用(硬件驱动,内存,处理器统计等)。
Zabbix agent收集本地的操作信息并将数据报告给Zabbix server用于进一步处理。一旦出现异常 (比如硬盘空间已满或者有崩溃的服务进程), Zabbix server会主动警告管理员指定机器上的异常。. Zabbix agents 的极端高效缘于它可以利用本地系统调用来完成统计数据的收集。
19、被动(passive)和主动(active)检查
Zabbix agents 可以执行被动和主动两种检查方式
1、被动检查(passive check) 模式中 agent 应答数据请求,Zabbix server(或者proxy)询问agent数据,如CPU 的负载情况,然后 Zabbix agent 回送结果。
2、主动检查(Active checks) 处理过程将相对复杂。 Agent 必须首先从 Zabbix sever 索取监控项列表以进行独立处理,然后周期性地发送新的值给server。
执行被动或主动检查是通过选择相应的监测项目类型来配置的。item type. Zabbix agent 处理监控项类型有 Zabbix agent 和 Zabbix agent (active)。
20、Zabbix proxy
一个帮助 Zabbix Server 收集数据,代理是分担Zabbix Server的负载的程序。
Zabbix Proxy 是一个可以从一个或多个受监控设备收集监控数据,并将信息发送到Zabbix sever的进程,基本上是代表 sever工作的。 所有收集的数据都在本地进行缓存,然后传送到 proxy 所属的 Zabbix sever。
部署 Proxy 是可选的,但是可能非常有益于分散单个 Zabbix sever 的负载。 如果只有 proxy 收集数据,sever上的进程就会减少 CPU 消耗和磁盘 I / O 负载。
Zabbix proxy 是完成远程区域、分支机构、没有本地管理员的网络的集中监控的理想解决方案。
Zabbix proxy需要使用独立的数据库。

七:zabbix监控部署

环境准备

两台服务器,一台做zabbix-server,一台做zabbix-agent
zabbix-server	10.0.1.3
zabbix-agent	10.0.1.4
关闭防火墙
关闭selinux
保证yum仓库可用
保证网络可用

zabbix-server端部署

1. 安装zabbix仓库

[root@xingdian ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

2. 安装zabbix-server

[root@xingdian ~]# yum -y install zabbix-server-mysql zabbix-agent

3. 安装Zabbix前端

[root@xingdian ~]# yum -y install centos-release-scl

4. 编辑文件/etc/yum.repos.d/zabbix.repo并启用zabbix-frontend存储库。

[root@xingdian ~]# vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1
...

5. 安装zabbix前端包

[root@xingdian ~]# yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl

6.安装数据库

安装数据库仓库

[root@xingdian ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 
[root@xingdian ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm

修改数据库版本:禁用8.0版本启用5.7版本

[root@xingdian ~]# yum -y install yum-utils
[root@xingdian ~]# yum-config-manager --disable mysql80-community
[root@xingdian ~]# yum-config-manager --enable mysql57-community
[root@xingdian ~]#vim  /etc/yum.repos.d/mysql-community.repo
关闭gpgcheck=0

安装数据库

[root@xingdian ~]# yum -y install mysql mysql-server

7.启动数据库

[root@xingdian ~]# systemctl start mysqld

8.修改数据库密码

[root@xingdian ~]# cat /var/log/mysqld.log | grep password
[root@xingdian ~]# mysqladmin -u root -p'oof0t+PNpgyX' password 'QianFeng@123'

9.创建数据库zabbix,并设置字符集为utf-8

[root@xingdian ~]# mysql -u root -pQianFeng@123
mysql> create database zabbix character set utf8 collate utf8_bin;

10. 授权账户访问zabbix库

mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'QianFeng@123';

11. 数据库导入

[root@xingdian ~]# zcat /usr/share/doc/zabbix-server-mysql5.0/create.sql.gz | mysql -uzabbix   -p zabbix (库名)
注意:如果要是数据库单独一台服务器的话导表方式
yum -y install mariadb 拥有mysql的命令
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz  | mysql  -userver -h 192.168.222.131 -P 3306     -p server (库名)
-h是指定主机名  -P 指定端口号3306  -p  指定库名
方法二:导表
[root@xingdian ~]#mysql -u root -pQianFeng@123
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'QianFeng@123';
[root@xingdian ~]#cp /usr/share/doc/zabbix-server-mysql/create.sql.gz  /root
[root@xingdian ~]#gzip -d create.sql.gz
[root@xingdian ~]#mysql -u root -pQianFeng@123 zabbix < /root/create.sql

拓展学习:
非交互式登录数据库MySQL
mysql -h 192.168.5.240 -P 3306 -u root -p123 mysql -e 
'select user,host from user'
-h 指定主机名 【默认为localhost】
-P MySQL服务器端口 【默认3306】
-u 指定用户名 【默认root】
-p 指定登录密码 【默认为空密码】
此处mysql为指定登录的数据库 
-e 接SQL语句 (在脚本中使用)

12. 为Zabbix前端配置PHP

编辑文件取消注释并设置正确的时区。
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai

13. 为Zabbix服务器配置数据库

编辑文件/etc/zabbix/zabbix_server.conf
DBName=zabbix                100行  库名
DBUser=zabbix                116行  授权的用户名
DBPassword=QianFeng@123      124行  授权的用户密码

14. 启动Zabbix服务器

[root@xingdian ~]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@xingdian ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

15. 浏览器访问

http://192.168.222.131/zabbix
用户名默认是:Admin 密码:zabbix 这里的用户名和密码区分大小写

zabbix和imc哪个好用 zabbix和cacti_zabbix和imc哪个好用

zabbix-agent部署

1. 做zabbix的yum源

[root@xingdian-agent ~]#  rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

2. 安装zabbix-agent

[root@xingdian-agent ~]# yum -y install zabbix-agent

3. zabbix-agent的配置

[root@xingdian-agent ~]# vim /etc/zabbix/zabbix_agentd.conf
117行 Server=192.168.182.5  //这里的ip是zabbix-server的
158行 ServerActive=192.168.182.5  //这里的ip是zabbix-server的
169行 Hostname=web1   //主机名,自定义
328行 UnsafeUserParameters=1  //是否限制用户自定义 keys 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符
EnableRemoteCommands=1 是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险,手动添加

[root@xingdian-agent ~]#visudo   #修改sudo的配置,添加如下信息
zabbix ALL=(ALL) NOPASSWD:ALL   第93行

4. 启动zabbix-agent

[root@xingdian-agent ~]# systemctl restart zabbix-agent   
Zabbix-server端口号是10051;Zabbix-agent端口号是10050。

zabbix-server监控zabbix-agent

主机群组-主机-监控项-图形-触发器-动作-媒介

1. 创建主机群主(名字自定义)

zabbix和imc哪个好用 zabbix和cacti_运维_02

zabbix和imc哪个好用 zabbix和cacti_mysql_03

2. 创建主机

zabbix和imc哪个好用 zabbix和cacti_zabbix和imc哪个好用_04

zabbix和imc哪个好用 zabbix和cacti_网络_05

主机名称:自定义
群组:选择刚刚创建的主机群组
ip地址:填写zabbix-agent的地址

3. zabbix-agent安装web服务

[root@xingdian-agent ~]# yum -y install nginx

4. 创建简单网站

[root@ecs-af30 ~]# rm -rf /etc/nginx/nginx.conf
[root@ecs-af30 ~]# cp /etc/nginx/nginx.conf.default  /etc/nginx/nginx.conf
[root@xingdian-agent ~]# echo "hello xingdian" > /usr/share/nginx/html/index.html

5. 启动服务

[root@xingdian-agent ~]# systemctl start nginx

6. zabbix-server配置监控,配置监控项

zabbix和imc哪个好用 zabbix和cacti_网络_06


zabbix和imc哪个好用 zabbix和cacti_zabbix和imc哪个好用_07

名称:自定义
键值:选择如下图
信息类型:浮点数

zabbix和imc哪个好用 zabbix和cacti_网络_08

host:192.168.182.120   //zabbix-agent的ip地址
path:index.html
port:80

7. 创建触发器

zabbix和imc哪个好用 zabbix和cacti_zabbix和imc哪个好用_09


zabbix和imc哪个好用 zabbix和cacti_zabbix和imc哪个好用_10


zabbix和imc哪个好用 zabbix和cacti_服务器_11

名称:自定义
严重性:自定义选择
表达式:见下图

zabbix和imc哪个好用 zabbix和cacti_网络_12

监控项:选择刚刚创建的

zabbix和imc哪个好用 zabbix和cacti_网络_13

功能:选择前一个值,大于0

zabbix和imc哪个好用 zabbix和cacti_运维_14

8. 修改触发器的值查看报警

注意:修改的触发器的值为0.00000003
去仪表盘查看报警

zabbix和imc哪个好用 zabbix和cacti_服务器_15

9. 创建监控图表

配置------主机------图形

zabbix和imc哪个好用 zabbix和cacti_服务器_16


zabbix和imc哪个好用 zabbix和cacti_网络_17


zabbix和imc哪个好用 zabbix和cacti_运维_18

名称:自定义
图形类型:层积的
监控项:之前创建的

zabbix和imc哪个好用 zabbix和cacti_运维_19


zabbix和imc哪个好用 zabbix和cacti_mysql_20

<> 里面的是可选参数,不设置,采用默认参数,默认参数是谁,由官方
统一定义例如 net.if.in[ens33]  这里没有使用 <mode>参数,按照官方定义,这个默认值是bytes 字节数