服务器环境准备
[root@bogon etc]# cat redhat-release #查看系统版本
CentOS Linux release 7.7.1908 (Core)
<u>https://www.cnblogs.com/yaoyaojcy/p/9884130.html</u>
yum -y update
1.关闭selinux
vi /etc/selinux/config #将SELINUX=enforcing改为SELINUX=disabled 设置后需要重启才能生效
setenforce 0 #临时关闭命令
getenforce #检测selinux是否关闭,Disabled 为关闭
2.配置防火墙
在 iptables 中放行 80,10050,10051 端口
iptables -I INPUT -p tcp -m multiport --destination-port 80,10050:10051 -j ACCEPT
3.保存iptables规则
service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
|firewall-cmd --state #not runningrunning
systemctl stop firewalld.service #临时关闭firewall
systemctl disable firewalld.service #禁止firewall开机启动
zabbix****服务端安装
选择zabbix 4.0 LBS 长期支持版本
1.安装zabbix的repo源
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
执行完毕后 /etc/yum.repos.d目录下新增zabbix.repo文件
vi /etc/yum.repos.d/zabbix.repo
替换URL地址为https://mirrors.tuna.tsinghua.edu.cn/zabbix/
2.安装zabbix-server-mysql和zabbix-web-mysql
yum install zabbix-server-mysql zabbix-web-mysql -y
3.安装配置数据库mariadb-server,导入初始数据
yum install mariadb-server -y # mariadb 安装
systemctl enable mariadb.service #设置开机自启
systemctl start mariadb.service #开启数据库
mysql_secure_installation #数据库安全初始化
mysql
MariaDB [(none)]> create database zabbix charset utf8; #创建数据库
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by '123456'; #设置数据库密码
Quit #退出
[root@localhost yum.repos.d]# rpm -ql zabbix-server-mysql #查找sql文件
cd /usr/share/doc/zabbix-server-mysql-4.0.17/
[root@localhost zabbix-server-mysql-4.0.17]# gzip -d create.sql.gz
[root@localhost zabbix-server-mysql-4.0.17]# mysql -uzabbix -p123456 zabbix <create.sql #导入sql文件
4.修改zabbix配置文件
vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456 #修改以上配置
systemctl enable zabbix-server.service # zabbix-server开机自启
systemctl start zabbix-server.service # 打开zabbix-server服务
netstat -lntup10051 #查看10051端口监听状态 若不存在该命令执行yum install net-tools
5.修正zabbix-web配置文件
systemctl enable httpd #apache开机自启
systemctl start httpd #apache开启
更改时区
vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
执行完毕以上操作安装完毕.在浏览器输入http://10.180.107.23/zabbix/
Username:admin
Password:zabbix
6.zabbix服务器添加本机监控主机
服务器添加本机监控主机
yum install zabbix-agent.x86_64 -y
systemctl enable zabbix-agent.service
systemctl start zabbix-agent.service
netstat -lntup查看端口监听10050
7.在其他地方添加监控agent
安装代理服务
因为yum install zabbix-agent.x86_64 -y没有安装zabbix源。所以失败
https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/
复制链接
rpm-ivh zabbix-agent-4.0.17-2.el7.x86_64.rpm
8.配置代理服务
vim /etc/Zabbix/Zabbix_agented.conf
更改Server=服务主机IP
systemctl enable zabbix-agent.service
systemctl start zabbix-agent.service
netstat -lntup查看端口监听10050
以上命令行 步骤
Web页面创建主机
9.Windows平台 zabbix-agent
在windows命令行窗口下执行: 1.查看所有的端口占用情况
C:>netstat -ano
https://www.cnblogs.com/opsprobe/p/11719198.html
下载安装包
https://www.zabbix.com/cn/download_agents#tab:40LTS
**.msi
Suse 11 ps4安装zabbix-agent
安装代理
rpm –ivh 软件包名
https://blog.csdn.net/brenda2314/article/details/88320012
下载安装包
zipper in **.rpm #suse 安装RPM软件包
配置代理 启动zabbix-agentd服务并加入开机自启动
suse11sp3: service zabbix-agentd start chkconfig zabbix-agentd on suse12: systemctl start zabbix-agentd systemctl enable zabbix-agentd
vi /etc/zabbix/zabbix-agent.conf
vi /etc/zabbix/zabbix-agentd.conf
server=服务端IP
查看redhat版本的命令
cat /etc/redhat-release
查看suse版本的命令
cat /etc/SuSE-release
查看Linux内核版本cat /proc/version或uname -a或uname -r查看操系统位数getconf LONG_BIT
vi /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent.service #重启zabbix-agent
systemctl enable zabbix-agent.service #开机自启
systemctl start zabbix-agent.service #启动zabbix-agent
netstat –lntup #查看端口监听10050
firewall-cmd --query-port=10050/tcp #查看端口号是否开发
firewall-cmd --zone=public --add-port=10050/tcp #开放端口号
systemctl restart firewalld.service #重启firewall
新建监控模板
填写模板名称à群组
新建应用集
创建监控项
zabbix支持的主要监控方式:
zabbix主要Agent,Trapper,SNMP,JMX,IPMI这几种监控方式,本文章主要通过监控理论和实际操作测试等方式来简单介绍这几种方式的监控原理和优缺点等 。下面对几种监控方式的监控原理进行介绍:
1、Agent监控方式
在Agent监控方式下,zabbix-agent会主动收集本机的监控信息并通过TCP协议与zabbix-server传递信息。Agent监控方式分为主动和被动模式。在被动模式下,zabbix-agent监听10050端口,等待zabbix-server的监控信息收集信息请求;在主动模式下,zabbix-agent收集监控信息并通过10050端口主动将数据传给zabbix-server所在服务器的10051端口。
优点:
1)是zabbix最常用的监控方式,监测指标深入细致有针对性。
2)内置监控功能强大,内置监控项目丰富。
3)TCP方式实现通讯,可靠性也有保证。
缺点:
1)需要在被监控机器上安装zabbix-agent客户端,部署相对麻烦,最初需要逐个机器安装代理软件
2)zabbix-agent客户端运行在被监控机上,会收集本机信息
2、Trapper监控方式
Trapper监控方式使用zabbix-sender程序主动向zabbix-server发送数据。key的名称和发送的数据内容都可以灵活定义。发送的信息采用JSON格式,遵循zabbix-sender协议。可以自定义脚本利用zabbix-sender协议来zabbix-server发送信息。
优点:
1)不需要在被监控机器上安装zabbix-agent
2)不收集被监控机器的信息
3)可以自定义发送的信息内容
4)可以使用自定义脚本发送信息
缺点:
1)需要自定义发送的信息内容
2)无内置监控项目
3、SNMP监控方式
SNMP全称Simple Network Management Protocol,即网络管理协议,包括进程管理和被管理设备两部分。作为一种国际通用的网络管理协议被广泛的应用于各种交换机,路由器等网络设备的管理上,而现在也越来越多被用于对服务器的监控上。
优点:
1)服务器一旦部署SNMPAgent,任何能实现SNMP协议的软件都可以对其进行监测。
2)通过这种手段进行监测不需知道被监测服务器的用户名和密码,比较安全。
缺点:
1)很多服务器并非默认安装SNMPAgent,如果通过这种方式监测则需要对所有服务器安装部署。
2)能监测的参数指标比较固定不够深入,无法满足用户的特殊需求。
3)由于SNMP协议是通过UDP方式实现的。在网络状况不佳的情况下其可靠性能以保证。
4、JMX监控方式
JMX,全称Java Management Extensions,即Java管理拓展,是Java平台为应用程序,设备,系统等植入管理功能的框架。在zabbix中,JMX数据的获取由zabbix-java-gateway代理程序来负责数据的采集。
优点:
1)可以详细的监控各类Java程序的运行状态
缺点:
1)被监控机上需要安装zabbix-java-gateway
5、IPMI监控方式
IPMI,全称Interlligent Platform Management Interface,即智能平台管理接口,原本是Intel架构中企业系统的周边设备所采用的一种工业标准,以后成为业界通用的标准。用户可以利用IPMI监控服务器的物理特性,如温度,电压,电扇工作状态,电源供应以及机箱***等指标。
根据以上对zabbix各主要监控方式的梳理,结论如下:
1)根据被监控机器的环境和客户要求选用适当的监控方式,可同时配合多种监控方式。
2)有条件在监控机上部署zabbix-agent客户端时,该方法为第一选择,因为其功能强大且配置相对简便。
3)需要自定义脚本或者监控信息时,可使用Trapper方式,即使用zabbix-sender程序或者自定义脚本遵循zabbix-sender协议,已JSON形式,通过TCP发送自定义信息。
zabbix4.0配置邮件报警详细过程(带图)
https://blog.51cto.com/12226796/2440359?source=dra
https://blog.51cto.com/12226796/2440359?source=dra
https://blog.csdn.net/PpikachuP/article/details/90312556
1、安装mail
[root@zabbix alertscripts]# yum install mailx -y
2、编辑配置文件在最后一行添加
[root@zabbix alertscripts]# vim /etc/mail.rc set bsdcompat set sendcharsets=iso-8859-1,utf-8 set from=邮箱 set smtp=smtp://smtp.exmail.qq.com set smtp-auth-user=邮箱 set smtp-auth-password=邮箱密码 set smtp-auth=login
3、测试邮件发送是否正常
[root@zabbix alertscripts]# echo "zabbix test mail" |mail -s "zabbix" 邮箱
4、编写发邮件脚本
[root@zabbix alertscripts]# cd /usr/lib/zabbix/alertscripts [root@zabbix alertscripts]# vi mailx.sh
!/bin/bash #send mail
messages=echo 2 | tr '\r\n' '\n' echo "{subject}" $1 >>/tmp/mailx.log 2>&1
5、修改权限
touch /tmp/mailx.log chown -R zabbix.zabbix /tmp/mailx.log chmod +x /usr/lib/zabbix/alertscripts/mailx.sh chown -R zabbix.zabbix /usr/lib/zabbix/
6、测试脚本发送邮件
[root@zabbix alertscripts]# echo "hello world" | mail -s "testmail" 你的邮箱
添加Zabbix服务端邮件发送脚本
#cd /usr/lib/zabbix/alertscripts
进入脚本存放目录
#vim sendmail.sh
#!/usr/bin/sh
echo 'start' >> /tmp/zabbix.log
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1
echo "${messages}" >> /tmp/zabbix.log
echo "end" >> /tmp/zabbix.log
date >> /tmp/zabbix.log
echo '-------------' >> /tmp/zabbix.log
#chown zabbix.zabbix sendmail.sh
#chmod 755 sendmail.sh
#touch /tmp/zabbix.log
#chown zabbix.zabbix /tmp/zabbix.log
设置脚本所有者为zabbix用户
chmod +x sendmail.sh
设置脚本执行权限
测试
./sendmail.sh xxx@163.com zabbixserver message
1.创建报警媒介类型
添加三个脚本参数 {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
2.创建动作
3.修改用户报警媒介收件人
重要的要求:
Zabbix磁盘性能监控
iostat统计磁盘信息的时候,使用的是/proc/diskstats ,cat /proc/diskstats显示如下
iostat统计磁盘信息的时候,使用的是/proc/diskstats ,cat /proc/diskstats显示如下
复制代码
1 0 ram0 0 0 0 0 0 0 0 0 0 0 0
1 1 ram1 0 0 0 0 0 0 0 0 0 0 0
1 2 ram2 0 0 0 0 0 0 0 0 0 0 0
1 3 ram3 0 0 0 0 0 0 0 0 0 0 0
1 4 ram4 0 0 0 0 0 0 0 0 0 0 0
1 5 ram5 0 0 0 0 0 0 0 0 0 0 0
1 6 ram6 0 0 0 0 0 0 0 0 0 0 0
1 7 ram7 0 0 0 0 0 0 0 0 0 0 0
复制代码
这个命令用于显示磁盘、分区和统计信息
sda为整个硬盘的统计信息
sda1为第一个分区的统计信息
sda2为第二个分区的统计信息。
ramdisk设备为通过软件将RAM当做硬盘来使用的一项技术。
硬盘参数详解如下:
8 0 sda 3836 1551 149462 7579 3762686 31005542 278146400 23009652 0 14464012 23013470
编号 设备 读完成次数 合并完成次数 读扇区次数 读操作花费毫秒数 写完成次数 合并写完成次数 写扇区次数 写操作花费的毫秒数 正在处理的输入/输出请求数 输入/输出操作花费的毫秒数 输入/输出操作花费的加权毫秒数。
有了这些信息我们就可以添加进zabbix进行监控
1. 添加userparameter_io.conf配置文件
在/etc/zabbix/zabbix_agentd.d下添加userparameter_io.conf, 文件内容如下:
UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}' //磁盘读的次数
UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}' //磁盘读的毫秒数
UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}' //磁盘写的次数
UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}' //磁盘写的毫秒数
UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}' //正在处理的输入输出的请求数
UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}' //花费在IO操作上的毫秒数
UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}' //读扇区的次数(一个扇区的等于512B)
UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}' //写扇区的次数(一个扇区的等于512B)
2、重启zabbix-agent服务
systemctl restart zabbix-agent
3、测试zabbix-server获取数据
zabbix_get -s 目标服务器IP -p 10050 -k custom.vfs.dev.write.ops[sda]
4、配置zabbix-server
进入web界面—》配置—》模板—创建模板,或者直接在现有的Linux模板下添加监控项
配置第一个监控项
Name: Disk:$1:Read:Bytes/sec
Key: custom.vfs.dev.read.sectors[sda]
Units: B/sec
Store value: speed per second //会进行差值计算
Use custom multiplier 512 //会对值乘以512,因为这里是一个扇区,转换为字节为512B
第二监控项:和第一个一样的配置过程
Name:Disk:$1:Write:Bytes/sec
Key: custom.vfs.dev.write.sectors[sda]
Units: B/sec
Store value: speed per second
Use custom multiplier 512
第三个监控项配置参数
Name:Disk:$1:Read:ops per second
Key: custom.vfs.dev.read.ops[sda]
Units: ops/second
Store value: speed per second
第四个监控项配置参数:
Name: Disk:$1:Write:ops per second
Key: custom.vfs.dev.write.ops[sda]
Units: ops/second
Store value: speed per second
第五个监控项配置参数:
Name: Disk:$1:Read:ms
Key: custom.vfs.dev.read.ms[sda]
Units: ms
Store value: speed per second
第六个监控项配置参数:
Name:Disk:$1:Write:ms
Key: custom.vfs.dev.write.ms[sda]
Units: ms
Store value: speed per second
IO操作的输入输出没有配置监控项,主要监控的是磁盘的读写情况,接着添加相应的图形即可
创建自动发现规则
在客户机器创建发现硬盘脚本。disk_discovery.sh
linux-gpwl:/etc/zabbix # cat disk_discovery.sh
#!/bin/bash
diskarray=(`cat /proc/diskstats |grep -E "\bsd[abcdefg]\b|\bxvd[abcdefg]\b"|grep -i "\b$1\b"|awk '{print $3}'|sort|uniq 2>/dev/null`)
length=${#diskarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"
vi /etc/zabbix/zabbix_agentd.conf在尾部添加一下内容
# UserParameter=
UserParameter=io.scandisk[*],/etc/zabbix/zabbix_agentd.d/disk_discovery.sh $1
#每秒读操作数
UserParameter=io.rps[*],/usr/bin/iostat -m -x -d |grep "$1"|tail -1|awk '{print $$4}'
#每秒写操作数
UserParameter=io.wps[*],/usr/bin/iostat -m -x -d |grep "$1" |tail -1|awk '{print $$5}'
#平均每次设备IO操作数据大小
UserParameter=io.avgrq-sz[*],/usr/bin/iostat -m -x -d |grep "$1" |tail -1|awk '{print $$8}'
#平均IO队列长度
UserParameter=io.avgqu-sz[*],/usr/bin/iostat -m -x -d |grep "$1" |tail -1|awk '{print $$9}'
#平均每次IO操作等待时间
UserParameter=io.await[*],/usr/bin/iostat -m -x -d |grep "$1" |tail -1|awk '{print $$10}'
#平均每次IO操作的服务时间
UserParameter=io.svctm[*],/usr/bin/iostat -m -x -d |grep "$1" |tail -1|awk '{print $$11}'
#一秒内用于IO操作的百分比
UserParameter=io.util[*],/usr/bin/iostat -m -x -d |grep "$1" |tail -1|awk '{print $$12}'
填入以下信息
添加监控原型
添加监控原型必须[{#DISK_NAME}]
否则会报以下错误
Cannot create item: item with the same key diskio.x.[[xxxxxx]] already exists