1.Zabbix的介绍

Zabbix 是一个企业级分布式开源监控解决方案。

Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。

Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保可以在任何地方访问您监控的网络状态和服务器健康状况。

Zabbix 的组成部分:
Server: Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。

数据库: 所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。

Web 界面: 为了从任何地方和任何平台轻松访问 Zabbix ,提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。

Proxy: Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。

Agent: Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。

Zabbix的功能:
数据采集: 可用性和性能检查;支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;自定义检查;自定义的时间间隔采集需要的数据; 通过 Server/Proxy 和 Agents 来执行数据采集。

灵活的阈值定义: 后端数据库定义非常灵活的告警阈值,即触发器

高度可配置化的告警: 可以根据递增计划、接收者、媒介类型自定义发送告警通知;使用宏变量可以使告警通知变得更加高效有用;自动操作包含远程执行命令。

实时图形: 使用内置图形功能可以将监控项实时绘制成图形。

Web 监控功能: zabbix可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。

丰富的可视化选项: 可以组合多个监控项到单个视图中,创建自定义图表; 网络拓扑图; 以仪表盘样式展示自定义聚合图形和幻灯片演示;报表;监控资源的更高层次展示视图(业务视图)。

历史数据存储: 存储在数据库中的数据; 历史配置; 内置数据管理机制(housekeeping)。

配置简单: 将被监控设备添加为主机; 主机一旦添加到数据库中,就会采集数据用于监控; 将模板用于监控设备。

使用模板: 模板中分组检查;模板可以关联模板,继承已关联模板的属性。

网络发现: 自动发现网络设备;Zabbix Agent 发现设备后自动注册;自动发现文件系统、网络接口和 SNMP OIDs 值。

快捷的 Web 界面:基于 PHP 的 Web 前端;可以从任何地方访问;您可以定制自己的操作方式;您可以通过审计日志来查看你的操作。

Zabbix API: Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。

权限管理系统: 安全的用户身份验证;指定的用户只能查看指定的权限范围内的视图。

功能强大且易于扩展的 Zabbix Agent: 部署于被监控对象上;支持 Linux 和 Windows ;

二进制守护进程: 为了更好的性能和更少的内存占用,采用 C 语言编写; 便于移植。

适应更复杂的环境: 使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。

2.Zabbix的部署过程:

执行操作前关闭selinux和firewalld

软件仓库的搭建

执行 rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

会出现zabbix.repo

vim zabbix.repo

gpgcheck = 0 ; 并将源换为阿里云的源 ;

zabbix监控网络 最佳实践 zabbix监控数据_数据库


安装zabbix:

yum install -y zabbix-server-mysql

安装数据库:
yum install mariadb-server -y
systemctl enable --now mariadb
进入数据库: mysql
建立库:create database zabbix character set utf8 collate utf8_bin;
建立用户:create user ‘zabbix’@‘localhost’ identified by ‘westos’;
给予权限:grant all privileges on zabbix.* to ’zabbix‘@’localhost‘;
查看zabbix数据库是否创建: show databases;
退出:quit;

进入到zabbix的目录文档中将封装好的sql语句导入到创建好的数据库中:

cd /usr/share/doc/zabbix-server-mysql-4.0.27/

zcat create.sql.gz | mysql -uzabbix -pwestos zabbix 用户:zabbix;密码:westos;库:zabbix ;

zabbix监控网络 最佳实践 zabbix监控数据_linux_02


数据库写入完成后:

zabbix监控网络 最佳实践 zabbix监控数据_网络_03

cd /etc/zabbix/

vim zabbix_server.conf

如果要将数据库分离,需要打开DBHost=数据库主机ip地址;

zabbix监控网络 最佳实践 zabbix监控数据_数据库_04


由于在本机,并且用户和库的名字恰好都为zabbix,因此只用修改:DBpassword:

zabbix监控网络 最佳实践 zabbix监控数据_nginx_05

开启zabbix
systemctl enable --now zabbix-server

yum install zabbix-agent -y
systemctl enable --now zabbix-agent

检查服务能够正常启动后,会出现两个端口10050,10051:netstate -antlupe ;

继续安装前端服务:
yum install zabbix-web-mysql -y ;
如果没有开启阿里云的源,会出现错误:
此时会有错误,原因是因为依赖性,安装php-bcmath和php-mbstring即可(注意版本应安装5.4.16-46)
在阿里云官网上进行下载php-bcmath-5.4.16-46.el7.x86_64.rpm php-mbstring-5.4.16-46.el7.x86_64.rpm

要注意:版本匹配问题,不然会进行升级导致更多的依赖性:yum list php-* ;

zabbix监控网络 最佳实践 zabbix监控数据_linux_06

也可以给系统加一个外部的统一的源,统一进行升级更新;

前端组件安装完成后:

cd /etc/httpd/conf.d

vim zabbix.conf

修改时区:php_value date.timezone Asia/Shanghai

systemctl enable --now httpd

zabbix监控网络 最佳实践 zabbix监控数据_linux_07

成功开启 httpd 后:可以访问对应server 地址下的 zabbix 目录:

zabbix监控网络 最佳实践 zabbix监控数据_数据库_08


根据提示一步一步完成配置:

zabbix监控网络 最佳实践 zabbix监控数据_linux_09

注意:下图中的这个密码不是数据库里的密码;是导入数据库时的密码;

zabbix监控网络 最佳实践 zabbix监控数据_nginx_10

成功进入的页面如下图:

zabbix监控网络 最佳实践 zabbix监控数据_zabbix监控网络 最佳实践_11


可以在右上角的小人头处选择设定中文:

