Zabbix自定义监控内容部署+邮件报警+Zabbix自愈+Zabbix批量添加主机

一、自定义监控项

1.1自定义监控项原理

1)先明确获取监控指标数据的命令或脚本;

2)在被监控主机配置文件子目录(/etc/zabbix/zabbix_agent2.d/)中创建以.conf后缀的监控项配置文件,自定义获取监控指标数据的键值;

#监控项配置文件内容格式
UserParameter=键值名,获取值的命令/脚本路径#用逗号隔开

3)在服务端Web管理页面中依次添加

模板 - 监控项 - 触发器 - 图形

4)关联监控主机和监控模板。

1.2 Zabbix监控Linux TCP连接状态实例

准备脚本

#!/bin/bash
tcp_conn_status(){TCP_STAT=$1ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > /tmp/tcp_conn.txtTCP_NUM=$(grep "$TCP_STAT" /tmp/tcp_conn.txt | cut -d ' ' -f2)if [ -z $TCP_NUM ];thenTCP_NUM=0fiecho $TCP_NUM
}main(){case $1 intcp_status)tcp_conn_status $2;;;esac
}main $1 $2

测试脚本

[root@localhost zabbix]# bash tcp_status.sh  tcp_status ESTAB
2
[root@localhost zabbix]# bash tcp_status.sh  tcp_status TIME-WAIT
72
[root@localhost zabbix]# chmod +x  tcp_status.sh

修改客户端配置文件

[root@localhost etc]# vim zabbix_agentd.conf
UserParameter=linux_tcp_status[*],/usr/bin/bash  /data/tcp_status.sh $1 $2

重启服务

[root@localhost etc]# systemctl restart   zabbix-agent.service 
[root@localhost etc]# systemctl status   zabbix-agent.service 

在主服务器上验证

[root@localhost ~]#zabbix_get  -s 192.168.91.102 -p 10050 -k "linux_tcp_status["tcp_status","TIME-WAIT"]"
22
[root@localhost ~]#zabbix_get  -s 192.168.91.102 -p 10050 -k "linux_tcp_status["tcp_status","ESTAB"]"
4

在web界面建立模板

类型通过检测模式来更改(分为主动式和被动式),还有默认的Zabbix客户端类型

继续添加监控项

如果是类似监控项可以选择克隆修改名称和键值即可使用设置触发器 添加图形

1.3 Zabbix监控nginx实例

安装nginx

[root@localhost data]# yum install epel-release.noarch  -y
[root@localhost data]# yum install nginx -y 

修改配置文件

[root@localhost data]# vim /etc/nginx/nginx.conf
location /status {stub_status;}
[root@localhost data]# nginx -t 
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost data]# systemctl restart nginx

准备脚本

#!/bin/bash nginx_status_fun(){ #函数内容NGINX_PORT=$1 #端口,函数的第一个参数是脚本的第二个参数,即脚本的第二个参数是段端口号NGINX_COMMAND=$2 #命令,函数的第二个参数是脚本的第三个参数,即脚本的第三个参数是命令nginx_active(){ #获取nginx_active数量,以下相同,这是开启了nginx状态但是只能从本机看到/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'}nginx_reading(){ #获取nginx_reading状态的数量/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'}nginx_writing(){/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'}nginx_waiting(){/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'}nginx_accepts(){/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $1}'}nginx_handled(){/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $2}'}nginx_requests(){/usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $3}'}case $NGINX_COMMAND inactive)nginx_active;;;reading)nginx_reading;;;writing)nginx_writing;;;waiting)nginx_waiting;;;accepts)nginx_accepts;;;handled)nginx_handled;;;requests)nginx_requests;esac 
}main(){ #主函数内容case $1 in #分支结构,用于判断用户的输入而进行响应的操作nginx_status) #当输入nginx_status就调用nginx_status_fun,并传递第二和第三个参数nginx_status_fun $2 $3;;;*) #其他的输入打印帮助信息echo $"Usage: $0 {nginx_status key}"esac #分支结束符
}main $1 $2 $3

测试脚本

[root@localhost data]# bash nginx.sh nginx_status  80 active
1

修改zabbix_agent配置文件

[root@localhost ~]# vim  /apps/zabbix/etc/zabbix_agentd.conf
UserParameter=nginx_status[*],/usr/bin/bash  /data/nginx.sh $1 $2 $3

在主服务器上测试

[root@localhost ~]#zabbix_get  -s 192.168.91.102 -p 10050 -k "nginx_status["nginx_status","80","active"]"
1

web上操作

1.4 snmp监控实例

下载snmp

[root@s1 ~]# yum -y install  net-snmp net-snmp-utils

修改配置文件

