修改zabbix允许中文
修改/usr/share/zabbix/include/defines.inc.php文件中修改,加入中文字符支持,define(‘ZBX_PREG_INTERNAL_NAMES’, ‘([0-9a-zA-Z_. -]+)’);
修改为:
define(‘ZBX_PREG_INTERNAL_NAMES’, ‘([0-9a-zA-Z_. -\x{80}-\x{ff}]+)’);
(// \x80-\xff:匹配用GBK (GB2312/GB18030)编码的所有汉字和标点符号)
修改后,主机名和监控项名都可以输入中文了。
zabbix上传图片提示图片大小问题
问题:图片的默认最大上传大小为 1MB。显示错误:图像大小必须小于 1 MB。
解决方案:在Zabbix Server上,编辑/usr/share/zabbix/include/defines.inc.php
// Original define('ZBX_MAX_IMAGE_SIZE', ZBX_MEBIBYTE); // Replaced by define('ZBX_MAX_IMAGE_SIZE', ZBX_MEBIBYTE * 8);
——————–
zabbix agents
https://www.cnblogs.com/kerrycode/p/13025805.html
—————-
zabbix 监控WLC客户端状态首先在配置文件里添加文件路径
/etc/zabbix/zabbix_agentd.conf
UserParameter=DS_aut_client[],/usr/bin/python2 /home/zabbix/read_data.py $1
UserParameter=GT_aut_client[],/usr/bin/python2 /home/zabbix/read_data2.py $1
[root@zabbix ~]# cat /home/zabbix/read_data2.py #!/usr/bin/python -- coding: UTF-8 -- import sys,os import commands def data(str): file=open("/home/zabbix/list2.txt",'rb') x = 0 for info in file.readlines(): if info.find(str)<>-1: x = info.split()[1] file.close() return int(x) print data(sys.argv[1])
[root@zabbix ~]# cat /home/zabbix/read_data.py #!/usr/bin/python -- coding: UTF-8 -- import sys,os import commands def data(str): file=open("/home/zabbix/list.txt",'rb') x = 0 for info in file.readlines(): if info.find(str)<>-1: x = info.split()[1] file.close() return int(x) print data(sys.argv[1])
[root@zabbix ~]# cat /home/zabbix/create_list.py #!/usr/bin/python -- coding: UTF-8 -- import paramiko import socket import time,os ip_list = ["IP1","IP2"] username = "登录账户" password = "登录密码" #paramiko.util.log_to_file('paramiko.log') def cmd(ip): client = paramiko.SSHClient() #client.load_system_host_keys('/root/.ssh/known_hosts') client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(ip,22,username,password,allow_agent=False,look_for_keys=False) #time.sleep(float(3)) ssh_shell = client.invoke_shell() #ssh_shell.keep_this = client time.sleep(float(1)) cmd_list = ["fengyuming@game.ntes","SURpass@2","show client state summary"] x = "" for cmd in cmd_list: ssh_shell.sendall(cmd.strip() + '\n') time.sleep(float(1)) x = x + ssh_shell.recv(1024) client.close() return x def list(ip): list = cmd(ip) f = open("/home/zabbix/list.txt",'wb') f.write(list) f.close() def list2(ip): list = cmd(ip) f = open("/home/zabbix/list2.txt",'wb') f.write(list) f.close() if name == 'main': list("IP1") list2("IP2")
然后在zabbix服务端的监控项上添加
自定义模版
流量
在不清楚接口OID的情况下,使用snmpwalk -c TEST -v 2c IP iso.3.6.1.2.1.31.1.1.1.1 去检查
监控模版,上方
状态
zabbix 企业微信告警
#!/bin/bash ###SCRIPT_NAME:weixin.sh### ###send message from weixin for zabbix monitor### ###wuhf### ###V1-2015-08-25### CropID='ww123' //(企业微信ID) Secret='k7tgORa2-3vvTqjtGu123' //应用ID GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropI123t=$Secret" Gtoken=$(/usr/bin/curl -k -s -G $GURL | awk -F" '{print $10}') PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" function body() { local int AppID=1000002 //企业应用ID号 local UserID=$1 //微信接收者ID local PartyID=3 //部门ID local Msg=$(echo "$@" | cut -d" " -f3-) printf '{\n' printf '\t"touser": "'"$UserID""",\n" printf '\t"toparty": "'"$PartyID""",\n" printf '\t"msgtype": "text",\n' printf '\t"agentid": "'" $AppID """,\n" printf '\t"text": {\n' printf '\t\t"content": "'"$Msg"""\n" printf '\t},\n' printf '\t"safe":"0"\n' printf '}\n' } /usr/bin/curl -k --data-ascii "$(body $1 $2 $3)" $PURL
将Zabbix系统中的消息内容作为参数传递给脚本,并从参数中提取需要发送的消息内容。然后,它使用printf函数打印出符合企业微信消息格式的JSON字符串,包含接收者、发送者、消息类型和内容等信息。最后,通过echo命令将JSON字符串输出,
无线OID
aruba
ZJC-56F-AP2.1-3629 客户端数:{?last(//1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.7.1[ZJC-56F-AP2.1-3629])} 信道使用率:{?last(//1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.3.1[ZJC-56F-AP2.1-3629])}({?last(//1.3.6.1.4.1.14823.2.2.1.5.3.1.6.1.37.1[ZJC-56F-AP2.1-3629])}) Rx利用率:{?last(//1.3.6.1.4.1.14823.2.2.1.5.3.1.6.1.35.1[ZJC-56F-AP2.1-3629])} Tx利用率:{?last(//1.3.6.1.4.1.14823.2.2.1.5.3.1.6.1.36.1[ZJC-56F-AP2.1-3629])} 信道冲突率:{?last(//1.3.6.1.4.1.14823.2.2.1.5.3.1.6.1.11.1[ZJC-56F-AP2.1-3629])} 信道噪音:-{?last(//1.3.6.1.4.1.14823.2.2.1.5.3.1.6.1.9.1[ZJC-56F-AP2.1-3629])} 天线功率:{?last(//1.3.6.1.4.1.14823.2.2.1.5.2.1.5.1.4.1[ZJC-56F-AP2.1-3629])} 接口流量:{?last(//1.3.6.1.4.1.14823.2.2.1.5.3.1.10.1.11.[ZJC-56F-AP2.1-3629])}|{?last(//1.3.6.1.4.1.14823.2.2.1.5.3.1.10.1.12.[ZJC-56F-AP2.1-3629])}
思科
GTA2-2F-APB2-579 资产编号:{?last(//1.3.6.1.4.1.14179.2.2.1.1.4.[GTA2-2F-APB2-579])} 客户端数:{?last(//enterprises.14179.2.2.13.1.40[GTA2-2F-APB2-579])}|{?last(//enterprises.14179.2.2.13.1.4[GTA2-2F-APB2-579])} 客户端平均信号:{?last(//1.3.6.1.4.1.9.9.513.1.2.9.1.3.0[GTA2-2F-APB2-579])}|{?last(//1.3.6.1.4.1.9.9.513.1.2.9.1.3.1[GTA2-2F-APB2-579])} 信道使用率:{?last(//1.3.6.1.4.1.14179.2.2.2.1.40[GTA2-2F-APB2-579])}({?last(//enterprises.14179.2.2.13.1.30[GTA2-2F-APB2-579])})|{?last(//1.3.6.1.4.1.14179.2.2.2.1.4[GTA2-2F-APB2-579])}({?last(//enterprises.14179.2.2.13.1.3[GTA2-2F-APB2-579])}) 功率level:{?last(//1.3.6.1.4.1.14179.2.2.2.1.6.0[GTA2-2F-APB2-579])}|{?last(//1.3.6.1.4.1.14179.2.2.2.1.6.1[GTA2-2F-APB2-579])} 接口流量:{?last(//enterprises.9.9.513.1.2.2.1.13.[GTA2-2F-APB2-579])}|{?last(//enterprises.9.9.513.1.2.2.1.14.[GTA2-2F-APB2-579])}
自定义模版自动发现
重要事项:
discovery[{#APNAME},enterprises.45577.2.12.1.8.1.3,{#BAN},enterprises.45577.2.12.1.8.1.2,{#CHANNEL},enterprises.45577.2.12.1.8.1.17]
自动发现组成部分由多个OID组成,例如上面,由AP名字,AP无线频带、AP无线信道使用率组成
测试的结果如下:
[{"{#SNMPINDEX}":"1","{#APNAME}":"FYD-AP03","{#BAN}":"2.4G","{#CHANNEL}":"65.00%"}, {"{#SNMPINDEX}":"2","{#APNAME}":"FYD-AP03","{#BAN}":"5.8G","{#CHANNEL}":"21.00%"}, {"{#SNMPINDEX}":"3","{#APNAME}":"FYD-AP02","{#BAN}":"2.4G","{#CHANNEL}":"61.00%"}, {"{#SNMPINDEX}":"4","{#APNAME}":"FYD-AP02","{#BAN}":"5.8G","{#CHANNEL}":"31.00%"}, {"{#SNMPINDEX}":"5","{#APNAME}":"FYD-AP05","{#BAN}":"2.4G","{#CHANNEL}":"57.00%"}
随后根据数据,去设置对应的监控项原型即可,如果有特殊单位,需要进行转换
zabbix查询历史数据mysql
SELECT h.* FROM history_uint h WHERE h.itemid=67449 ORDER BY h.clock DESC LIMIT 500 查询历史数据id为:67449 历史500条数据(时间戳需要自己去网上对应修改)
zabbix 使用除法计算
return value / 1024;
var pattern = new RegExp("GB", "i"); // i 表示忽略大小写 if (value.match(pattern)) { return parseFloat(value) * 1024; } else { return parseFloat(value);
匹配GB,如果匹配到GB,就× 1024 将GB转换为MB
var pattern = new RegExp("(K|M)bps", "i"); // 匹配 Kbps 或 Mbps,忽略大小写
if (value.match(pattern)) {
var multiplier = value.toLowerCase().includes("mbps") ? 1024 * 1024 : 1024;
return parseFloat(value) * multiplier;
} else {
return parseFloat(value);
}
使用正则表达式
(K|M)bps 来匹配字符串中的 Kbps 或 Mbps(不区分大小写)。
如果匹配成功,则根据匹配到的单位类型确定乘法因子 multiplier。
如果匹配到 Mbps,multiplier 为 1024 * 1024;如果匹配到 Kbps,multiplier 为 1024。然后,将原始值转换为浮点数并乘以 multiplier 返回。
grafana 匹配
ap(?=.*received)
这个正则表达式会先匹配 “ap”,然后使用正向肯定查找 (?=.*received) 来确保后面还有 “received”。
举个例子,如果我们有一个字符串 “I have received the package”, 使用上述正则表达式进行匹配,它会匹配到 “ap”。
注意,在这个正则表达式中,.* 表示任意字符任意次数,(?=.*received) 表示后面必须紧跟着 “received”。
自定义监控脚本
[root@loc_ressvn ~]# cat /data/tools/ressvnback.sh
#!/bin/bash
zbserver="10.10.6.160"
hostname=`/sbin/ip a|grep inet|egrep '172.|10.|192'|awk '{print $2}'|awk -F/ '{print $1}'|head -1`
key=zg[data.backup.status]
dbArchieveHost=10.10.1.31
rsync -avzP --delete --password-file=/etc/rsync.secret /data/svnserver feb1229@$dbArchieveHost::NetBackup/1_22ressvn/ &>/tmp/rsync.log
if [ $? -eq 0 ];then
WarnMsg=0
else
WarnMsg=1
fi
# 主动推送数据到Zabbix Server
zabbix_sender -z $zbserver -s $hostname -k $key -o "$WarnMsg"
新机脚本自动部署安装Zabbix(视版本更新agent等)
cd /tmp
yum install -y wget
wget http://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.6-1.el7.x86_64.rpm
wget http://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-sender-5.0.6-1.el7.x86_64.rpm
yum localinstall -y zabbix-*-5.0.6-1.el7.x86_64.rpm
hostName=`ip a|grep inet|egrep '10.'|awk '{print $2}'|awk -F/ '{print $1}'|head -1`
# hostName=`hostname`
sed -i "s/^Server=.*/Server=zabbix/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s/^ServerActive=.*/ServerActive=zabbix/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s/^Hostname=.*/Hostname=$hostName/g" /etc/zabbix/zabbix_agentd.conf
SERVERIP=10.10.6.160
echo -e "$SERVERIP\tzabbix" >> /etc/hosts
systemctl start zabbix-agent
systemctl enable zabbix-agent
/etc/init.d/zabbix-agent restart
systemctl restart zabbix-agent
chkconfig zabbix-agent on