zabbix监控网络 最佳实践 zabbix监控数据_数据库_12

3.zabbix的数据采集:

zabbix的数据采集方式有很多种:

其中下图所示的:snmp 主要监控硬件设施,网络设备等; JMX主要用于监控java应用;IPMI 主要用于监控基础设施;

zabbix监控网络 最佳实践 zabbix监控数据_nginx_13


可以通过图形化监控cpu 负载信息:

zabbix监控网络 最佳实践 zabbix监控数据_nginx_14


至此server端上的部署已经完成;

开启新的虚拟机部署成 agent 端 来进行测试:

在新的虚拟机中需要将zabbix.repo scp过来,agent端只用安装 zabbix-agent 即可:

zabbix监控网络 最佳实践 zabbix监控数据_linux_15


cd /etc/zabbix

vim zabbix_agentd.conf

修改以下内容

Server=172.25.254.111 ###server端ip
 ServerActive=172.25.254.111 ###server端ip
 Hostname=server12 ###填写agent自己的主机名(要有解析)

server端信息的采集主要有两种方式:server去找agent收集信息(默认);agent 主动将信息发送给server ;

zabbix监控网络 最佳实践 zabbix监控数据_nginx_16


systemctl enable --now zabbix-agentcat /var/log/zabbix/zabbix_agentd.log 此时可以看见。agent连接不上server;因为server有访问控制,不能让别人想连就连;

zabbix监控网络 最佳实践 zabbix监控数据_数据库_17

此时需要在server 端的前端手动添加:

点击右上角的创建主机:

zabbix监控网络 最佳实践 zabbix监控数据_nginx_18


新添加的主機服務器默認情況下沒有监控项;可以点击server12 主机,模板,有创建好的监控项可以直接使用:

zabbix监控网络 最佳实践 zabbix监控数据_数据库_19

手动添加的方式效率很低,可以采用自动发现规则:

开启新的agent端server13:

完成和server12中的操作后,在前端页面的配置中点击动作,点击右上角选择自动发现功能:

启用:

zabbix监控网络 最佳实践 zabbix监控数据_网络_20

点击自动发现规则:设定IP地址范围,并启动策略;

zabbix监控网络 最佳实践 zabbix监控数据_nginx_21

自动发现策略完成后在 监测 选项中 可以看见:

zabbix监控网络 最佳实践 zabbix监控数据_linux_22

此时server13 已经自动添加进来;

自动注册:让agent主动来找server端传送数据:

配置—动作—自动注册—创建动作—添加操作信息:

zabbix监控网络 最佳实践 zabbix监控数据_数据库_23


zabbix监控网络 最佳实践 zabbix监控数据_数据库_24

此时删除刚才自动发现的server13;并在server13中重启agent :systemctl restart zabbix-agent

这时可以发现:刚删除的server13 已经重新自动添加回来了;

4:zabbix API:

在 server11上 获取令牌认证信息:

zabbix监控网络 最佳实践 zabbix监控数据_数据库_25


检索主机

我们现在有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据。 例如,让我们使用 host.get 方法检索所有已配置主机的ID,主机名和接口 :

编写 vim zabbix-abi

zabbix监控网络 最佳实践 zabbix监控数据_linux_26

sh zabbix-api : 获得到主机信息:

zabbix监控网络 最佳实践 zabbix监控数据_网络_27

除此之外,还可以通过 API 来删除,建立主机等,方法于上述类似,只用更改zabbix-api文件中的信息即可;可以通过官网查看:www.zabbbix.com;

监控服务信息:

1.对于模板中现有的服务的监控:

在被监控主机中的监控项里添加需要监控的模板信息;

2.监控nginx服务:

先完成nginx的安装和部署:

vim auto/cc/gcc ; 关闭debug调试 ;

zabbix监控网络 最佳实践 zabbix监控数据_nginx_28

yum install -y gcc pcre-devel openssl-devel 安装nginx所需要的依赖性服务;

源码安装三部曲: config , make ,make install;

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
cd /usr/local/nginx/sbin/
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin 做软连接,=使我们在shell中可以直接nginx开机服务;
cd /usr/local/nginx/conf/
vim nginx.conf ; 添加监控状

态:

zabbix监控网络 最佳实践 zabbix监控数据_网络_29

保村退出后,检测nginx 的语法书写是否存在错误:

zabbix监控网络 最佳实践 zabbix监控数据_网络_30


nginx 开启服务 , 访问本地端口:

zabbix监控网络 最佳实践 zabbix监控数据_nginx_31


访问本机会被记录访问次数:

zabbix监控网络 最佳实践 zabbix监控数据_数据库_32


自定义监控模板的创建:编写脚本信息,完成 agent 端的取值,k v 键值的形式 ,k 作为 后续创建模板的 key 值:

zabbix监控网络 最佳实践 zabbix监控数据_linux_33


systemctl restart zabbix-agent 更新zabbix-agent端的配置信息;

在server端下载 : yum install zabbix-get -y

此时在server1上就可以取到server3上nginx.active的值: 通过key值 nginx.active:

zabbix监控网络 最佳实践 zabbix监控数据_数据库_34

此时,便可以在前端自定义监控项,完成相应的监控:

在对应的主机监控项的右上角点击添加监控项:

注意:键值一定不能填错

zabbix监控网络 最佳实践 zabbix监控数据_linux_35

监控项创建完成后,可以在对应主机中的图形里,创建图形,将nginx.active监控项加入进去,这样便可以有图形显示:

zabbix监控网络 最佳实践 zabbix监控数据_linux_36