zabbix之低级自动发现

332 阅读3分钟

zabbix之低级自动发现

一、LLD介绍

提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。

LLD官方文档

www.zabbix.com/documentati…

二、zabbix安装

官方安装文档地址:www.zabbix.com/cn/download…

zabbix server端按照文档安装。

zabbix-agent端只执行第一步安装zabbix-agent程序即可。

repo文件内容:

[zabbix]
name=zabbix
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/$releasever/$basearch/
enabled=1
gpgcheck=0
[zabbix-frontend]
name=zabbix-frontend
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/$releasever/$basearch/frontend/
enabled=1
gpgcheck=0

三、流程

  1. 获取程序名称并输出为JSON格式数据
  2. 通过程序名获取所需程序信息
  3. web页面添加discovery rule、item prototypes、graph prototypes
  4. 主机链接模板

四、获取java程序名称并输出为JSON格式

1. 思路一

各程序部署至统一目录:仅需查看目录下的目录名称即可

2. 思路二

根据各程序统一的特征获取程序名

如java进程信息如下:

root      31077  0.4  3.0 4849528 506328 ?      Sl   Nov09 288:16 java -Xms32M -Xmx1024M -DAPP_HOME=/opt/javaapp/app1 -classpath /opt/javaapp/app1/conf:/opt/javaapp/app1/lib/* com.javaapp.app1Application
root      31077  0.4  3.0 4849528 506328 ?      Sl   Nov09 288:16 java -Xms32M -Xmx1024M -DAPP_HOME=/opt/javaapp/app2 -classpath /opt/javaapp/app2/conf:/opt/javaapp/app2/lib/* com.javaapp.app1Application

获取java程序名称思路:

java程序信息中-DAPP_HOME指向位置为程序文件父目录,父目录名称与程序文件名称一致。

获取程序名称并输出为JSON格式脚本:

#!/bin/bash
APPNAME=$(ls /app/ | egrep -v "rh|apache")
count=$(echo $APPNAME | tr -s " " "\n" | wc -l)
printf "{\n"
printf "\t\"data\":[\n"
echo ${APPNAME} | tr -s " " "\n" | while read line;do
        printf "\t{\n"
        printf "\t\t\"{#APPNAME}\":\"${line}\"}"
        flag=`expr $flag + 1`
        if [ $flag -lt $count ];then
            echo ","
        fi
done
printf "\n\t]\n"
printf '}\n'

输出结果:

[root@6-148 scripts]# ./java_name.sh 
{
	"data":[
	{
		"{#APPNAME}":"eurekaServer"},
	{
		"{#APPNAME}":"tomcat"}
	]
}

五、获取java程序信息脚本

获取的内容为java程序CPU、内存占用百分比

脚本:

#!/bin/bash
# $1为java应用名称,脚本运行时输入。
# $2为所需获取的资源名称,mem为获取内存使用百分比,cpu为获取cpu使用百分比。
# 若应用进程未启动,则输出0
APPNAME=$1
case $2 in
	mem)
		mem_precent=$(ps aux | grep ${APPNAME} | grep -v grep | grep -v $0 |  awk '{print $4}')
		if [ -z ${mem_precent} ];then
			echo 0
		else
			echo ${mem_precent}
		fi
		;;
	cpu)
		cpu_precent=$(ps aux | grep ${APPNAME} | grep -v grep | grep -v $0 | awk '{print $3}')
		if [ -z ${cpu_precent} ];then
			echo 0
		else
			echo ${cpu_precent}
		fi
esac

获取应用CPU使用百分比:

[root@agent scripts]# ./java_info.sh eurekaServer mem
10.9
[root@agent scripts]# ./java_info.sh eurekaServer cpu
0.9

六、添加自定义监控项配置文件

1. 脚本放至目标目录

上述java_name.shjava_info.sh放置至/etc/zabbix/script目录下,并添加执行权限。

[root@agent ~]# ls /etc/zabbix/scripts/
java_info.sh  java_name.sh
[root@agent ~]# chmod +x /etc/zabbix/scripts/*.sh

2. 创建自定义参数文件

/etc/zabbix/zabbix_agentd.d/目录创建自定义监控项配置文件,添加以下内容:

UserParameter=java.name,sudo /etc/zabbix/scripts/java_name.sh
UserParameter=java.info[*],sudo /etc/zabbix/scripts/java_info.sh $1 $2

3. 为zabbix用户添加sudo权限

/etc/sudoers文件添加以下内容:

zabbix     ALL=(ALL)       NOPASSWD: ALL

七、测试

1. 安装zabbix_get

[root@server ~]# yum install -y zabbix-get

2. 测试获取应用名

[root@server ~]# zabbix_get -s 192.168.100.12 -k java.name
{
	"data":[
	{
		"{#APPNAME}":"eurekaServer"},
	{
		"{#APPNAME}":"tomcat"}
	]
}

3. 测试获取监控数据

[root@server ~]# zabbix_get -s 192.168.100.12 -k java.info[tomcat,cpu]
0.1
[root@server ~]# zabbix_get -s 192.168.100.12 -k java.info[eurekaServer,cpu]
18.6
[root@server ~]# zabbix_get -s 192.168.100.12 -k java.info[eurekaServer,mem]
9.2
[root@server ~]# zabbix_get -s 192.168.100.12 -k java.info[tomcat,mem]
3.1

八、zabbix web页面创建discovery rule

1. 创建模板

依次点击Configuration --> Templates --> 右上角Create template

image-20211228185556843.png

如上填写好信息后点击add添加模板。

2. 添加Discovery rule

在模板中点击java_info模板的Discovery --> 右上角Create discovery rule填写如下信息:

Discovery rule中的Key对应/etc/zabbix/zabbix_agentd.d/java.conf文件UserParameter的值

image-20211228185845734.png

3. 为Discovery rule添加item prototypes

点击APPNAME中的item prototypes --> 右上角Create item prototypes,填入如下信息后点击Add添加监控项原型。

image-20211228190400399.png

4. 添加graph prototypes

点击APPNAME中的Graph prototypes --> 右上角Create graph prototype,添加如下内容并点击add添加图形原型

image-20220813175409031.png

九、使用

在主机中链接模板即可