vim /etc/snmp/snmpd.conf
# sec.name source community
com2sec notConfigUser default 123456 #第一步:设置团体认密码,默认为publicsview systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1 #创建一个view,并对其授权可访问的OID范围
view systemview included .1. #自定义授权,否则zabbix server无法获取数据access notConfigGroup “” any noauth exact systemview none none #将组notConfigGroup关联至systemview 从而完成对组的授权

如果修改了密码需要在web上进行修改

主服务器进行测试

#在主服务器上 查看内储存
snmpwalk -v 2c  -c public   192.168.10.10  .1.3.6.1.4.1.2021.4.4.0

Tip:snmp信息解释

CPU 负载:
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3
内存使用:
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
硬盘使用:
Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1
系统信息:
sysDescr 1.3.6.1.2.1.1.1
sysObjectID 1.3.6.1.2.1.1.2
sysUpTime 1.3.6.1.2.1.1.3
sysContact 1.3.6.1.2.1.1.4
sysName 1.3.6.1.2.1.1.5
CPU 信息:
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0

web操作

修改时间不然时间太长

1.5 邮件报警思路

1)在服务端web管理页面 [管理]-[报警媒介类型]中设置 媒介类型和报警消息内容;

2)在[User Settings] - [Profile] - [报警媒介] 中设置 类型、收件人、启用时间、严重级别;

3)在[配置] - [动作] - [触发动作] 中添加报警触发条件和操作内容;

4)测试。

可以直接修改 Email

名称:可以自定义

SMTP服务器: 写你对应邮箱的服务器,生产环境需要询问管理邮箱服务的同事

设置 zabbix 的用户

触发器 要和 zabbix 的用户关联

设置动作

注意 计算方式 不要使用 和 和是且的意思 修改监控项

1.6 zabbix自愈

当zabbix 监控到指定的监控项异常的时候,通过指定的操作使故障自动恢复,通常是重启服务等一些简单的操作,也可以调用脚本执行比较复杂的操作。

设置监控项和触发器,新建动作,在触发条件里面添加操作,在远程主机通过zabbix 客户端执行命令

1.开启zabbix sudo权限
2.配置允许允许特殊字符
3.配置远程命令
4.验证和测试

zabbix agent需要开启远程命令执行

vim /etc/zabbix/zabbix_agentd.conf
73  EnableRemoteCommands=1 #开启远程执行命令
287 UnsafeUserParameters=1 #允许远程执行命令的时候使用不安全的参数(特殊字符串)
root@zabbix-node4:~# systemctl restart zabbix-ag

zabbix用户授权

如果zabbix agent是使用zabbix用户启动的,那么要在zabbix 用户授权使用特权命令,负责有些命令zabbix没有权限执行,会导致定义好的自治愈策略因为权限拒绝为执行失败

[root@localhost etc]# vim /etc/sudoers
zabbix  ALL=(ALL)       NOPASSWD: ALL

创建动作

配置--动作--创建动作

二、 Zabbix批量添加主机

通过API,实现完全自动化添加删除agent、关联模板等操作

获取token

需要指定用的账户名 密码和id

curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}' http://192.168.10.20/zabbix/api_jsonrpc.php

输出结果

[root@localhost ~]# curl -s -X POST -H 'Content-Type:application/json' -d '
> {
> "jsonrpc": "2.0",
> "method": "user.login",
> "params": {
> "user": "Admin",
> "password": "zabbix"
> },
> "id": 1
> }' http://192.168.10.20/zabbix/api_jsonrpc.php
{"jsonrpc":"2.0","result":"548e1e120bad44c714c9d46df49c751c","id":1}
返回值是548e1e120bad44c714c9d46df49c751c

2.1 添加单台主机

2.1.1  不带proxy 代理


配置解释
通过API添加主机命令格式:
API添加主机为预先知道要添加的主机IP、预先安装并配置好zabbix agent、预先知道要关联的模板ID/组ID等信
息,然后同API提交请求添加
# curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create", #定义方法,N多钟
"params": {
"host": "API Add Host Test", #自定义添加后的agent的名称
"interfaces": [
{
"type": 1, #类型为1表示agent,2是SNMP,3是IMPI,4是JMX
"main": 1, #主要接口
"useip": 1, #0是使用DNS,1是使用IP地址
"ip": "172.31.0.24", #添加的zabbix agent的IP地址
"dns": "",
"port": "10050" #agent端口
}
],
"groups": [
{
"groupid": "2" #添加到的组的ID
}
],
"templates": [
{
"templateid": "10001" #关联的模板的ID
}
]
},
"auth": "977781251d1222ebead6f05da1a9ec4d",
"id": 1
}' http://172.31.0.101/zabbix/api_jsonrpc.php | python3 -m json.tool
输出结果
[root@localhost ~]# curl -s -X POST -H 'Content-Type:application/json' -d '
> {
>   "jsonrpc": "2.0",
>   "method": "host.create",
>   "params": {
>      "host": "192.168.91.102",
>      "interfaces": [
>        {
>          "type": 1,
>          "main": 1,
>          "useip": 1,
>          "ip": "192.168.91.102",
>          "dns": "",
>          "port": "10050"
>        }
>    ],
>    "groups": [
>       {
>          "groupid": "15"
>         }
>    ],
>    "templates": [
>    {
>         "templateid": "10273"
>    }
>    ]
> },
> "auth": "689e61ccf47b1e634f40b27454222272",
> "id": 1
> }' http://192.168.91.100/zabbix/api_jsonrpc.php | python -m json.tool
{"id": 1,"jsonrpc": "2.0","result": {"hostids": ["10292"]}
}

