zbbix5.0的部署
超哥linux视频地址:https://www.bilibili.com/video/BV1wp4y1x7B3?p=25&spm_id_from=pageDriver
zabbix-server部署
ip 的提取:
ifconfig enp0s3|awk 'NR==2{print $2}'
关闭selinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
下载zabbix的yum源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
更换yum源为阿里云
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
清空旧的yum缓存,下载zabbix服务端
yum clean all
yum makecache
yum -y install zabbix-server-mysql zabbix-agent
安装php扩展插件(可以在机器上安装多个版本的软件,并且不会影响到整个系统的依赖环境,【下载的程序默认在/opt/rh/下】)
yum -y install centos-release-scl
修改yum源[zabbix-frontend]前端源:
vim /etc/yum.repos.dzabbix.repo
找到[zabbix-frontend],修改为enabled=1
安装zabbix前端环境【且是安装到scl环境下/opt/rh】:
yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl
安装zabbix所需的数据库(mariadb)
yum -y install mariadb-server
配置开机启动
systemctl enable --now mariadb ##开机自启并立即启动mariadb
初始化数据库,设置密码:
mysql_secure_installation
mysql -uroot -proot1234
创建zabbix数据库和表:
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by 'zabbix'; #localhost表示数据库监听的网络地址
grant all privileges on zabbix.* to zabbix@localhost;
flush privileges;
使用zabbix-mysql导入数据库信息:
zcat /usr/share/doc/zabbix-server-mysql-*/create.sql.gz | mysql -uzabbix -pzabbix zabbix #*表示版本号
修改zabbix配置:
[root@zabbix html]# egrep -v '^$|^#' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=xxx.xxx.xxx.xxx #数据库IP地址
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
修改zabbix的php配置文件:
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
##找到并修改值为:
php_value[date.timezone] = Asia/Shanghai
启动zabbix相关的服务:
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
部署zabbix客户端
zabbix5.0版本
agent2新版本使用golang(并发性能好,多核的使用率很高)语言开发的客户端
agent2默认使用10050端口,也就是zabbix的客户端的端口
###旧版本agent和新版的agnet不能同时使用
###旧版本:zabbix-agent
###新版本:zabbix-agent2
机器环境准备:
192.168.1.105 zabbix-agent2
192.168.1.106 zabbix-agent2
注意时间正确:
yum -y install ntpdate ##安装ntpdate服务
ntpdate -u ntp.aliyun.com ##同步阿里云时间
mv /etc/localtime{,.bak} ##备份时区文件
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ##设置时区为亚洲上海
部署流程:
配置zabbix的yum源:
下载yun源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
更换yum源为阿里云
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
清空旧的yum缓存,下载zabbix服务端
yum clean all
yum makecache
yum -y install zabbix-agent2
#查看并修改配置文件:
more /etc/zabbix/zabbix_agent2.conf|grep -vE '^#|^$'
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.1.104 ###zabbix-server的ip地址
ServerActive=192.168.1.104 ###现有的zabbix-server的ip地址
Hostname=oppo2 ###zabbix客户端机器的hostname即可
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
启动命令:
/usr/sbin/zabbix_agent2
设置开机自启动(并立即启动):
systemctl enable --now zabbix-agent2
修改配置文件后重启:
systemctl restart zabbix-agent2
在服务端通过zabbix-get来验证zabbix-agent2的连接是否正常:
在服务端安装:
yum -y install zabbix-get
[root@oppo1 etc]# zabbix_get -s '192.168.1.105' -p 10050 -k 'agent.ping'
1 ###结果为1(真)
[root@oppo1 etc]# zabbix_get -s '192.168.1.105' -p 10050 -k 'system.hostname'
oppo2 ###获取主机名
web端乱码的问题:
zabbix默认监控了server本身,但是编码有问题:
解决方法:安装字体
yum -y install wqy-microhei-fonts
复制字体:【命令前加\可以去掉命令本身设置的别名,以最原始的命令执行】
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
自定义监控项:
web界面>配置>主机>点击某一台主机>
例如:自定义监控服务器登录的人数
需求:登录的人数不超过三个,超过三个人就发出报警的信息。
###先从命令行角度
查看zabbix自带的检查key
【zabbix_get -s '192.168.1.105' -p 10050 -k 'agent.ping'】
【zabbix_get -s '192.168.1.105' -p 10050 -k 'system.uname'】
【zabbix_get -s '192.168.1.105' -p 10050 -k 'system.hostname'】
zabbix_get -s '192.168.1.105' -p 10050 -k 'vfs.fs.size[/boot,used]' ###这几个是zabbix自带的(单引号中的可以从web端的监控项中的键值复制过来)
1,先要明确使用的命令:
who |wc -l
2,手动创建zabbix的配置文件,用于自定义key:【在agent机器上192.168.1.105】
/etc/zabbix/zabbix_agent2.conf
由于zabbix使用的是include协议,所以在Include=/etc/zabbix/zabbix_agent2.d/*.conf下的都会被作为配置文件
进入/etc/zabbix/zabbix_agent2.d/
cd /etc/zabbix/zabbix_agent2.d/
vim userparameter_login.conf ###新建用户自定义的配置文件
加入:UserParameter=login.user,who|wc -l ####固定配置项,”=“后接要执行的命令
重启zabbix-agent2:
systemctl restart zabbix-agent2
查看状态:systemctl status zabbix-agent2
3,服务端zabbix_get检查:
zabbix_get -s '192.168.1.105' -p 10050 -k 'login.user'
4,在web界面添加zabbix-server的自定义监控模板
添加流程是:
1)创建模板:配置>模板
2)创建应用集(好比是一个文件夹,里面放置一堆的嘉监控项)
3)创建监控项,自定义item,即具体要监控的内容
4)创建触发器,当监控项获取到值的时候,进行和触发器的值进行比较,判断,决定是否进行报警操作。
5)创建图形
6)将具体的主机和该模板进行链接,关联
zabbix邮件报警:
web界面>管理>报警媒介类型>创建媒体类型
名称:Email
smtp服务器:smtp.163.com
端口:25
SMTP HELO:163.com
SMTP电邮:填写自己的邮箱即可
安全链接:SSL/TLS 都打对勾
认证:用户名和密码【邮箱的地址和授权码163:(AWODYHSVOYGIAYNE)qq:(lxqqpidozprxiaje)】 ###授权码要看到pop3/smtp需要看到已开启
添加messsage templates:
管理》报警媒介类型》messsage templates》添加
在user settings 中设置邮件的接收人,并启用。即将报警邮件发给哪个运维人员
全网监控方案:
如何自动添加主机监控:
思路:
克隆监控模板
自动注册和自动发现
使用zabbix的api接口,利用curl语言,或者开发自己的编程脚本,如python脚本
监控方案的实施:
服务监控(可以去网上下载监控的模板)
rsync服务监控:
监控服务端873端口的存活
有关端口的监控可以使用zabbix自带的key:net.tcp.port[,873]
监控NFS服务是否正常:
通过key监测111端口 net.tcp.port[,111]
showmount -e ip|wc -l
监控MySQL数据库是否正常:
通过key监测111端口 net.tcp.port[,3306]
mysql -uroot -p
zabbix自带了mysql的监控模板,直接添加模板和mysql的主机关联即可
web服务器监控:
net.tcp.port[,80]
zabbix也提供了web服务器的监控模板
监控服务的具体的方法:
端口检查的命令:
netstat
ss
lsof
结合grep查看端口是否存活
自动发现,自动注册:
自动发现:
zabbix server主动去发现所有的客户端,然后将客户端的信息登记在服务端的机器上面
缺点:zabbix server的而压力会较大,机器多了耗时较久,压力大。
自动注册:
zabbix agent2 主动上报自己的信息,发送给zabbix server
缺点:agent2 可能会找不到zabbix server(配置文件写错了/网络不通)
【另一种叫法是被动模式和主动模式(站在agent的角度看)】
配置hosts解析:
在三台机器的/etc/hosts中写入:
192.168.1.104 oppo1
192.168.1.105 oppo2
192.168.1.106 oppo3
自动发现配置:
web》配置》自动发现》local netstat》ip范围》
web》配置》动作》Discovery actions》Auto discovery. Linux servers.(启用)
自动注册:
zabbix-agent2配置文件修改:
[root@hadoop4 ~]# more /etc/zabbix/zabbix_agent2.conf|grep -Ev '^#|^$'
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.1.104
ServerActive=192.168.1.104
Hostname=hadoop4
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
重启zabbix-agent2:
systemctl restart zabbix-agent2
验证:[root@oppo1 ~]# zabbix_get -s '192.168.1.24' -p 10050 -k 'system.hostname'
web》配置》动作》Autoregistration actions》创建动作》:
名称:自动注册
条件:添加:主机名称:hadoop4(需要注册的主机)
动作》操作:添加:
操作类型:添加主机
操作类型:添加到主机群组( Linux servers)
操作类型:链接到模板(Template OS Linux by Zabbix agent)
分布式监控:
作用:分担server的集中式压力
agent》proxy》server
多机房之间的网络延时问题
上海机房》proxy》server
搭建部署分布式监控zabbix-proxy:
192.168.1.104 zabbix0-server5.0
192.168.1.109 zabbix-proxy
192.168.1.110 zabbix-agent2
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
部署开始:
1,确保自动发现和自动注册是关闭的。
2,zabbix-server服务端无需变动,继续运行就ok
hosts中需要有proxy主机的信息
3,准备好agent2客户端机器
4,配置中proxy代理服务器,并且部署数据库,用于存储agent2发来的数据,并最终发给server服务器。
下载yun源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
更换yum源为阿里云
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
5,安装proxy,以及数据库
yum -y install zabbix-get zabbix-proxy-mysql
yum -y install mariadb-server mariadb
6,启动数据库,配置数据库用户,存储zabbix-agent2信息数据
systemctl start mariadb
systemctl enable mariadb
数据sql设置:
create database zabbix_proxy character set utf8 collate utf8_bin;
create user zabbix@localhost identified by 'zabbix'; #localhost表示数据库监听的网络地址
grant all privileges on zabbix_proxy.* to zabbix@localhost;
####上面两行等同于“grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';”
flush privileges;
7,导入zabbix-proxy数据库信息
rpm -ql zabbix-proxy-mysql ##查询yum安装的和zabbix-proxy相关的包位置
[root@slave1 ~]# rpm -ql zabbix-proxy-mysql
/etc/logrotate.d/zabbix-proxy
/etc/zabbix/zabbix_proxy.conf
/usr/lib/systemd/system/zabbix-proxy.service
/usr/lib/tmpfiles.d/zabbix-proxy.conf
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_proxy_mysql
/usr/share/doc/zabbix-proxy-mysql-5.0.12
/usr/share/doc/zabbix-proxy-mysql-5.0.12/AUTHORS
/usr/share/doc/zabbix-proxy-mysql-5.0.12/COPYING
/usr/share/doc/zabbix-proxy-mysql-5.0.12/ChangeLog
/usr/share/doc/zabbix-proxy-mysql-5.0.12/NEWS
/usr/share/doc/zabbix-proxy-mysql-5.0.12/README
/usr/share/doc/zabbix-proxy-mysql-5.0.12/schema.sql.gz #####这个就是我们要找的需要导入的sql信息
/usr/share/man/man8/zabbix_proxy.8.gz
/var/log/zabbix
/var/run/zabbix
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.12/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy ###将sql导入到zabbix_proxy中。最后的zabbix_proxy为数据库名称
8,修改zabbix_proxy配置文件,链接数据库的信息
sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf ###在这个文件的第162行写入DBPassword=zabbix。并将源文件做个后缀为“.ori”的备份
sed -i 's#Server=127.0.0.1#Server=192.168.1.104#' /etc/zabbix/zabbix_proxy.conf
sed -i 's#Hostname=Zabbix proxy#Hostname=slave1#' /etc/zabbix/zabbix_proxy.conf
9,检查zabbix_proxy.conf
[root@slave1 zabbix]# more /etc/zabbix/zabbix_proxy.conf|grep -Ev '^#|^$' 或者【 grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf】
Server=192.168.1.104 ###zabbix-server
Hostname=slave1 ###zabbix-proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBPassword=zabbix
DBName=zabbix_proxy
DBUser=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
10,启动代理服务
systemctl start zabbix-proxy
检查:systemctl status zabbix-proxy
11,在web页面添加代理
web界面》管理》agent代理程序》创建代理(agent代理程序名称:peoxy机器的hostname。代理地址:peoxy机器的ip)
看到“最近出现(持续)”有数值,即为成功。或者看服务端server日志
客户端agent2 配置:
[root@slave2 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.1.109 ####zabbix-proxy的ip
ServerActive=192.168.1.109 ####zabbix-proxy的ip
Hostname=slave2 ####agent2本机的hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
设置zabbix-agent2启动,并开机自启:
systemctl enable --now zabbix-agent2
在web界面添加agent2客户端:
web》配置》主机》添加主机》:
主机名称:agent2主机的hostname
可见名称:histname-ip
群主:linux servers
客户端ip:agent2ip
由agent代理程序监测:slave1(zabbix-proxy的hostname【选择即可】)
重启服务:
systemctl restart zabbix-agent2
systemctl restart zabbix-proxy
snmp(简单网络管理协议【应用层协议】)监控:
1,服务端(zabbix-server)安装snmp程序:
yum -y install net-snmp net-snmp-utils
2,开启snmp的配置:
sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf ##在第57行添加数据,并备份文件,后缀为.ori
systemctl start snmpd
3,使用snmp命令
snmpwalk -v 2c -c public 127.0.0.1 sysname
##参数:
-v :指定协议版本【上行‘-v 2c’为指定第二个版本】
-c :指定暗号【上行‘-c public’为指定暗号为public(固定)】
sysname:snmp的key
例:
[root@oppo1 snmp]# snmpwalk -v 2c -c public 127.0.0.1 sysname
SNMPv2-MIB::sysName.0 = STRING: oppo1
web设置:
web》配置》zabbix server》主机》interfaces》SNMP(选择)》(默认配置就可以,有需求可以更改)
删除原有模板:web》配置》主机》模板》取消链接并清理(全部)
重新链接新模板:Template OS Linux SNMP