Zabbix-使用自动发现,实现对应用进程的监控

11 篇文章 0 订阅
10 篇文章 0 订阅

说明

在维护工作中,对应用进程的监控是必不可少的一部分,当服务器规模庞大,应用进程种类繁多时,逐个的添加进程监控会让人很恼火。那如何能快速、有效的在各类服务器中,对应用进程实现准确的监控呢?本文将从思路、过程、验证三个维度,一步步的举例完成。

思路

一,梳理需要监控哪些进程
二,编写进程自动发现脚本
三,编写获取进程数脚本
四,修改agent配置文件
五,创建监控模板
六,验证

一,梳理进程

本文将以app_mon和app_mon_master进程举例,因为在工作中经常遇到在同一服务器上,有名称相似的进程。当grep一个进程时,会将另外一个进程也检索出来,这种情况会对判断进程是否存在带来很大干扰,为此总结分享,有效闭坑。

[root@localhost scripts]# ps -ef | grep app_mon
root      13125  12456  0 12:50 pts/1    00:00:00 sh /apps/soft/proc_test/app_mon
root      13136  12456  0 12:50 pts/1    00:00:00 sh /apps/soft/proc_test/app_mon_master
root      16316  15549  0 14:56 pts/3    00:00:00 grep --color=auto app_mon

二,进程自动发现脚本

脚本运行在zabbix agent端。进程名当做参数传入脚本,判断在服务器中是否存在该进程,若存在,将会检索出进程的绝对路径,并以[{#NAME:绝对路径/进程名},{#NAME:绝对路径/进程名},…]的方式显示,并交个zabbix server,用于进程的自动发现。

[root@ys~]# /etc/zabbix/scripts/find_proc_list.sh
#!/bin/bash
fun_check()
{
  data=""
  for x in $@    
  #$@代表所有位置参数
  do
    data="${data}{\"{#NAME}\":\"${x}\"},"  
    #以字典的形式输出,KEY为#NAME
  done
  data=${data%?}    
  #${%?} 删除变量末尾的特殊符号,本次删除“,”号
  echo "[${data}]"
}

if [ $1 == app_mon ];then
  cmd_line=`ps -ef | grep app_mon | grep -v grep | grep -v $0 | grep -oP "(?<=sh )\S+"`
  #在grep时,锚定每行的“sh ”,然后将后面的字符串输出
fi

fun_check ${cmd_line}

三,获取进程数脚本

脚本运行在zabbix agent端。该脚本将进程名和进程的绝对路径当做位置参数传入,准确判断该进程的数量,并将值传回zabbix server,用以进程监控的触发器使用。

[root@ys~]# /etc/zabbix/scripts/check_proc_num.sh
#!/bin/bash

fun_app_mon()
# 针对既有app_mon进程又有app_mon_master进程的情况,避免获取到不准确的值。
{
res=`ps -ef | grep $1 | grep -v grep | grep -v $0 | grep -oP "(?<=sh )\S+" | grep -Fx $2`
# grep -Fx为完全匹配,避免匹配app_mon时,匹配到app_mon_master的数据
}

if [ app_mon == $1 ];then
  fun_app_mon $1 $2
else
  for x in $@
  do
    if [ -z ${res} ];then
      res=`ps -ef | grep -v grep | grep -v $0 | grep ${x}`
    else
      res=`echo ${res} | grep -v grep | grep -v $0 | grep ${x}`
    fi
  done
fi

if [ -z ${res} ];then
  echo 0
else
  echo ${res} | wc -l
fi

四,修改agent配置文件

[root@ys~]# cat /etc/zabbix/zabbix_agent2.d/proc_check.conf 
# 进程自动发现配置
UserParameter=find.proc.name[*],sh /etc/zabbix/scripts/find_proc_list.sh $1

# 获取进程个数配置
UserParameter=check_proc_num[*],sh /etc/zabbix/scripts/check_proc_num.sh $1 $2

五,创建监控模板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

六,验证

1,在监控项中出现了对应的进程监控。
在这里插入图片描述2,在最新数据中,获取到了对应的监控数值。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值