前言
检查防火墙是否关闭
vim /etc/selinux/config
SELINUX=disabled
内存4G为好
配置好阿里yum源
实验步骤-服务端
获取zabbix的下载源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
更换zabbix.repo源(下载快点)
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
清空缓存,下载zabbix服务器
yum clean all
yum makecache
yum install zabbix-server-mysql zabbix-agent -y
安装 Software Collections ,便于后续安装高版本php,默认yum安装的php版本为5.4过低。可以在机器上,使用多个版本的软件,并且不会影响整个系统的依赖环境
yum install centos-release-scl -y
修改zabbix-fronted 前端源
vim /etc/yum.repos.d/zabbix.repo
enabled=1
安装zabbix前端环境
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
安装mysql数据库 并启动 设置开机自启
yum install mariadb-server -y
systemctl start mysqld
systemctl enable mysqld
默认没有密码修改密码
先进入mysql
mysql -u root -p
这里修改密码设置为root
set password root@localhost=password('root');
如果出现ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 43. Created with MySQL 50651, now running 50733. Please use mysql_upgrade to fix this error.
就退出mysql 执行
mysql_upgrade -u root -p
再去修改密码
如果出现
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
则卸载plugin validate_password
uninstall plugin validate_password;
创建zabbix数据库
create database zabbix character set utf8 collate utf8_bin;
创建zabbix用户
create user zabbix@localhost identified by 'root';
给zabbix用户zabbix数据库的权限,并刷新权限退出
grant all privileges on zabbix.* to zabbix@localhost;
flush privileges;
quit;
使用zabbix-mysql命令,导入数据库信息
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
vim /etc/zabbix/zabbix_server.conf
找到DBPassword=root
后面填写你的mysql密码
grep '^DBPassword' /etc/zabbix/zabbix_server.conf 检查一下密码是否设置
修改zabbix的php文件/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf 把时区改为亚洲上海 并去掉注释
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
启动相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm网页访问ip/zabbix 直接下一步
后续直接一路下一步不要管
默认账号密码
Admin
zabbix
客户端
注意时间正确
服务端和客户端都要进行
yum install ntpdate -y
ntpdate -u ntp.aliyun.com
时区的统一配置
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime然后输入date 看看服务端和客户端的日期时间
在客户端获取zabbix的下载源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
更换zabbix.repo源(下载快点)
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
安装agent2
yum install zabbix-agent2 -y
启动服务
systemctl enable --now zabbix-agent2
更改配置文件
vim /etc/zabbix/zabbix_agent2.conf
Server=x.x.x.x (填服务端ip地址)
ServerActive=x.x.x.x (填服务端ip地址)
Hostname=zabbix-agent01 (填写你的客户端主机名)
重启服务
systemctl restart zabbix-agent2
在服务端安装zabbix-get
yum install zabbix-get -y
命令检测 去服务端输入以下命令
zabbix_get -s '192.168.x.x' -p 10050 -k 'system.hostname'
解决乱码问题
安装字体(服务端)
yum -y install wqy-microhei-fonts
复制字体
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
添加zabbix-agent主机
自定义监控内容
自定义监控服务器登陆的人数
需求:限制登陆人数不超过两个,超过两个就发出报警信息
明确需要执行的命令
who | wc -l
手动创建zabbix的配置文件,用于自定义key
cd /etc/zabbix/zabbix_agent2.d/
vim userparameter_login.conf
UserParameter=login.user,who|wc -l
重启服务
systemctl restart zabbix-agent2
zabbix_get -s '192.168.70.20' -p 10050 -k 'login.user'
此时显示2 两台机器人登录 一台本机登录一台ssh连接登录的
在页面添加zabbix-server的自定义监控项模板
添加流程
创建模板
创建应用集(好比是一个文件夹,里面放入一堆监控项)
创建监控项,自定义item,你具体想监控的内容
创建触发器,当监控项获取到值的时候,进行和触发器比较,判断,决定是否报警
创建图形
将具体的主机和该模板链接,关联
创建模板
可以看到模板已添加
- 创建应用集
- 创建监控项
- 创建触发器
- 创建图形
关联
找到要关联的主机
可以看到图形中已经显示了
这时候去测试报错 多创建用户ssh连接
用另外一台虚拟机去ssh连接客户端机器
仪表盘就可以看到报错了!
邮件报警
利用上述自定义监控内容来测试邮件报警
创建报警媒介类型
这里需要授权码 (下面写了如何获取授权码)
获取授权码
开启smtp服务让你验证 成功后会发送授权码给你
如果出现报警媒介类型已存在就换个报警媒介名称
Email名称报错 换了个Zabbix_Email
可以看到创建成功了 可以进行测试
测试通过
重新测试增添user登录 可以发现报警并发送邮件了
可以看到以收到报警邮件
最后确认信息即可
聚合图形
现在在这里也能监测到agent01 CPU usage 情况
全网监控方案
如果有许多的机器需要监控难道还需要手动一个个添加主机么?
思路:
- 克隆监控模板
- 自动注册和自动发现
- 使用zabbix的api接口,利用curl语言,或者开发自己的编程脚本如python等
监控服务的具体方法
端口检测的命令
netstat
ss
lsof
在服务端,用zabbix语句 net.tcp.port的值
[root@localhost ~]# zabbix_get -s '192.168.70.20' -p 10050 -k 'net.tcp.port[,22]'
1
自动注册和自动发现
自动发现
zabbix server主动的去发现所有的客户端,然后将客户端的信息,登记在服务端的机器上
缺点是 zabbix-server压力会比较大
如果定义的一个网段 100-200网段,耗时较久,且压力比较大
自动注册
zabbix agent2主动上报自己的信息,发给zabbix-server
缺点是agent2可能找不到server (配置文件写错了,网络不通)
自动发现步骤
配置hosts解析
先把之前链接测试的客户端禁用删除
vim /etc/hosts
在下面添加你的服务端机器和客户端机器的地址和机器名称
192.168.x.x localhost.localdomain
192.168.x.x zabbix-agent01直接在这里修改它的规则
最后点主机就可以看到已连接到客户端机器
可以看到已经自动发现了客户端agent01机器
自动注册步骤
1.准备机器
server
agent2
2.修改agent2配置文件
vim /etc/zabbix/zabbix_agent2.conf
3.重启服务
systemctl restart zabbix-agent2
4.验证
去服务端zabbix语句去验证这个机器通信
[root@zabbix-server ~]# zabbix_get -s '192.168.xx.xx' -p 10050 -k 'agent.ping'
1
继续添加 添加主机群主
添加与模板关联
可以看到以及添加进来了
zabbix代理服务器配置
环境准备,准备三台机器
zabbix-server zabbix-agent01 zabbix-agent02(代理)
防火墙都关闭
确保之前所学的自动发现,注册以及关闭
准备好客户端机器,agent02机器
来配置zabbix-proxy代理服务器,并且部署数据库,用于存储agent02发来的数据,最终发给zabbix-server
上面我们已经配置就不需要配置了
配置yum源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
更换zabbix.repo源(下载快点)
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
安装proxy,以及数据库
yum install zabbix-proxy-mysql zabbix-get -y
启动数据库,配置数据库用户,存储zabbix-agent2信息数据
没有数据库先安装
yum install mariadb-server mariadb -y
[root@zabbix-agent02 ~]# mysql -uroot -p
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
创建zabbix用户并授予其zabbix_proxy表所有权限
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)导入zabbix-proxy数据库信息
查询sql文件在哪
rpm -ql zabbix-proxy-mysql
[root@zabbix-agent02 ~]# zcat /usr/share/doc/zabbix-proxy-mysql-5.0.36/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy
再次进入数据库
[root@zabbix-agent02 ~]# mysql -uroot -p
使用zabbix_proxy数据库
MariaDB [(none)]> use zabbix_proxy;
查看数据库中的表 可以发现以及导入进来了
MariaDB [zabbix_proxy]> show tables;
修改zabbix_proxy配置文件,链接数据库的信息 (zabbix-agent02作为代理机器 )
[root@zabbix-agent02 ~]# sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
[root@zabbix-agent02 ~]# sed -i 's#Server=127.0.0.1#Server=192.168.70.18#' /etc/zabbix/zabbix_proxy.conf
[root@zabbix-agent02 ~]# sed -i 's#Hostname=Zabbix proxy#Hostname=zabbix-agent02#' /etc/zabbix/zabbix_proxy.confgrep -Ev '#|$' /etc/zabbix/zabbix_proxy.conf
systemctl start zabbix-proxy
客户端配置
先修改好配置文件
vim /etc/zabbix/zabbix_agent2.conf
在客户端zabbix-agent01机器 重启服务
systemctl restart zabbix-agent2
[root@zabbix-agent01 ~]# grep '[1]' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.xx.xx
ServerActive=192.168.xx.xx
Hostname=zabbix-agent01
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
SNMP监控
简单网络管理协议
服务端安装snmp监控程序
yum install net-snmp net-snmp-utils -y
开启snmp的配置
sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf
systemctl start snmpd.service
使用snmp命令
-v 指定协议版本 -c 指定暗号
[root@zabbix-server ~]# snmpwalk -v 2c -c public 127.0.0.1 sysname
SNMPv2-MIB::sysName.0 = STRING: zabbix-server编辑服务端 zabbix-server
点击更新后可以看到
a-Z ↩︎