2.1.2 使用代理

curl -s -X POST -H 'Content-Type:application/json' -d '
{"jsonrpc": "2.0","method": "host.create","params": {"host": "192.168.91.102","proxy_hostid": "10274","interfaces": [{"type": 1,"main": 1,"useip": 1,"ip": "192.168.91.102","dns": "","port": "10050"}],"groups": [{"groupid": "15"}],"templates": [{"templateid": "10273"}]
},
"auth": "689e61ccf47b1e634f40b27454222272",
"id": 1
}' http://192.168.91.100/zabbix/api_jsonrpc.php | python -m json.tool

2.1.3 批量添加

cat zabbix-add-host.sh
#!/bin/bash
IP="
192.168.10.15
192.168.10.20
192.168.10.30
192.168.10.40
"for  i   in   ${IP};do 
curl -s -X POST -H 'Content-Type:application/json' -d '
{"jsonrpc": "2.0","method": "host.create","params": {"host": "'${i}'","interfaces": [{"type": 1,"main": 1,"useip": 1,"ip": "'${i}'","name": "ky36_'${i}'","dns": "","port": "10050"}],"groups": [{"groupid": "15"}],"templates": [{"templateid": "10273"}]
},
"auth": "689e61ccf47b1e634f40b27454222272",
"id": 1
}' http://192.168.10.10/zabbix/api_jsonrpc.php | python -m json.tool

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3267700.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【VUE】个人记录:父子页面数据传递

1. 父传子 在父页面中&#xff0c;调用子页面的组件位置处&#xff0c;通过“&#xff1a;”进行参数传递 <child-component :childData"parentData"></child-component>parentData对象&#xff0c;需要在父页面的data中进行初始化声明 在子页面中&am…

算法与算法分析

目录 一.前言 二.算法的特性和要求 三.分析算法--时间效率 四. 分析算法--空间效率 一.前言 算法就是对特定问题求解方法和步骤的一种描述&#xff0c;它是指令的有限序列。其中&#xff0c;每个指令表示一个或多个操作。总而言之&#xff0c;我们数据结构就是通过算法实现操…

全球CG盛事:世界3D渲染大赛震撼开幕!

在数字艺术的浪潮中&#xff0c;CG&#xff08;计算机图形学&#xff09;已经成为现代视觉艺术不可或缺的一部分。它不仅推动了电影、游戏和动画产业的发展&#xff0c;更激发了无数艺术家的创造力。今天&#xff0c;我们迎来了一个全球CG界的盛事——世界3D渲染大赛的震撼开幕…

【Unity2D 2022:UI】TextMeshPro组件无法显示中文

在Unity中创建了一个预制体Card&#xff0c;上面挂载了一些Text Mesh Pro组件用来显示卡牌信息。但是在输入文字后&#xff0c;发现无法显示中文&#xff1a; 解决方法如下&#xff1a; 一、导入字体文件&#xff08;ttf格式&#xff09;和常用字字集&#xff08;txt格式&…

【LLM大模型】LLaMA3微调部署真不难!拿走这份教程,轻松掌握LLaMA大模型微调!

今天给大家分享一个爆火的llama3教程&#xff0c;也就是下面这份&#xff1a; 这个项目是基于Meta最新发布的新一代开源大模型Llama-3开发的&#xff0c;是Chinese-LLaMA-Alpaca开源大模型相关系列项目的第三期。本项目开源了中文Llama-3基座模型和中文Llama-3-Instruct指令精…

使用curl测试websocket服务是否能正常连入

部分场景&#xff0c;前端连接不上websocket服务&#xff0c;需要从后台验证websocket服务是否能连入&#xff0c;判断防火墙是否开通&#xff0c;反向代理是否配置正确&#xff0c;可以使用curl测试服务器websocket服务是否正常。 分行命令 curl --include \--no-buffer \--…

自监督学习概述(Self-Supervised Learning,SSL)

