Zabbix的自定义监控
zabbix自动可以提供很多监控项;但是往往不能满足需求;尝尝需要我们自己创建一系列的监控项,这就是自定义监控;
监控项:zabbix进行监控的一个指标,zabbix成为item;
- 它的值是由独立的key进行识别的;
如何判断一个服务是否启动?
#可以监控端口就能知道
[root@Node1 ~]# ps -ef | grep ssh
root 6638 1 0 22:20 ? 00:00:00 /usr/sbin/sshd -D
#判断是否为0;如果非0的就代表已经是挂掉了
[root@Node1 ~]# echo $?
0
#类似于这样的方法就是用到shell脚本上了;
自定义监控redis服务
- 利用zabbix自带的功能创建监控项
- 方法:配置–>主机–>监控–>创建监控项
- 注意:名称:最好是使用简单明了的
- 类型:自定义的
- 键值:这里是有模板的;
- 主机连接端口:ip+端口
- 间隔时间:自定义
- 历史数据保留时间–>默认是保留3个月
- 趋势:指的是中间值,平均值
- 应用集:可以自定义;
- 最后的状态已改是“已启用的状态”
- 验证: 检测–>最新数据–>选择主机–>应用
实验截图如下:
在zabbix-agent服务器上面安装一个zabbix - zabbix-agent:192.168.75.131
#安装redis
[root@Node1 ~]# yum -y install redis
#把redis的配置文件调整一下
[root@Node1 ~]# rpm -ql redis
/etc/logrotate.d/redis
/etc/redis-sentinel.conf
/etc/redis.conf
..............
#修改配置文件
[root@Node1 ~]# vim /etc/redis.conf
......
bind 0.0.0.0
.......
[root@Node1 ~]# systemctl start redis
#查看一下端口
[root@Node1 ~]# netstat -ntlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 7271/redis-server 0
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6866/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6949/master
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 7299/zabbix_agentd
然后回到zabbix-server端配置
-
web配置–>浏览器:192.168.75.130
- 点击配置–>主机–>创建主机–>创建监控项
然后进入到另外一个界面
- 点击配置–>主机–>创建主机–>创建监控项
-
然后创建一个监控项–>点击创建监控项
然后去条监控项–>调好之后点击添加;完成配置
验证是否添加成功
去到web界面:配置–>主机–>选择自己设置的–>应用–>找到自己监控的redis_status_check这个监控选项
自定义脚本监控
第一步:修改监控主机的zabbix-agent配置文件
#首先需要修改一下zabbix-agent的配置文件
[root@Node1 ~]# vim /etc/zabbix_agentd.conf
#指定监控项以及获取值的方式-->在空白处添加就可以
...........
#这一行就是用户自定义
284 ### Option: UserParameter
285 # User-defined parameter to monitor. There can be several user-defined parameters.
286 # Format: UserParameter=<key>,<shell command>
287 # See 'zabbix_agentd' directory for examples.
288 #
289 # Mandatory: no
290 # Default:
291 # UserParameter=
292 UserParameter=redis.status,bash bash /data/sh/redis_status.sh
293
.....
#选项的简介:
#redis-status-check:这个是键值(对应监控项的名称)
#bash /data/sh/redis_status.sh -->这里是指定获取监控项的方式
[root@Node1 ~]# systemctl restart zabbix-agent
第二步:创建脚本
#创建检测的脚本
#创建一个存放脚本的目录
[root@Node1 ~]# mkdir -p /data/sh
[root@Node1 ~]# cd /data/sh/
#开始创建脚本
[root@Node1 sh]# vim redis_status.sh
#!/bin/bash
#Author by LinagGaRy
##########################
killall -0 redis-server &> /dev/null
if [ $? -eq 0 ];then
echo 1
else
echo 0
fi
-
killall -0 +redis 是检测redis服务是否存在
#安装killall命令 [root@Node1 yum.repos.d]# yum search killall 已加载插件:fastestmirror Loading mirror speeds from cached hostfile ============================================= 匹配:killall ============================================== psmisc.x86_64 : Utilities for managing processes on your system [root@Node1 ~]# yum -y install psmisc
第三步:测试脚本
- 脚本运行的时候一定要先测试,脚本没有问题,才能继续;
- 测试需要在服务器端和客户端都进行测试
zabbix-agent端来测试一下脚本
#开启一下redis-->
[root@Node1 sh]# systemctl start redis
#然后测试脚本
[root@Node1 sh]# bash redis_status.sh
1
#关闭一下redis-->然后在测试
[root@Node1 sh]# systemctl stop redis.service
[root@Node1 sh]# bash redis_status.sh
0
#使用zabbix-agent命令来测试
[root@Node1 ~]# systemctl restart zabbix-agent.service
第四步:去web界面配置:配置–>主机–>选择
检查:web界面:检测—>最新数据–>筛选
web监控界面出现字体的乱码
随便在windows上main找一份字体上传给到服务器端;就OK了
windows的路径:C:\Windows\WinSxS\amd64_microsoft-windows-font-truetype-simkai_31bf3856ad364e35_10.0.14393.0_none_1fd5c0c98bebc282
进到服务器端,上传字体
[root@node0 ~]# ls
anaconda-ks.cfg simkai.ttf
#移动到zabbix的字体当中
[root@node0 ~]# mv simkai.ttf /usr/share/zabbix/assets/fonts/DejaVuSans.ttf
mv:是否覆盖"/usr/share/zabbix/assets/fonts/DejaVuSans.ttf"? y
#然后去到web更新
监控nginx服务
nginx中也是有状态模块的;
#在配置文件中可以添加如下信息
[root@Node1 ~]# vim /etc/nginx/nginx.conf
...........
location = /status {
stub_status;
}
#空白处新增加这一行
location = /status { #这里的目录是不用创建的
stub_status; #启用了状态模块
allow 192.168.75.131; #只允许本机访问、白名单
deny all; #拒绝所有;
}
..........
[root@Node1 ~]# nginx -s reload
#尝试查看一下
[root@Node1 ~]# curl 192.168.75.131:/status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
创建监控nginx的脚本
[root@Node1 ~]# cd /data/sh/
[root@Node1 sh]# vim nginx_status.sh
#!/bin/bash
#Author by LiangGaRY
######################
function active {
curl 192.168.75.131/status 2>/dev/null |awk 'NR==1{print $NF}'
}
function accepts {
curl 192.168.75.131/status 2>/dev/null | awk 'NR==3{print $1}'
}
function handled {
curl 192.168.75.131/status 2>/dev/null | awk 'NR==3{print $2}'
}
function requests {
curl 192.168.75.131/status 2>/dev/null | awk 'NR==3{print $3}'
}
function reading {
curl 192.168.75.131/status 2>/dev/null | awk 'NR==4{print $2}'
}
function writing {
curl 192.168.75.131/status 2>/dev/null | awk 'NR==4{print $4}'
}
function waiting {
curl 192.168.75.131/status 2>/dev/null | awk 'NR==4{print $NF}'
}
$1
#添加执行权限
[root@Node1 sh]# chmod +x nginx_status.sh
#脚本测试
[root@Node1 sh]# zabbix_get -s 192.168.75.131 -k nginx.status
然后去到web界面设置即可
vim编写属于自己的.vimrc格式
set wildmode=longest:list,full
ingremap ' ''<Esc>i
ingremap " ""<Esc>i
ingremap ( ()<Esc>i
ingremap [ []<Esc>i
ingremap { {}<Esc>i
ingremap < <><Esc>i
func Setsh()
call setline(1,"#!/bin/bash")
call setline(2,"#Author By LiangGaRy")
call setline(3,"#".strftime("%Y-%m-%d %H:%M:%S"))
call setline(4,"#############################")
normal G
normal o
normal o
endfunc