Zabbix - 添加自定义监控

本文详细介绍如何使用Zabbix进行数据库监控,包括通过shell脚本和Python等方式创建监控项,利用输出传递结果值或通过zabbix_sender发送结果。文章还介绍了如何配置Zabbix代理,设置监控项并进行测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以使用shell,python等

1. 创建通过输出传递结果值。

1.1 监控脚本

1.1.1 echo / print

vim test_count_echo.sh

---------------------------------------------------------------------------

PSQL=/usr/local/pgsql/bin/psql

DBNAME=$1

result=`$PSQL -U dbadmin -d $DBNAME -Aqt -c "select count(*) from test01;"`

echo $result

---------------------------------------------------------------------------

 

1.2. 配置文件

# cd /etc/zabbix/zabbix_agentd.d

# vim userparameter_test.conf

UserParameter=test_echo.get.count[*],/data/zabbix_scripts/test_count_echo.sh "$1"

 

修改之后要重启

# service zabbix-agent restart

 

测试

# zabbix_get -s 192.168.3.51 -p10050 -k"test_echo.get.count[db1]"

3

 

1.3. 添加监控项

可以将监控项添加至普通的item或Discovery中的item。

添加至Dsicovery中 Item prototypes

Name: [{#DBNAME}] test_count

Key: test_echo.get.count[{#DBNAME}]

Applications: 可选存在的或新建

 

2. 通过zabbix_sender发送结果值,可以包含多个信息。

这个通过pg_monz中的自动发现数据库名称列表来做实验。

2.1 监控脚本

vim test_count_sender.sh

---------------------------------------------------------------------------

#!/bin/bash

APP_NAME="$1"

PGSHELL_CONFDIR="$2"

HOST_NAME="$3"

ZABBIX_AGENTD_CONF="$4"

DBNAME="$5"

TIMESTAMP_QUERY='extract(epoch from now())::int'

# Load the psql connection option parameters.

source $PGSHELL_CONFDIR/pgsql_funcs.conf

 

case "$APP_NAME" in

test_sender)

sending_data=$(psql -A --field-separator=' ' -t -h $PGHOST -p $PGPORT -U $PGROLE $DBNAME -c \

"select '\"$HOST_NAME\"', 'psql.test01[$DBNAME]', $TIMESTAMP_QUERY, (select count(*) from test01) \

union all \

select '\"$HOST_NAME\"', 'psql.test02[$DBNAME]', $TIMESTAMP_QUERY, (select count(*) from test02) "

)

;;

*)

echo "'$APP_NAME' did not match anything."

exit

;;

esac

 

if [ $? -ne 0 ]; then

echo "$sending_data"

exit

fi

#echo $sending_data

 

result=$(echo "$sending_data" | zabbix_sender -c $ZABBIX_AGENTD_CONF -v -T -i - 2>&1)

response=$(echo "$result" | awk -F ';' '$1 ~ /^info/ && match($1,/[0-9].*$/) {sum+=substr($1,RSTART,RLENGTH)} END {print sum}')

if [ -n "$response" ]; then

echo "$response"

else

echo "$result"

fi

---------------------------------------------------------------------------

 

2.2 配置文件

# cd /etc/zabbix/zabbix_agentd.d

# vim userparameter_test.conf

UserParameter=test_sender[*],/data/zabbix_scripts/test_count_sender.sh test_sender "$2" "$3" "$4" "$5"

修改之后要重启

# service zabbix-agent restart

 

测试

客户端测试:

./test_count_sender.sh test_sender /usr/local/etc/ dbw21as.daodao.com /etc/zabbix/zabbix_agentd.conf db2

2

输出发了几行内容到服务端

 

服务端测试

# zabbix_get -s 192.168.3.51 -p10050 -k"test_sender.[test_sender,/usr/local/etc,dbw21as.daodao.com,/etc/zabbix/zabbix_agentd.conf,db1]"

2

 

2.3 添加监控项

可以将监控项添加至普通的item或Discovery中的item。

2.3.1 建立中间级item

当添加多个返回值时,需要先建一个中转的item。

建 test_sender ,

Name: [{#DBNAME}] test_count

Key: test_sender[{$PGSCRIPTDIR},{$PGSCRIPT_CONFDIR},{HOST.HOST},{$ZABBIX_AGENTD_CONF},{#DBNAME}]

Applications: test_sender

 

2.3.2 建立监控项中的返回值item

添加至Dsicovery中 Item prototypes。

key中的值为返回值的

 

Name: [{#DBNAME}] test_count sender test01

Key: psql.test01[{#DBNAME}]

Applications: test_sender

 

Name: [{#DBNAME}] test_count sender test02

Key: psql.test02[{#DBNAME}]

Applications: test_sender

 

 

<think>首先,用户的问题是关于Zabbix配置自定义监控的方法。我需要基于提供的引用内容来回答,这些引用来自站内资源,主要讨论了Zabbix自定义监控的配置。 关键引用: - 引用[1]:提到自定义监控的例子,如TCP连接数监控,涉及Zabbix-agent配置。 - 引用[2]:解释了监控由item key定义,用户参数语法:UserParameter=<key>,<shell command>。 - 引用[3]:详细步骤包括在客户端编写脚本、编辑配置文件、在web界面配置监控- 引用[4]:讨论了自定义监控的概念,如item、key、trigger等。 用户意图:用户想了解如何在Zabbix中实现自定义监控的配置方法,具体是配置自定义监控。 回答结构:我需要结构清晰,逐步解决问题。确保回答真实可靠,基于引用内容。 大纲回答: 1. **介绍自定义监控**:简要说明什么是自定义监控,为什么需要它。 2. **配置步骤**:分步讲解如何配置自定义监控,包括: -Zabbix-agent端配置(编写脚本、编辑配置文件)。 -Zabbix-web界面配置监控。 3. **示例**:提供一个简单示例,如监控TCP连接数或进程状态。 4. **注意事**:提到一些常见问题或最佳实践。 5. **生成相关问题**:根据系统指令,生成3个相关问题。 确保格式: - 使用中文回答。 - 行内数学表达式用$...$,但在这个上下文中可能不涉及数学表达式,所以忽略。 - 独立公式用$$...$$,但同样不相关。 - LaTeX语法正确,但这里主要是文本。 - 在引用的段落末尾添加引用标识,如[^1]。 生成相关问题:系统指令要求“生成相关问题”,并给出示例格式。我需要生成3个相关问题,放在最后。 引用处理: - 在回答中引用时,末尾添加引用标识。例如,提到引用内容时加[^1]。 - 参考引用[1],[2],[3],[4]。 完整回答结构: - 开头介绍。 - 详细步骤。 - 示例。 - 注意事- 相关问题。</think>### Zabbix 配置自定义监控的方法 在Zabbix中,自定义监控允许用户监控特定业务需求的数据,当内置监控无法满足时尤其有用。配置过程涉及Zabbix-agent端和Zabbix-web界面两个部分。以下是基于最佳实践的逐步配置方法,确保可靠性和可操作性。 #### 1. **在Zabbix-agent端配置** Zabbix-agent是运行在被监控主机上的代理程序,负责收集数据。自定义监控的核心是定义用户参数(UserParameter),通过脚本或命令获取数据。 - **步骤1: 编写数据采集脚本** 在Zabbix-agent主机上创建一个脚本,用于获取需要监控的指标值。例如,监控TCP连接数或进程状态。 示例:监控某个进程是否在运行(如Nginx)。 创建脚本文件(如 `/scripts/check_process.sh`): ```bash #!/bin/bash status=$(ps -ef | grep $1 | grep -Ev "$0|grep" | wc -l) if [ $status -eq 0 ]; then echo '1' # 进程未运行 else echo '0' # 进程运行中 fi ``` 这个脚本通过参数传入进程名,返回状态值(0表示运行中,1表示未运行)[^3]。 - **步骤2: 编辑Zabbix-agent配置文件** 修改Zabbix-agent的配置文件(通常位于 `/etc/zabbix/zabbix_agentd.conf` 或 `/usr/local/etc/zabbix_agentd.conf`),启用用户参数并定义key。 - 取消注释并修改以下行: ```ini UnsafeUserParameters=1 # 允许执行自定义命令 UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1 # 定义key和命令 ``` 这里,`check_process[*]` 是监控的key,`*`表示可接受参数(如进程名),脚本路径需与步骤1一致[^3][^4]。 - 重启Zabbix-agent服务使配置生效: ```bash systemctl restart zabbix-agent ``` - **步骤3: 测试数据采集** 在Zabbix-server端使用 `zabbix_get` 命令验证自定义监控是否工作正常: ```bash zabbix_get -s <agent_ip> -k "check_process[nginx]" # 返回0或1 ``` 如果返回正确值,表明agent配置成功[^4]。 #### 2. **在Zabbix-web界面配置** Zabbix-web提供了图形化界面来管理监控。配置完成后,数据将显示在仪表盘中。 - **步骤4: 创建监控** 登录Zabbix-web,导航到 **配置 > 主机**,选择目标主机: - 点击 **监控 > 创建监控**。 - 填写关键信息: - **名称**: 自定义描述(如 "Process status for Nginx")。 - **键值**: 使用在agent配置中定义的key(如 `check_process[nginx]`)。 - **数据类型**: 选择 "数值(无符号)"。 - **更新间隔**: 设置数据采集频率(如30秒)。 - 保存监控[^1][^3]。 - **步骤5: 添加触发器(可选)** 触发器基于监控数据定义告警规则。例如,当进程状态返回1(未运行)时触发告警: - 在主机页面,点击 **触发器 > 创建触发器**。 - 设置表达式:`{HOST_NAME:check_process[nginx].last()} = 1`。 - 配置告警严重性和通知方式[^4]。 #### 3. **示例:监控TCP连接数** 参考引用[1],配置TCP连接数监控- Agent端脚本(如 `/scripts/check_tcp.sh`): ```bash #!/bin/bash netstat -an | grep ESTABLISHED | wc -l # 返回当前TCP连接数 ``` - Agent配置: ```ini UserParameter=tcp.connections,/bin/bash /scripts/check_tcp.sh ``` - Web界面:键值设置为 `tcp.connections`[^1]。 #### 注意事 - **权限问题**:确保脚本有执行权限(`chmod +x /scripts/*.sh`),且Zabbix-agent用户(通常为zabbix)有权访问脚本。 - **安全性**:避免使用高风险命令,启用 `UnsafeUserParameters=1` 时需谨慎[^2][^4]。 - **调试技巧**:使用 `zabbix_get` 测试key,或在Zabbix-web的 **监控中 > 最新数据** 查看实时值。 - **最佳实践**:为复杂监控添加描述,并定期审查触发器以减少误报[^3][^4]。 通过以上步骤,您可以灵活扩展Zabbix监控能力,覆盖业务特定场景[^1][^2][^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值