zabbix监控top下的某个进程的%cpu值。

本文介绍如何通过编写Python脚本和Shell脚本来获取Elasticsearch进程的CPU使用率,并利用Zabbix进行实时监控。此外,还介绍了如何在Zabbix中配置自定义监控项、图表及触发器。
部署运行你感兴趣的模型镜像

####1、背景描述
这几天发现es的服务占用的cpu资源比较高,经常出现瞬间彪高的现象,对分析原因的产生所以我们需要知道该进程的%cpu变化值,但是我们总不能一直盯着屏幕看,所以用zabbix进行监控。
比如top查看下面的值:

####2、解决思路

  • 写python脚本获取当前你要的进程的%cpu的值

  • 其次在zabbix-agentd.d目录中添加.conf结尾的文件,具体之前zabbix自定义监控时有描述。

  • 在zabbix页面中配置模板,并在模板中定义item,graph。

1、python脚本,Shell脚本二选一:

之所以这样,是因为python脚本获取值的时候是没问题的但是zabbix调用的时候会提示出现什么获取到的空值,但是实际执行python脚本是不会的。所以后来又写了一个shell脚本。

[root@hadoop1 shell]# cat check_esCpu.py 
#引入commands模块
import commands

#定义一个函数,获取es的进程id
def get_pid():
    p_id_command = "ps -ef|grep Elasticsearch|grep -v grep|awk '{print $2}'"
    p_id = commands.getstatusoutput(p_id_command)
    pid = int(p_id[1])
    return pid
    
#执行函数获取es进程的pid
pid=get_pid()


command = "top -c -b -n 1| grep -v '0.0' |grep '%s' | awk '{print $9}'"%(pid)

#接收执行上述命令后的返回值
ret = commands.getstatusoutput(command)

#打印%cpu的值这里一定要注意获取的是一个字符串,下面是把一个字符串变成一个整数。
print int(float(ret[1]))

shell脚本

#获取es的进程号
pid=`ps -ef|grep Elasticsearch|grep -v grep|awk '{print $2}'`

#根据进程号获取es的%cpu的值
escpu=`top -c -b -n 1| grep -v '0.0' |grep $pid | awk '{print $9}'`
echo ${escpu}

2、自定义check_es_cpu.conf文件:
[root@hadoop1 zabbix_agentd.d]# cat check_es_cpu.conf 
# Monitor check_es_cpu
# Author: yinlong.wang@baifendian.com

# es_cpu_loads
UserParameter=es_cpu_loads, python  /opt/software/shell/check_esCpu.py

####3、配置模板,自定义item,graph,trigger。
创建模板,然后再模板中添加item,将所有有es服务的机器都加入到这个模板中,添加完毕后,如下图所示的样子,具体添加请看之前的博客。

####4、为方便查看数据,可以创建一个screen,将所有的graph添加到srceen中,如下图所示:

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值