自监督学习&#xff08;Self-Supervised Learning&#xff0c;SSL&#xff09;是一种机器学习方法&#xff0c;旨在利用未标记数据进行训练。这种方法通过从数据本身生成伪标签&#xff0c;来创建监督信号&#xff0c;使得模型能够学习有效的数据表示。自监督学习在深度学习领域…

Vue的安装配置

1.安装node js Node.js — 在任何地方运行 JavaScript (nodejs.org) 2.测试nodejs是否安装成功 node -v npm -v3.通过npm 安装 vue npm install -g vue/cli4.测试vue是否安装成功 vue --version5.打开PyCharm&#xff0c;创建项目&#xff1a;flask-web vue create flask…

论文快过(图像配准|Coarse_LoFTR_TRT)|适用于移动端的LoFTR算法的改进分析 1060显卡上45fps

项目地址&#xff1a;https://github.com/Kolkir/Coarse_LoFTR_TRT 创建时间&#xff1a;2022年 相关训练数据&#xff1a;BlendedMVS LoFTR [19]是一种有效的深度学习方法&#xff0c;可以在图像对上寻找合适的局部特征匹配。本文报道了该方法在低计算性能和有限内存条件下的…

【已解决】TypeError: argument of type ‘int’ is not iterable

【已解决】TypeError: argument of type ‘int’ is not iterable 在Python编程中&#xff0c;TypeError: argument of type int is not iterable是一个常见的错误。此错误表明你尝试对一个整数&#xff08;int&#xff09;执行迭代操作&#xff0c;但整数是不可迭代的。本文将…

微信小程序模拟扫码进入调试

1 2 参数就是namekeyaaa&#xff0c;上面的%3D是经过encodeURIComponent编码&#xff0c;必须使用%3D&#xff0c;不然等号会当作新的key。

【单片机毕业设计选题24081】-路灯无线数据采集器

系统功能: 手机开启2.4G WiFi热点后再给系统上电 系统操作说明&#xff1a; 上电后OLED显示 “欢迎使用智能路灯系统请稍后”&#xff0c;两秒后显示Connecting...表示 正在连接阿里云&#xff0c;正常连接阿里云后显示第一页面&#xff0c;如长时间显示Connecting...请 检…

Redis的操作以及SpringCache框架

目录 一.什么是Redis&#xff1f; 二.Redis的相关知识&#xff1a; 三.如何操作Redis&#xff1f; 1&#xff0c;常用命令&#xff1a; 2.Spring Data Redis &#xff08;1&#xff09; pom.xml 配置&#xff1a; &#xff08;2&#xff09;配置Redis数据源&#xff1a; …

转置卷积 transposed convolution

1. 转置卷积 转置卷积&#xff08;Transposed Convolution&#xff09;也叫Fractionally-strided Convolution和Deconvolution&#xff0c;但用的最多的是Transposed Convolution。 注意&#xff1a; 转置卷积不是卷积的逆运算&#xff0c;只会大小恢复为原本大小。转置卷积…

SPSS个人版是什么软件

SPSS是一款数据统计、分析软件&#xff0c;它由IBM公司出品&#xff0c;这款软件平台提供了文本分析、大量的机器学习算法、数据分析模型、高级统计分析功能等&#xff0c;软件易学且功能非常强大&#xff0c;可以使用SPSS制作图表&#xff0c;例如柱状、饼状、折线等图表&…

APP逆向 day21大姨妈逆向

一.前言 今天来和大家说一款app名叫DYM&#xff0c;我们选择版本v8.6.0&#xff0c;今天通过这个可以学到的知识点有绕过root检测&#xff0c;通过frida-rpc和自己编写一款小的app来调用so文件&#xff0c;然后再来破解登录接口 二.绕过root检测 我们进入app后发现&#xff…

C++从入门到起飞之——初始化列表类型转换static成员 全方位剖析!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a;C从入门到起飞 &#x1f516;克心守己&#xff0c;律己则安 目录 1、初始化列表 2、 类型转换 3. static成员 4、完结散花 1、初始化列表 • 之前我们实现构造函数…

Qwen2模型Text2SQL微调​以及GGUF量化

Qwen2-1.5B微调 准备python环境 conda create --name llama_factory python=3.11 conda activate llama_factory部署llama-factory git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip3 install -e ".[torch,metrics]" # 如…

算法日记day 20(二叉搜索树)

一、验证二叉搜索树 题目&#xff1a; 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也…

IE11添加收藏、关闭窗口时弹出的对话框字体又大又粗很难看的解决办法

原因已查明&#xff0c;在win7 sp1 32位系统下&#xff0c;安装“2020-01 适用于基于 x86 的系统的 Windows 7 月度安全质量汇总&#xff08;KB4534310&#xff09;”这个更新会导致IE11的窗口字体变大变粗&#xff0c;把这个更新卸载了就可以了&#xff0c;无需重装IE11浏览器…