Zabbix的自定义监控

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

    • 点击配置–>主机–>创建主机–>创建监控项
      Zabbix的自定义监控_第1张图片
      然后进入到另外一个界面
  • 然后创建一个监控项–>点击创建监控项
    Zabbix的自定义监控_第2张图片然后去条监控项–>调好之后点击添加;完成配置
    Zabbix的自定义监控_第3张图片
    验证是否添加成功

去到web界面:配置–>主机–>选择自己设置的–>应用–>找到自己监控的redis_status_check这个监控选项
Zabbix的自定义监控_第4张图片自定义脚本监控

第一步:修改监控主机的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=,
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界面配置:配置–>主机–>选择
Zabbix的自定义监控_第5张图片检查: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

你可能感兴趣的:(Linux-集群阶段,zabbix,服务器,linux)