ZABBIX工作流程与自定义监控项
1.安装zabbix客户端
[root@192 zabbix-5.0.1]# yum install gcc pcre*
[root@192 zabbix-5.0.1]# ./configure --enable-agent
[root@192 zabbix-5.0.1]# make install
[root@192 zabbix-5.0.1]# useradd -r -M -s /sbin/nologin zabbix
[root@192 zabbix-5.0.1]# vim /usr/local/etc/zabbix_agentd.conf
Server=192.168.30.226
ServerActive=192.168.30.22
Hostname=001
[root@192 zabbix-5.0.1]# zabbix_agentd
[root@192 zabbix-5.0.1]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 :::22 :::*
**服务端**
可以取到值
[root@zyy180 ~]# zabbix_get -s 192.168.30.178 -k vfs.file.cksum[/tmp/zyy]
621795530
解决zabbix中文乱码问题
将自己电脑上的字体导出来
源码安装,将文件拖进这个位置,并改名MSYHBD
图表没有乱码
1.创建主机组
1.右上角创建
2.添加主机
Host name要与配置文件一致
右上角添加
2.添加监控项
A.用模板添加
1.右上角创建主机的第二列
2.查看图形
点一下IP,在弹框里点Graphs
B.用手动方式
1.点ltems
2.右上角添加监控项
Type选择 Zabbix agent
3.查看*
3.添加触发器
1.点击Tiggers
2.右上角添加
选择刚刚添加的监控项
点击Add选择监控项要是使用的函数
3.查看触发器
4.添加媒介
1.媒体配置
SMTP server 是邮箱的服务器(到自己的邮箱网站下查看)
STMP email 是 指定使用邮箱(希望那个邮箱发送邮件给你)
password是pop3/smtp授权码
选择模板
2.创建一个用户
3.添加发送的mail
Type选择刚刚创建的媒介
5.添加动作
1.选择刚刚创建的用户和媒体
Add选择刚刚创建的用户
Seed only to 选择刚刚创建的媒体
2.完成
其他添加媒介动作的方法
1.使用脚本
**在服务器端**
[root@zyy180 yum.repos.d]# yum -y install mailx
[root@zyy180 ~]# echo "666" |mail -s "111" zyy130988@163.com //可以发邮件
//设置脚本存放路径
[root@zyy180 etc]# vim zabbix_server.conf
AlertScriptsPath=/usr/local/etc/zabbix/alertscripts
[root@zyy180 etc]#mkdir -p /usr/local/etc/zabbix/alertscripts
[root@zyy180 etc]#cd /usr/local/zabbix/alertscripts
[root@zyy180 alertscripts]# vim sendmail.sh
[root@zyy180 alertscripts]# chmod +x sendmail.sh
[root@zyy180 alertscripts]# vim sendmail.sh
#!/bin/bash
SUBJECT=$(echo -e $2 |tr "\r\n" "\n")
MESSAGE=$(echo -e $1 |tr "\r\n" "\n")
echo "$MESSAGE" | /usr/bin/mail -s "SUBJECT" $3
[root@zyy180 etc]# chown -R zabbix.zabbix zabbix
重启服务
1.配置媒介,选择Script(脚本
2.选择参数
3.选择刚创建的媒介
Edit修改 Type改为刚刚创建的媒介
4.修改动作
send only to 选择刚刚创建的媒介
5.完成
2.配置文件mail.rc
[root@zyy180 alertscripts]# vim /etc/mail.rc //更改邮件的配置文件
set from=zyy130988@163.com
set smtp="smtp.163.com"
set smtp-auth-user=zyy130988@163.com
set smtp-auth-password=DJAVQTYYZRYYTYKU
set smtp-auth=login
[root@zyy180 alertscripts]# systemctl restart postfix //重新启动
1.添加媒介
2.完成
自定义监控项
**客户端**
1.创建一个脚本存放目录
[root@192 ~]# mkdir /scripts/
[root@192 ~]# cd /scripts/
2.创建脚本文件
[root@192 scripts]# vim check_process.sh
#!/bin/bash
process_status=$(ps -ef|grep $1 |grep -Ev "grep|$0" | wc -l )
if [ $process_status -eq 0 ];then
echo '1'
else
echo '0'
fi
3.给执行权限
[root@192 scripts]# chmod +x check_process.sh
4.修改配置文件启动功能,启动功能
[root@192 scripts]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1
key 用/bin/bash执行 脚本位置 参数
5.重启服务
[root@192 etc]# pkill zabbix
[root@192 etc]# zabbix_agentd
**服务端**
[root@zyy180 etc]# zabbix_get -s 192.168.30.178 -k check_process[vim]
0
1.添加监控项
key要写配置文件里的
有函数就在[写进来]
2.查看监控项
3.查看监控项的状态值
右上角更改View as
4.添加触发器
ltem选择刚刚添加的监控项
Resuit=1 (等于1就触发)
5.完成
1.自定义监控日志
1.配置客户端文件
1.将脚本下载下来
https://github.com/chendao2015/pyscripts
2.cp到脚本目录下
[root@localhost ~]# unzip pyscripts-master.zip
[root@localhost ~]# cd pyscripts-master
[root@localhost pyscripts-master]mv log.py /scripts/
3.更改配置文件
[root@localhost ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=log_information[*],/usr/bin/python /scripts/log.py $1 $2 $3
4.在服务端测试
[root@zyy180 ~]# zabbix_get -s 192.168.30.230 -k log_information[/var/log/secure,/tmp/logseek,Failed]
1
tail -f 实时查看日志
2.添加监控项
3.添加触发器
4.完成
2.自定义监控 MySQL主从
1.配置文件
**在1号客户端安装mysql**
**在2号客户端上安装mysql与zabbix客户端**
**1号客户端和2号客户端将主从配好**
1.在2号客户端创建脚本目录(与1号客户端一致)
[root@yyslave ~]# mkdir /scripts
[root@yyslave ~]#cd /scripts/
2.编写脚本
[root@yyslave scripts]# vim master_slave.sh
#!/bin/bash
master_slave=$( /usr/bin/mysql -uroot -e 'show slave status\G;' 2>/dev/null | grep "Slave.*Running" | grep -c 'Yes' )
if [ $master_slave -eq 2 ];then
echo "0"
else
echo "1"
fi
3.更改配置文件
[root@yyslave scripts]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=master_slave,/usr/bin/bash /scripts/master_slave.sh
4.重启服务
[root@yyslave ~]# pkill zabbix
[root@yyslave ~]# zabbix_agentd
5.在服务端测试
[root@zyy180 ~]# zabbix_get -s 192.168.30.231 -k master_slave
0
2.添加监控项
3.添加触发器
4.完成
3.自定义监控 MySQL延迟
1.更改配置文件
1.进入脚本目录,编写目录
[root@yyslave scripts]# vim database_delay.sh
#!/bin/bash
delay=$( /usr/bin/mysql -uroot -e 'show slave status\G;' 2>/dev/null | grep 'Seconds_Behind_Master' | awk -F ': '\+ '{print $2}' )
if [ $delay -eq 0 ];then
echo "0"
else
echo "1"
fi
2.更改配置文件
[root@yyslave scripts]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=database_delay,/usr/bin/bash /scripts/database_delay.sh
3.重启服务
[root@yyslave scripts]# pkill zabbix
[root@yyslave scripts]# zabbix_agentd
4.服务端测试
[root@zyy180 ~]# zabbix_get -s 192.168.30.231 -k database_delay
0
2.添加监控项
3.添加触发器
这里应该是>0 ,
但为了试验效果所以 表达式=0
4.完成
给监控项加声音
点击User settings,在点击第三个选项
Zabbix常用监控项
Windons系统:
项目 | items | items说明 |
---|---|---|
内存 | vm.memory.size[free] vm.memory.size[total] | 系统可用内存量 系统总共内存量 |
swap空间 | system.swap.size[,free] system.swap.size[,total] | swap情况 |
CPU | system.cpu.util[,avg1] | |
CPU | system.cpu.util[,avg5] | 系统CPU平均5min的利用百分比 |
CPU | system.cpu.util[,avg15] | 系统CPU平均15min的利用百分比 |
CPU | system.cpu.load[percpu,avg1] | 系统CPU总负载/在线cpu个数平均1min的利用百分比 |
CPU | system.cpu.load[percpu,avg5] | 系统CPU总负载/在线cpu个数平均5min的利用百分比 |
CPU | system.cpu.load[percpu,avg15] | 系统CPU总负载/在线cpu个数平均15min的利用百分比 |
CPU | perf_counter[“\Processor(_Total)% User Time”] | 系统CPU使用时间百分比情况 |
CPU | perf_counter[“\Processor(_Total)% Processor Time”] | 系统CPU使用负载百分比情况 |
磁盘空间(可用量) | vfs.fs.size[{#FSNAME},free] | 可用磁盘空间大小 |
磁盘空间(使用百分比) | vfs.fs.size[{#FSNAME},pfree] | 可用磁盘空间大小占分区总磁盘空间的百分比 |
磁盘空间(总量) | vfs.fs.size[{#FSNAME},total] | 分区总磁盘空间大小 |
磁盘空间(使用量) | vfs.fs.size[{#FSNAME},used] | 已使用磁盘空间大小 |
I/O (读) | perf_counter[\2\16] | 磁盘读取量 (bytes) |
I/O (写) | perf_counter[\2\18] | 磁盘写入量 (bytes) |
I/O (读队列) | perf_counter[\234(_Total)\1402] | 磁盘读取队列数 |
I/O (写队列) | perf_counter[\234(_Total)\1404] | 磁盘写入队列数 |
网络流量(进口) | net.if.in[{#IFNAME}] | 网络进接口流量 (bps) |
网络流量(出口) | net.if.out[{#IFNAME}] | 网络出接口流量 (bps) |
系统 | proc.num[] | 系统中总进程数量 |
系统 | perf_counter[\2\250] | 系统中线程的数量 |
系统 | system.localtime | 系统时间 |
Agent | agent.ping | 检查客户端可用性 |
Agent | agent.version | 检查客户端使用版本 |
Agent | system.uname | 系统详细信息 |
Agent | system.uptime | 系统开启持续时间 |
Agent | agent.hostname | 客户端主机名 |
程序内存/虚拟内存 | proc_info[<process>,<attribute>,<type>] | 程序内存、虚拟内存监控: process - process name attribute - requested process attribute(vmsize,wkset内存) type -min,max,avg,sum eg:proc_info[NewImport.exe,vmsize,sum] NewImport.exe的内存使用情况 |
程序PID监控 | perf_counter[counter,] | 监控程序Pid counter-“\Process(reportserver)\ID Process” |
Linux系统:
项目 | items | items说明 |
---|---|---|
内存 | vm.memory.size[available] | 系统中已用内存量 |
内存 | vm.memory.size[total] | 系统总共内存量 |
swap空间 | system.swap.size[,free] system.swap.size[,pfree] system.swap.size[,total] | |
CPU | system.cpu.switches | 系统文件切换 (bps) |
CPU | system.cpu.util[,user] | 类似于对应系统中top命令查看CPU显示值 |
CPU | system.cpu.util[,nice] | 类似于对应系统中top命令查看CPU显示值 |
CPU | system.cpu.util[,system] | 类似于对应系统中top命令查看CPU显示值 |
CPU | system.cpu.util[,iowait] | 类似于对应系统中top命令查看CPU显示值 |
CPU | system.cpu.util[,idle] | 类似于对应系统中top命令查看CPU显示值 |
CPU | system.cpu.util[,interrupt] | 类似于对应系统中top命令查看CPU显示值 |
CPU | system.cpu.util[,steal] | 类似于对应系统中top命令查看CPU显示值 |
CPU | system.cpu.util[,softirq] | 类似于对应系统中top命令查看CPU显示值 |
CPU | system.cpu.load[percpu,avg1] | 系统CPU总负载/在线cpu个数平均1min的利用百分比 |
CPU | system.cpu.load[percpu,avg5] | 系统CPU总负载/在线cpu个数平均5min的利用百分比 |
CPU | system.cpu.load[percpu,avg15] | 系统CPU总负载/在线cpu个数平均15min的利用百分比 |
磁盘空间(可用量) | vfs.fs.size[{#FSNAME},free] | 可用磁盘空间大小 |
磁盘空间(使用百分比) | vfs.fs.size[{#FSNAME},pfree] | 可用磁盘空间大小占分区总磁盘空间的百分比 |
磁盘空间(总量) | vfs.fs.size[{#FSNAME},total] | 分区总磁盘空间大小 |
磁盘空间(使用量) | vfs.fs.size[{#FSNAME},used] | 已使用磁盘空间大小 |
磁盘空间(节点数占用) | vfs.fs.inode[{#FSNAME},pfree] | 可用磁盘节点数占总节点数的百分比 |
网络流量(进口) | net.if.in[{#IFNAME}] | 网络进接口流量 (bps) |
网络流量(出口) | net.if.out[{#IFNAME}] | 网络出接口流量 (bps) |
系统 | proc.num[] | 系统中总进程数量,通过top查看 |
系统 | proc.num[,run] | 系统中处于running的进程,通过top查看 |
系统 | system.localtime | 系统时间 |
系统 | vfs.file.cksum[/etc/passwd] | 系统文件passwd的文件总数 |
系统 | system.boottime | 系统启动的时间戳 |
系统 | system.hostname | 系统名称 |
系统 | system.cpu.intr | 设备中断 |
系统 | kernel.maxfiles | 系统支持打开文件的最大数量 |
系统 | kernel.maxproc | 系统支持打开进程的最大数量 |
系统 | system.users.num | 登陆系统的用户数 |
Agent | agent.ping | 检查客户端可用性 |
Agent | agent.version | 检查客户端使用版本 |
Agent | system.uname | 系统详细信息 |
Agent | system.uptime | 系统开启持续时间 |
Agent | agent.hostname | 客户端主机名 |
端口 | net.tcp.listen[port] | 监控程序端口启用 |