当前位置: 首页 > news >正文

zabbix配置钉钉告警、和故障自愈、监控java

文章目录

    • 1.配置钉钉告警
        • server 配置
        • web界面创建媒介
        • 给用户添加媒介
        • 测试告警
    • 实现故障自愈功能
    • 监控Java
        • zabbix server 安装java gateway
        • 配置 Zabbix Server 支持 Java gateway
        • 使用系统内置模板监控 tomcat 主机

1.配置钉钉告警

server 配置

钉钉告警python脚本

脚本1

cd  /lib/zabbix/alertscripts/cat  python20 
#!/usr/bin/python3
#coding:utf-8
import requests,json,sys,os,datetime
# 机器人的Webhook地址
webhook="钉钉"
user=sys.argv[1]
text=sys.argv[3]
data={"msgtype": "text","text": {"content": text},"at": {"atMobiles": [# 在web端用户绑定媒介中通过指定用户注册是的手机号,可以通知指定人员,否则只发消息,不艾特具体人user],"isAtAll": False# 设置为1,则@所有人# "isAtAll": 1}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):f=open("/var/log/zabbix/dingding.log","a+")
else:f=open("/var/log/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))f.close()
else:f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "\n" + str(text))

脚本2

cat ding
#!/usr/bin/env python3
#zabbix钉钉报警
import requests,json,sys,os,datetime
##刚刚保存的Webhook
webhook="钉钉Webhook"
user=sys.argv[1]  ##执行脚本时传递的第一个参数,发送用户
text=sys.argv[3]  ##执行脚本时传递的第三个参数,发送内容
data={"msgtype": "text","text": {"content": text},"at": {"atMobiles": [user],"isAtAll": False}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/lib/zabbix/logs/dingding.log"):f=open("/usr/lib/zabbix/logs/dingding.log","a+")
else:f=open("/usr/lib/zabbix/logs/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))f.close()

web界面创建媒介

错误1:
在这里插入图片描述


sh: 1: /usr/lib/zabbix/alertscripts/dingding.py: not found
单python3 文件名字 测试正常,还以为ubuntu不支持,结果多次测试是因为是在window复制创建的文件,使用./文件名发现有其他字符^M,^M字符表示回车符,它可能是由于使用Windows风格的换行符引起的。在Linux系统上,需要使用Unix风格的换行符。
你可以尝试使用dos2unix命令来转换文件的换行符格式。打开终端,并运行以下命令:dos2unix python20root@ubuntu20:/usr/lib/zabbix/alertscripts# ./dingding3.py 
-bash: ./dingding3.py: /usr/bin/python3^M: bad interpreter: No such file or directory

给用户添加媒介

在这里插入图片描述

测试告警

实现故障自愈功能

当zabbix监控到指定的监控项异常时,可以通过指定的操作使故障自动恢复以nginx服务为例,当nginx服务停止时,自动重启服务,实现故障自愈功能

agent添加配置

vim /etc/zabbix/zabbix_agentd.conf 
AllowKey=system.run[*] #允许所有远程命令,zabbix5.0版本以上,代替EnableRemoteCommands,agent2默认没有此命令手工加入
#EnableRemoteCommands=1 #开启远程执行命令,此指令在zabbix5.0版本以上淘汰
AllowRoot=1  #开启此项,直接使用root进行远程管理,而无须对zabbix用户授权sudo权限,agent2不支持,使用下面的对zabbix授权
UnsafeUserParameters=1  #允许远程执行命令的时候使用不安全的参数(特殊字符串,如: \ ' *

默认zabbix agent是使用zabbix用户启动的,有些特权命令zabbix用户是没有权限执行,会导致定义好
的自治愈策略因为权限拒绝为执行失败,所以需要事先对zabbix用户进行授权.

[root@centos8 ~]#vim /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: ALL
#检查语法
[root@centos8 ~]#visudo -c
重启
systemctl restart zabbix-agent2.service
服务端配置

创建动作
创建动作,触发器
在这里插入图片描述

动作中添加
在这里插入图片描述

把nginx停止,会自动执行systemctl start nginx命令,故障恢复

在这里插入图片描述

主动模式
主动模式和被动模式相对agent来说的

ServerActive=192.168.1.150 #向谁汇报,开启主动模式
Hostname=192.168.1.220 #agent中Hostname 此项必须和Zabbix Server中设置的主机名称相同,不然采集不了数据,会报错找不到

监控项改为主动式
在这里插入图片描述

主动模式监控项
在这里插入图片描述

复制模板,批量更新监控项为主动式
在这里插入图片描述

主机并联新的模板
在这里插入图片描述

问题1

2023/09/04 19:34:48.385426 [101] no active checks on server [192.168.1.150:10051]: host [zhujiming-192.168.1.220] not found
2023/09/04 19:36:49.387602 [101] no active checks on server [192.168.1.150:10051]: host [zhujiming-192.168.1.220] not found
2023/09/04 19:38:50.397644 [101] no active checks on server [192.168.1.150:10051]: host [zhujiming-192.168.1.220] not found
2023/09/04 19:40:51.382330 [101] no active checks on server [192.168.1.150:10051]: host [zhujiming-192.168.1.220] not found
界面查看数据没有更新,查看日志,agent配置文件中hostname和服务端页面的主机名称要一样

问题2:zbx是灰色,但查看数据正常,是因为这个主机的模版全是主动模式。server 不会向agent发,添加其他被动模式模版即可
在这里插入图片描述

监控Java

Zabbix 不支持直接监控JAVA应用
如果要监控JAVA程序比如Tomcat等,需要使用 Java gateway 做为代理,才能从JAVA应用中获取数据

Zabbix 监控JVM流程
zabbix-server 通知 zabbix-Java-Gateway需要获取监控主机的哪些监控项
Zabbix-Java-Gateway 通过 JMX 协议请求采集 Java进程数据
Java程序通过 JMX 协议返回数据给 zabbix-Java-Gateway
zabbix-Java-Gateway 最终返回数据给 zabbix-server
zabbix-server 对采集的JAVA 数据进行存储,然后进行 Web 展示

192.168.1.250安装好java+tomcat环境
Tomcat 开启 JMX 功能
192.168.1.250填本机ip
#vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS=“$CATALINA__OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.1.250”

systemctl restart tomcat

[root@rocky8 ~]# ss -tnl|grep 12345
LISTEN 0 50 *:12345 :

zabbix服务端测试
root@ubuntu20:~# java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.250:12345  'Catalina:name="http-nio-8080",type=ThreadPool' currentThreadCount09/04/2023 23:03:05 +0800 org.archive.jmx.Client currentThreadCount: 10java线程数
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.250:12345  'Catalina:name="http-nio-8080",type=ThreadPool' maxThreads
09/04/2023 23:07:41 +0800 org.archive.jmx.Client maxThreads: 200

zabbix server 安装java gateway

Java gateway 是一个独立于zabbix server和 zabbix agent的组件,默认使用端口10052/tcp, 所以java
gateway可以是单独的一台服务器,但是也可以和zabbix server或者zabbix agent 共用一台服务器

apt -y install zabbix-java-gateway

配置 Zabbix Server 支持 Java gateway

zabbix修改添加配置
root@ubuntu20:~# vi /etc/zabbix/zabbix_server.conf
JavaGateway=192.168.1.150 #指向JAVA gateway主机
StartJavaPollers=10 #指定开启的进程数

使用系统内置模板监控 tomcat 主机

添加主机j

添加java模版查看数据
在这里插入图片描述

在这里插入图片描述

相关文章:

zabbix配置钉钉告警、和故障自愈、监控java

文章目录 1.配置钉钉告警server 配置web界面创建媒介给用户添加媒介测试告警 实现故障自愈功能监控Javazabbix server 安装java gateway配置 Zabbix Server 支持 Java gateway使用系统内置模板监控 tomcat 主机 1.配置钉钉告警 server 配置 钉钉告警python脚本 脚本1 cd /…...

第九章 Linux实际操作——Linux磁盘分区、挂载

第九章 Linux实际操作——Linux磁盘分区、挂载 9.1 Linux分区9.1.1原理介绍9.1.2 硬盘说明9.1.3 查看所有设备搭载情况 9.2 挂载的经典案例9.2.1 说明9.2.2 如何增加一块硬盘9.2.3 虚拟机增加硬盘步骤 9.3 磁盘情况查询9.3.1 查询系统整体磁盘使用情况9.3.2 查询指定目录的磁盘…...

设计模式-解释器设计模式

文章目录 前言一、 解释器模式的结构1、抽象表达式(Abstract Expression)2、终结符表达式(Terminal Expression)3、非终结符表达式(Non-terminal Expression)4、上下文(Context)5、客…...

实现 js 中所有对象的深拷贝(包装对象,Date 对象,正则对象)

通过递归可以简单实现对象的深拷贝,但是这种方法不管是 ES6 还是 ES5 实现,都有同样的缺陷,就是只能实现特定的 object 的深度复制(比如数组和函数),不能实现包装对象 Number,String &#xff0…...

PathVariable注解

postman测试传参:http://localhost:8080/admin/employee/2 PathVariable PathVariable注解用法和作用...

宋浩高等数学笔记(十二)无穷级数

完结,宋浩笔记系列的最后一更~ 之后会出一些武忠祥老师的错题&笔记总结,10月份就要赶紧做真题了...

使用Clipboard插件实现Vue的剪贴板功能

在Web开发中,剪贴板功能是一个常见但又非常有用的功能。通过将数据复制到剪贴板,用户可以方便地将数据粘贴到其他应用程序或网站上。在本文中,我们将介绍如何使用Clipboard插件结合Vue框架实现剪贴板功能。 Clipboard插件简介 Clipboard插件…...

Latex参考文献中大写字母编译后自动变成了小写,如何保持原字母大写形式

一、问题 1.1 bib文件原有内容 以下参考文献中MANET为大写 inproceedings{Miao2013FullySK, title{Fully Self-organized Key Management Scheme in MANET and Its Applications}, author{Fuyou Miao and Wenjing Ruan and Xianchang Du and Suwan Wang}, year{2013} } …...

Jest单元测试相关

官方文档:jest 中文文档 1、模拟某个函数,并返回指定的结果 使用Jest测试JavaScript(Mock篇) 有这样一个需求,mock掉Math.random方法(0(包括)~1之间),使其返回指定的0…...

Scrum敏捷开发流程及关键环节

​Scrum是一种敏捷开发流程,它旨在使软件开发更加高效和灵活。Scrum将软件开发过程分为多个短期、可重复的阶段,称为“Sprint”。每个Sprint通常为两周,旨在完成一部分开发任务。 在Scrum中,有一个明确的角色分工: 产…...

微服务04-Gateway网关

作用 身份认证:用户能不能访问 服务路由:用户访问到那个服务中去 负载均衡:一个服务可能有多个实例,甚至集群,负载均衡就是你的请求到哪一个实例上去 请求限流功能:对请求进行流量限制,对服务…...

YOLOV7改进-针对小目标的NWD(损失函数)

link 1、复制这些 2、utils-loss,这里加 3、把这几行复制到utiils的loss.py 4、先对CoputerLoss类做修改 5、把那一行替换成这个 6、修改 7、iou_ration是超参,可以调,如果小目标比较多的话,这个值可以低一些,…...

计算机二级考试题库及答案

题目一:计算机网络基础 1.计算机网络的定义是什么? 计算机网络是指由通讯设备和不同类型计算机组成的计算机系统,利用传输介质,如电缆、光缆、无线等与通讯协议,实现计算机之间的信息传递和共享资源。 2. 内网和外网有什么区别…...

2023国赛高教社杯数学建模C题思路分析

1 赛题 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…...

Ansible playbook简介与初步实战,实现批量机器应用下载与安装

一.Ansible playbook简介 playbook是ansible用于配置,部署,和管理被节点的剧本通过playbook的详细描述,执行其中的一些列tasks,可以让远端的主机达到预期的状态。playbook就像ansible控制器给被控节点列出的一系列to-do-list&…...

[machine Learning]强化学习

强化学习和前面提到的几种预测模型都不一样,reinforcement learning更多时候使用在控制一些东西上,在算法的本质上很接近我们曾经学过的DFS求最短路径. 强化学习经常用在一些游戏ai的训练,以及一些比如火星登陆器,月球登陆器等等工程领域,强化学习的内容很简单,本质就是获取状…...

09-JVM垃圾收集底层算法实现

上一篇:08-JVM垃圾收集器详解 1.三色标记 在并发标记的过程中,因为标记期间应用线程还在继续跑,对象间的引用可能发生变化,多标和漏标的情况就有可能发生。 这里我们引入“三色标记”来给大家解释下,把Gcroots可达…...

系统软件启动过程

实验一:系统软件启动过程 参考 重要文件 调用顺序 1. boot/bootasm.S | bootasm.asm(修改了名字,以便于彩色显示)a. 开启A20 16位地址线 实现 20位地址访问 芯片版本兼容通过写 键盘控制器8042 的 64h端口 与 60h端口。b.…...

【自学笔记】Python中的逻辑函数:any()、all()及同类函数的用法与示例

文章目录 Python中的逻辑函数:any()、all()及其他any()函数使用示例all()函数使用示例其他同类函数Python中的逻辑函数:any()、all()及其他 在Python中,any()和all()是两种常用的逻辑函数,它们在处理布尔值(True或False)的集合时非常有用。除此之外,Python还提供了一些其…...

OpenCV的绘图函数,实力绘画篮球场

关键函数:cv2.line(),cv2.circle(),cv2.rectangle(),cv2.ellipse(),cv2.putText() 等。 绘制几何形状 import cv2 as cv import numpy as npcv.rectangle(),cv.circle(),cv.line()&#xff0c…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...