zabbix自动发现监控项

1-02 1,049 views

一、应用场景及zabbix简单安装

游戏服务器,游戏程序经常开区,合区。导致监控项会时常变化(当然也可以写一个自动检测脚本,检测所有程序都正常,返回ok就行,这样的优点就是监控项会比较少,缺点是获取数据较慢),我们这里采用自动发现监控项的方式来监控游戏大区。

安装:https://www.zabbix.com/cn/download

a. 安装 数据库

# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
# yum clean all

b. 安装Zabbix server,Web前端,agent

# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent

c. 创建初始数据库

# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> quit;

导入初始架构和数据,系统将提示您输入新创建的密码。

# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

d. 为Zabbix server配置数据库

编辑配置文件 /etc/zabbix/zabbix_server.conf

DBPassword=password

e. 为Zabbix前端配置PHP  /etc/httpd/conf.d/zabbix.conf

编辑配置文件 /etc/httpd/conf.d/zabbix.conf 设置时区

; php_value[date.timezone] = Asia/shanghai

f. 启动Zabbix server和agent进程

启动Zabbix server和agent进程,并为它们设置开机自启:

# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm

g. 配置Zabbix前端

连接到新安装的Zabbix前端: http://server_ip_or_name/zabbix

二、模拟场景

写一个简单的json配置文件

cat listen_port.conf
{
“uc”:9001,
“exchange”:9088,
“recharge”:9880,
“cross”:20006
}

我们写一个脚本去读取这个配置信息,并将其格式化输出,这里会用到jq这个命令,不熟悉的可以去先了解下jq

会用python还是用python吧,我这用shell写的:

cat get_server.sh

#!/bin/bash
#count=`jq length /data/zabbix_test_listen/listen_port.conf` #获取json长度
printf “{\n”
printf ‘\t'”\”data\”: [”

for i in `cat /data/zabbix_test_listen/listen_port.conf | jq “keys” | grep -Ev “\[|\]”| sed ‘s/,//g’`
do
port=`jq .${i} /data/zabbix_test_listen/listen_port.conf` #获取value(端口值)
printf ‘\n\t\t{\n’
printf “\t\t\t\”{#PORT}\”:\”${port}\””
printf ‘,\n’
printf “\t\t\t\”{#PUBLIC}\”:$i\n”
printf ‘\t\t}’
if [[ ! $i =~ “uc” ]];then
printf ‘,’
fi
done
printf “\n\t]\n”
printf “}\n”

脚本执行的结果如下:

 

创建一个conf配置文件用于zabbix-agent使用

# pwd
/etc/zabbix/zabbix_agentd.d

# cat server_port.confUnsafeUserParameters=1
#自动发现的脚本
UserParameter=tcpportlisten,sudo /bin/bash /etc/zabbix/zabbix_agentd.d/get_server.sh
#自定义监控端口的键值
UserParameter=net.tcp.listen.grep[*],ss -nl | grep -q “:$1 ” && echo 1 || echo 0
#设置超时时间
Timeout=20

 

 

给zabbix加上sudo权限

测试是否能正常获取值,没有zabbix_get 直接yum install zabbix-get -y

zabbix_get -s 127.0.0.1 -k tcpportlisten

很明显可以获取到..

 

然后在zabbix上添加自动发现规则:

再添加监控项原型:

再添加触发器原型

检查下监控到最新数据么,一般现在就可以看到报警信息了

用nc -l 9001 启动一个端口看看恢复效果,可以看到9001端口的报警消失了

 

 

遇到问题,监控项那虽然能发现监控,但是状态显示不支持!

出现原因,检查触发器的键值是否填写错误,若填写正确,systemctl restart zabbix-agent.service 重启agent即可。

 

遗留问题:

修改配置文件后,比如我将corss的配置删除,之前自动加的上监控项不会立即清除,30天以后才会自动清除,总不能让报警30天吧,需要立即清除才行!

找了会儿,猜测是自动发现规则里的资源周期不足这个设置来控制的

下面我将这个时间调整成1m(1分钟)来试试是否会1分钟内清除无效监控项。

发现这个值还不能填1m,我的zabbix版本是4.4.4最新的,那我就填0吧,基本上就是无效的监控项立即就清理了

果然立即清理了!!

Prometheus监控系统

前言:prometheus作为目前流行的一套监控系统,主要由三大件组成 prometheus(主监控服务)node_exporter(指标采集服务)Alertmanager(报警管理服务)Prome...

阅读全文

为Kubernetes v1.5.2版本安装dashboard图形界面

一、前言 dashboard是一个图形化管理界面,由于我这边的Kubernetes v1.5.2比较老,按官网的安装方法没有效果,现在试试手动安装,使用下面2个yaml文件安装 ...

阅读全文

k8s简单部署

K8s中文手册地址:https://www.kuboard.cn/learning/k8s-basics/kubernetes-basics.html#kubernetes%E5%8A%9F%E8%83%BD   这边安装的Kubernetes v1.5.2 比较...

阅读全文

欢迎留言