zabbix的监控架构在实际监控架构中,zabbix根据网络环境、监控规模等架构: server-client 、server-proxy-client。这篇文章是针对server-client架构的实战演练,关于zabbix的介绍和优缺点之类的我就不说了,不懂得可以去百度,我们直接开始搭建。
准备两台虚拟机,一台作为监控服务器,一台作为被监控端,最好是把主机名改了以便区分
192.168.13.137 监控服务器
192.168.13.128 被监控端
临时修改主机名
192.168.13.137 监控服务器
[root@localhost ~]# hostname zabbix-server
[root@zabbix-server ~]#
192.168.13.128 被监控端
[root@localhost ~]# hostname zabbix-agent-none1
[root@zabbix-agent-none1 ~]#
两台虚拟机都要关闭防火墙跟selinux
setenforce 0 && systemctl stop firewalld
更新yum仓库
#我们去官网下载一个包`zabbix-release-3.4-2.el7.noarch.rpm`,本地安装至我们的虚拟机,这样,我们本地就有了新的yum源,可以直接安装zabbix服务:
[root@zabbix-server ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@zabbix-server ~]# yum repolist #更新yum仓库
安装环境和zabbix
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get-3.4.0-1.el7.x86_64 -y
#如果失败需要反复下,因为我们下载的是国外源,所以失败很正常,再次下载的话会接着上一次的继续下载
#如果你嫌手动下载太麻烦了,这里提供自动下载脚本
[root@zabbix-server ~]# vim test.sh #脚本下载
while true
do
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get-3.4.0-1.el7.x86_64 -y
if [ $? -eq 0 ];then
break
else
continue
fi
done
[root@zabbix-server ~]# sh test.sh #执行脚本
zabbix-server-mysql数据库是用来存放采集到的数据,而zabbix-web-mysql的作用是Zabbix的web端会通过这些数据,来展示绘图
安装设置数据库
这里面用的是mariadb,当然你也可以用mysqld
[root@zabbix-server ~]# yum install -y mariadb mariadb-server
[root@zabbix-server ~]# systemctl restart mariadb
[root@zabbix-server ~]# systemctl enable mariadb
[root@zabbix-server ~]# mysqladmin -u root password 'yjssjm' #设置root密码'yjssjm'
[root@zabbix-server ~]# mysql -uroot -p'yjssjm'
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; # 创建zabbix数据库
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
# 注意授权网段因为是在同一台机器上所以localhost就可以了,授权的是zabbix下的所有表,用户是zabbix
MariaDB [(none)]> flush privileges; # 刷新授权
MariaDB [(none)]> \q #退出
Bye
导入数据并查看
把表导入到数据库里面
[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p'yjssjm' zabbix #(uzabbix里面的zabbix是指用户,而最后一个zabbix是库名 )
[root@zabbix-server ~]# mysql -uzabbix -p'yjssjm'
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;
[root@zabbix-server ~]# cd /etc/zabbix/
[root@zabbix-server zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
#为了方便我们以后恢复,我们把配置文件备份一下 zabbix_server.conf 监控端 zabbix_agentd.conf 被监控端
[root@zabbix-server zabbix]# cp zabbix_server.conf zabbix_server.conf.bak
[root@zabbix-server zabbix]# vim zabbix_server.conf
#不要直接复制,里面有的可能已经存在了,你需要一个一个找到并修改
DBHost=localhost #数据库对外的主机
DBName=zabbix #数据库名称
DBUser=zabbix #数据库用户
DBPassword=yjssjm #数据库密码
# 一般情况下DBName=zabbix DBUser=zabbix 这两个配置文件里面会有
[root@zabbix-server zabbix]# systemctl start zabbix-server #启动服务
[root@zabbix-server zabbix]# systemctl enable zabbix-server #开机自启
[root@zabbix-server zabbix]# netstat -lntp | grep 10051 #zabbix-server默认端口是10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 92525/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 92525/zabbix_server
# 如果服务没起来,要么就是环境问题,要么就是配置文件改错了
配置 web GUI
# /etc/httpd/conf.d/zabbix.conf 这个配置文件是帮我们做映射的文件
[root@zabbix-server zabbix]# vim /etc/httpd/conf.d/zabbix.conf #设置时区
#里面基本不用动。只需要添加一行时区即可在模块里面添加
php_value date.timezone Asia/Shanghai
[root@zabbix-server zabbix]# systemctl start httpd #启动httpd服务
[root@zabbix-server zabbix]# systemctl enable httpd
[root@zabbix-server zabbix]# netstat -lntp | grep 80 #看80端口又没有起来
访问控制服务器ip/zabbix,这里是http://192.168.13.137/zabbix
然后继续Next step(下一步),最后Finish。点完Finish会跳转到登录界面
安装zabbix
[root@zabbix-agent-none1 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@zabbix-agent-none1 ~]# yum install zabbix-agent zabbix-sender -y #同样如果失败了需要多次下载
[root@zabbix-agent-none1 ~]# cat test.sh #脚本自动下载
while true
do
yum install zabbix-agent zabbix-sender -y
if [ $? -eq 0 ];then
break
else
continue
fi
done
修改配置文件并启动服务
[root@zabbix-agent-none1 ~]# cd /etc/zabbix/
[root@zabbix-agent-none1 zabbix]# cp zabbix_agentd.conf{,.bak} #备份
[root@zabbix-agent-none1 zabbix]# vim zabbix_agentd.conf
#不要直接复制,一个一个找
Server=192.168.13.137 #zabbix服务器的地址
ServerActive=192.168.13.137 #主动模式 zabbix-server-ip
Hostname=zabbix-agent-none1 #(本机主机名)
UnsafeUserParameters=1 #是否限制用户自定义 keys 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符
EnableRemoteCommands=0 #是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.
[root@zabbix-agent-none1 zabbix]# systemctl start zabbix-agent
[root@zabbix-agent-none1 zabbix]# systemctl enable zabbix-agent
[root@zabbix-agent-none1 zabbix]# netstat -lntp | grep 10050 #zabbix-agent默认是10050
修改语言以及修改密码
然后记得点击下面的更新
按钮。修改成中文后我们再去修改密码
创建应用集
那么,我们的数据在哪里呢?可以点击最新数据
,把我们的none1节点添加至主机,应用一下,就可以看到下面的状态了:
快速定义类似指标
配置----主机-----监控项-----点击创建好的监控项
我们来到 检测中 —> 最新数据,可以看到,我们定义的监控项都已经有值了:
如果有一个监控项,我们用不上了,就可以删除掉。但是如果你直接删除的话,默认数据是会留下的,所以我们要先清除数据,然后再删除,具体操作步骤如下:
简介
当我们的采集的值定义完了以后,就可以来定义触发器了。
我们触发器的定义是:界定某特定的item采集到的数据的非合理区间或非合理状态。通常为逻辑表达式
一般,我们评定采样数值是否为合理区间的比较稳妥的方法是——根据最后N次的平均值来判定结果;这个最后N次通常有两种定义方式:
1. 最近N分钟所得结果的平均值
2. 最近N次所得结果的平均值
注:能用数值保存的就不要使用字符串
触发器表达式
基本的触发器表达式格式如下所示
{:.()}
server
:主机名称;key
:主机上关系的相应监控项的key;function
:评估采集到的数据是否在合理范围内时所使用的函数,目前触发器所支持的函数有avg(平均)、count(计数)、change(变化)、date(日期)、dayofweek(星期)、delta(增量)、diff、iregexp、last()、max(最大值)、min(最小值)、nodata(无数据)、now(现在)、sum(总和)等parameter
:函数参数;大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#”做为前缀,则表示为最近几次的取值,如sum(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和;Email
为例,我们可以定义一个腾讯的服务器,一个网易的服务器,一个阿里的服务器等等。定义一个媒介
这样定义以后,我们去更新一下就可以了。
媒介定义好了,那么我们怎么才能够然后用户接收到邮件呢?比如让我们的Admin用户接收邮件
进入 管理 —> 用户 —> Admin —> 报警媒介
我们来添加一条进来:
定义一个动作
我们之前说过了,动作是在某些特定条件下触发的,比如,某个触发器被触发了,就会触发我们的动作。
现在,我么基于redis来定义一个动作。
首先,我们在agent端使用yum安装一下redis
:
[root@zabbix-agent-none1 ~]# yum -y install epel-release
[root@zabbix-agent-none1 ~]# yum -y install redis
[root@zabbix-agent-none1 ~]# vim /etc/redis.conf #修改配置文件
bind 0.0.0.0 #不做任何认证操作
[root@zabbix-agent-none1 ~]# systemctl start redis #启动服务
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis #检查是否启动
接着,我们就可以去网站上来定义相关的操作了:
创建一个应用集:
配置-----主机—none1—应用集—创建应用集:
进入 配置 —> 主机 —> node1 —> 监控项(items)—> 创建监控项
填写完毕以后,我们点击下方的添加。
该监控项已成功添加。
我们可以去查看一下他的值:
检测中 —> 最新数据
定义触发器
定义好了监控项以后,我们亦可来定义一个触发器,当服务有问题的时候,我们才能及时知道:
进入 配置 —> 主机 —> none1 —> 触发器(trigger)—> 创建触发器
填写完毕以后,我们点击下方的添加。
我们来手动关闭redis服务来检测一下:
[root@zabbix-agent-none1 ~]# systemctl stop redis
进入 监测中 —> 问题
可以看到,现在已经显示的是问题了。并且有持续的时间,当我们的服务被打开,会转为已解决状态:
[root@zabbix-agent-none1 ~]# systemctl start redis
进入 配置 —> 动作 —> 创建动作(注意选择事件源为触发器)
我们可以进行操作添加:
我们可以看出,还需要在虚拟机上进行两项操作,一是修改sudo配置文件使zabbix用户能够临时拥有管理员权限;二是修改zabbix配置文件使其允许接收远程命令。我们进行如下操作:
[root@zabbix-agent-none1 ~]# visudo #相当于“vim /etc/sudoers”
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
zabbix ALL=(ALL) NOPASSWD: ALL #添加的一行,表示不需要输入密码
[root@zabbix-agent-none1 ~]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 #允许接收远程命令
LogRemoteCommands=1 #把接收的远程命令记入日志
[root@zabbix-agent-none1 ~]# systemctl restart zabbix-agent.service
我们添加了第一步需要做的事情,也就是重启服务,如果重启不成功怎么办呢?我们就需要来添加第二步:
添加完成以后,我们可以看一下:
操作添加完了,如果服务自动恢复了,我们可以发送消息来提示:
至此,我们的动作设置完毕,可以点击添加了,添加完成会自动跳转至如下页面:
现在我们可以手动停止服务来进行测试:
[root@zabbix-agent-none1 ~]# systemctl stop redis.service
然后我们来到问题页面来查看,发现确实有问题,并且已经解决: 等一会
也可以去agent端查看端口是否开启:
[root@zabbix-agent-none1 ~]# systemctl stop redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1957/redis-server 0
可以看出端口正常开启,我们的动作触发已经完成。
查看邮箱是否成功
[root@zabbix-server ~]# yum -y install mailx
[root@zabbix-server ~]# mail
[root@localhost ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 285 messages 271 new
13 [email protected] Mon Mar 23 07:40 21/870 "Resolved: high speed in pkts"
14 [email protected] Mon Mar 23 07:40 21/870 "Resolved: high speed in pkts"
>N 15 [email protected] Mon Mar 23 07:42 20/859 "Resolved: high speed in pkts"
N 16 [email protected] Mon Mar 23 07:43 20/859 "Resolved: high speed in pkts"
N 17 [email protected] Mon Mar 23 07:43 20/859 "Resolved: high speed in pkts"
N 18 [email protected] Mon Mar 23 07:44 20/859 "Resolved: high speed in pkts"
N 19 [email protected] Mon Mar 23 07:45 20/859 "Resolved: high speed in pkts"
N 20 [email protected] Mon Mar 23 07:46 20/859 "Resolved: high speed in pkts"
N 21 [email protected] Mon Mar 23 07:46 20/859 "Resolved: high speed in pkts"
N 22 [email protected] Mon Mar 23 07:46 20/859 "Resolved: high speed in pkts"
N 23 [email protected] Mon Mar 23 07:48 20/859 "Resolved: high speed in pkts"
N 24 [email protected] Mon Mar 23 07:48 20/859 "Resolved: high speed in pkts"
& exit (退出)
#邮箱也已经成功