[个人笔记] Zabbix实现自定义脚本监控Agent端

news2024/9/28 13:20:34

系统工程 - 运维篇

第三章 Zabbix实现自定义脚本监控Agent端

  • 系统工程 - 运维篇
  • 系列文章回顾
  • 前言
    • 实施步骤
    • 前置条件
  • Zabbix实现自定义脚本监控Agent端
    • Zabbix实现ssh免密登录OpenWrt服务器
    • 编写自定义sh脚本监控OpenWrt,zabbix测试监控功能
    • Windows及Linux安装Zabbix-Agent客户端
    • Zabbix配置zabbix-agentd和zabbix-server的配置,配置主机监控项、触发器、动作
    • Zabbix配置仪表盘,将监控数据可视化展示
  • 参考来源


系列文章回顾

第一章 戴尔PowerVault ME5012 存储服务器做快照计划的基本逻辑
第二章 Zabbix配置钉钉群聊告警机制


前言

通过Zabbix监控平台实现自定义脚本,分别监控OpenWrt的服务状态、Windows及Linux的CPU/内存/磁盘等状态,通过WebHook实时推送告警到钉钉群聊。
监控OpenWrt的ShadowSocksR
监控Windows的CPU/内存/磁盘
监控Linux的CPU/内存/磁盘


实施步骤

1. Zabbix实现ssh免密登录OpenWrt服务器
2. 编写自定义sh脚本监控OpenWrt,zabbix测试监控功能
3. Windows及Linux安装Zabbix-Agent客户端
4. Zabbix配置zabbix-agentd和zabbix-server的配置,配置主机监控项、触发器、动作
5. Zabbix配置仪表盘,将监控数据可视化展示


前置条件

软件环境:

  1. 内网已部署Zabbix监控平台
  2. 内网已部署Windows Server、Linux、OpenWrt


Zabbix实现自定义脚本监控Agent端

Zabbix实现ssh免密登录OpenWrt服务器

登录zabbix服务器后台

mkdir -p /etc/ssh/hosts/openwrt_keys
cd /etc/ssh/hosts/openwrt_keys

### 创建openwrt的密钥
[root@zabbix openwrt_keys]# ssh-keygen -t rsa -m pem -b 2048 -f openwrtkey -N '' -C 'openwrt@zabbix'

### 调整ssh密钥对的权限为zabbix用户
[root@zabbix openwrt_keys]# chown zabbix:zabbix /etc/ssh/hosts/openwrt_keys/*

在openwrt的管理后台给Dropbear服务添加SSH密钥,把pub公钥复制到Dropbear的’SSH密钥’
1

测试zabbix的root用户免密登录openwrt

[root@zabbix ~]# ssh -i /etc/ssh/hosts/openwrt_keys/openwrtkey root@openwrt.xxx.com
The authenticity of host 'openwrt.xxx.com (XXX.XXX.XXX.XXX)' can't be established.
RSA key fingerprint is SHA256:exxnb/xxxxCrkQzeVxxxxxxxxxxxxTu7C2cDyVGbs.
RSA key fingerprint is MD5:3a:e0:3a:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:b4.
Are you sure you want to continue connecting (yes/no)? yes			# -------------------------- # 输入yes
Warning: Permanently added 'openwrt.xxx.com,XXX.XXX.XXX.XXX' (RSA) to the list of known hosts.


BusyBox v1.31.1 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r0-6xxxxxxe
 -----------------------------------------------------
root@OpenWrt:~# exit

[root@zabbix ~]# ssh -i /etc/ssh/hosts/openwrt_keys/openwrtkey root@openwrt.xxx.com

把openwrt的公钥存储在zabbix用户的known_hosts文件里

### 示例数据如下。实际情况以查询到的内容为主
[root@zabbix ~]# cat ~/.ssh/known_hosts
openwrt.xxx.com,XXX.XXX.XXX.XXX ssh-rsa AAAAB3NzaC1VcCaFwv+Viuhw/6EdUyWCQ6WuWcz

### 查找zabbix用户的家目录
[root@zabbix ~]# grep zabbix /etc/passwd
zabbix:x:998:996:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin

# 检查zabbix用户的家目录是否存在,并创建用户家目录,修改权限
[root@zabbix ~]# ll /var/lib/zabbix
ls: cannot access /var/lib/zabbix: No such file or directory

[root@zabbix ~]# mkdir -p /var/lib/zabbix/.ssh/
[root@zabbix ~]# chown zabbix:zabbix -R /var/lib/zabbix/

# 复制ssh公钥数据到zabbix用户家目录的known_hosts文件
[root@zabbix ~]# cat ~/.ssh/known_hosts > /var/lib/zabbix/.ssh/known_hosts


编写自定义sh脚本监控OpenWrt,zabbix测试监控功能

登录zabbix服务器后台

# 查找zabbix所在目录
[root@zabbix ~]# whereis zabbix
zabbix: /usr/lib/zabbix /etc/zabbix /usr/share/zabbix

# 创建存放sh脚本的目录
mkdir -p /etc/zabbix/scripts

# 编写sh脚本
touch get_openwrt_status.sh

get_openwrt_status.sh

ssh -i /etc/ssh/hosts/openwrt_keys/openwrtkey root@openwrt.xxx.com  "curl --connect-timeout 23 -m 30 -s https://www.google.com/ | wc -l"

Zabbix前端配置zabbix-server的监控项和触发器
2
3

vim /etc/zabbix/zabbix_agentd.d/userparameter.conf

UserParameter=openwrt,/bin/sh /etc/zabbix/scripts/get_openwrt01_vpn_status.sh

# UserParameter=<key键值>,<CLI命令>
# zabbix底层配置agent参数
vim /etc/zabbix/zabbix-agentd.conf

...
### Option: Timeout
Timeout=30
...
### Option: UnsafeUserParameters
UnsafeUserParameters=1
:x
# 修改zabbix_server.conf配置
vim /etc/zabbix/zabbix_server.conf

...
### Option: Timeout
Timeout=30
:x

zabbix底层测试sh脚本, -k后边的参数是监控项的键值

[root@zabbix ~]# zabbix_get -s 127.0.0.1 -p 10050 -k 'openwrt'


Windows及Linux安装Zabbix-Agent客户端

Zabbix-Agent的下载链接
此例用5.0.30版本的zabbix-agentd
4

Windows客户端安装
5

Linux客户端安装
(略)



Zabbix配置zabbix-agentd和zabbix-server的配置,配置主机监控项、触发器、动作

zabbix的agent端执行msi安装后自动添加到开机启动项,agent端完成配置。
zabbix服务端的agentd和server的配置主要是Timeout超时时间需要设置成30s,5.0版本zabbix仅支持最大30s

# zabbix底层配置agent参数
vim /etc/zabbix/zabbix-agentd.conf

...
### Option: Timeout
Timeout=30
...
### Option: UnsafeUserParameters
UnsafeUserParameters=1
:x
# 修改zabbix_server.conf配置
vim /etc/zabbix/zabbix_server.conf

...
### Option: Timeout
Timeout=30
:x

新增主机,主机名称跟AgentdHost name保持一致。模板使用Template OS Windows by Zabbix agent
6

监控项从模板自动继承,此例需要监控CPU/内存/磁盘读写/磁盘容量,即如下监控项指标。

  1. CPU使用率:CPU utilization
  2. 内存使用率:Memory utilization
  3. 磁盘读写空闲百分比:Disk utilization by idle time
  4. 磁盘容量:Space utilization

触发器从模板自动继承,无需修改。

动作的配置:此例分别选择
Disk is overloaded (util > 95% for 5m),
High memory utilization (>90% for 5m),
High CPU utilization (over 90% for 5m)
作为动作的触发器



Zabbix配置仪表盘,将监控数据可视化展示

效果如下图
7



参考来源

  1. zabbix添加自定义监控脚本

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

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

相关文章

IDEA自定义自动导包设置

JetBrains公司的intellij Idea堪称JAVA编程界的苹果&#xff0c;用户体验非常好 下面介绍一下IDEA的一个能显著提升写代码效率的非常好用的功能设置—— Auto Import 在使用IDEA编程时&#xff0c;我们会经常使用到下面两个快捷键 CTRLALTO(Windows) 自动导包快捷键CTRLALTL(W…

安全渗透测试中的一款免费开源的超级关键词URL采集工具

安全渗透测试中的一款免费开源的超级关键词URL采集工具。 #################### 免责声明&#xff1a;工具本身并无好坏&#xff0c;希望大家以遵守《网络安全法》相关法律为前提来使用该工具&#xff0c;支持研究学习&#xff0c;切勿用于非法犯罪活动&#xff0c;对于恶意使…

flutter 升级到 3.7.3 报错 Unable to find bundled Java version

大家好&#xff0c;我是 17。 Android studio 是2020 年的版本&#xff0c;有点老&#xff0c;昨天突发想法&#xff0c;升级到了 Android Studio Electric Eel 2022.1。 计划今天和明天写那个 Flutter WebView 优化的文章&#xff0c;这篇是 在 Flutter 中使用 webview_flut…

Android-Service详解

前言 Service 是长期运行在后台的应用程序组件 。 Service 是和应用程序在同一个进程中&#xff0c;所以应用程序关掉了&#xff0c;Service也会关掉。可以理解为 Service是不能直接处理耗时操作的&#xff0c;如果直接把耗时操作放在 Service 的 onStartCommand() 中&#xff…

健康码互通方案优化

背景 解决不同场景一码通–全国互认互扫 技术方案设计目标&#xff1a;安全、高可用、可拓展、高性能、易用性。 健康码二维码优化 要设计一个能互通的二维码&#xff0c;二维码需要放入的信息会更多&#xff0c;因为需要塞进去更多的内容。而二维码会因为字符串的长度而导致…

Redis实例绑定CPU物理核优化Redis性能

进入本次Redis性能调优之前&#xff0c;首先要知道CPU结构也会影响Redis的性能。接下来&#xff0c;具体了解一下&#xff01;为什么CPU结构也会影响Redis的性能&#xff1f;主流的 CPU 架构一个 CPU 处理器中一般有多个物理核&#xff0c;每个物理核都可以运行应用程序。每个物…

docker-微服务篇

docker学习笔记1.docker简介1.1为什么会出现docker&#xff1f;1.2docker理念1.3虚拟机&#xff08;virtual machine&#xff09;1.4容器虚拟化技术1.5一次构建到处运行2.docker安装2.1前提条件2.2docker基本构成2.3docker安装步骤*2.4测试镜像3.docker常用命令3.1 启动docker3…

微信小程序 java ssm Springboot学生作业提交管理系统

系统具有良好的集成性&#xff0c;提供标准接口&#xff0c;以实现与其他相关系统的功能和数据集成。开放性好&#xff0c;便于系统的升级维护、以及与各种信息系统进行集成。功能定位充分考虑平台服务对象的需求。 一个微信小程序由.js、.json、.wxml、.wxss四种文件构成&…

zookeeper和kafka集群从0到1搭建(保姆教程)

一、环境准备 1、准备3台机器 主机名称 主机IP zookeeper版本 kafka版本 主机名称主机IPzookeeper版本kafka版本worker01192.168.179.128zookeeper-3.4.14.tar.gzkafka_2.12-2.2.1.tgzworker02192.168.179.129zookeeper-3.4.14.tar.gzkafka_2.12-2.2.1.tgzworker03192.168.1…

Arduino IDE 2.0.6中 ESP32开发环境搭建笔记

Arduino IDE 2.0.6中 ESP32开发环境搭建 Arduino IDE2.0 已上线一段时间&#xff0c;以后ESP32的学习转至新的IDE中 &#xff0c;需对开发环境进行。 Arduino IDE&#xff12;.&#xff10;与&#xff11;.&#xff10;有很大差异。原来环境搭建方法已完全不同。下文主要记录环…

Docker进阶 - 13. Docker 容器监控之 CAdvisor+InfluxDB+Granfana (CIG) 简介

目录 1. CIG 产生原因 2. CIG 是什么 3. CIG 详细介绍 1. CIG 产生原因 使用docker stats命令可以看到当前宿主机上所有容器的CPU,内存以及网络流量等数据&#xff0c;简单的监控够用。但是docker stats统计结果只能是当前宿主机的全部容器&#xff0c;数据资料是实时的&am…

外包干了5年,寄了

前两天有读者想我资讯&#xff1a; 我是一名软件测试工程师&#xff0c;工作已经四年多快五年了。现在正在找工作&#xff0c;由于一直做的都是外包的项目。技术方面都不是很深入&#xff0c;现在找工作都是会问一些&#xff0c;测试框架&#xff0c;自动化测试&#xff0c;感…

微信公众号(二)每日推送详细教程(ChatGPT对话机器人)

微信公众号&#xff08;二&#xff09;每日推送详细教程&#xff08;ChatGPT对话机器人&#xff09;1.准备阶段1.1 基础性配置1.2 申请ChatGPT账号2. 配置阶段2.1 配置application.yml文件2.2 EnableChatGPT注解3. 部署效果图如下 1.准备阶段 1.1 基础性配置 首先下载源码…

Vue3+SpringBoot实现【登录】【毛玻璃】【渐变色】

首先创建Login.vue&#xff0c;编写界面和样式 这个是渐变色背景&#xff0c;登陆框背景为白色 <template><div class"wrapper"><div style"margin: 200px auto; background-color: #fff; width: 350px; height: 300px;padding: 20px;border-r…

hadoop高可用+mapreduce on yarn集群搭建

虚拟机安装 本次安装了四台虚拟机&#xff1a;hadoop001、hadoop002、hadoop003、hadoop004&#xff0c;安装过程略过 移除虚拟机自带jdk rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps关闭防火墙 systemctl stop firewalld systemctl disable firewalld.service给普…

MyBatis-Plus基本CRUD

MyBatis-Plus基本CRUD三、基本CRUD1、BaseMapper2、插入3、删除a>通过id删除记录b>通过id批量删除记录c>通过map条件删除记录4、通过id修改一条记录5、查询a>根据id查询用户信息b>根据多个id查询多个用户信息c>通过map条件查询用户信息d>查询所有数据6、通…

微软ATP智汇十二道场 · 探索AI 驱动转型(北京专场)

为了推动微软与苏州人工智能产业创新中心共同构建企业级AI创新生态圈&#xff0c;微软ATP定于2023年3月3日在微软亚太研发集团总部&#xff08;北京&#xff09;举办“微软ATP智汇十二道场 探索AI 驱动转型”线下活动。 ▍微软探索AI商用&#xff0c;避免“创新陷阱”ChatGPT …

Lesson 6.6 多分类评估指标的 macro 和 weighted 过程 Lesson 6.7 GridSearchCV 的进阶使用方法

文章目录一、多分类评估指标的 macro 和 weighted 过程1. 多分类 F1-Score 评估指标2. 多分类 ROC-AUC 评估指标二、借助机器学习流构建全域参数搜索空间三、优化评估指标选取1. 高级评估指标的选用方法2. 同时输入多组评估指标四、优化后建模流程在正式讨论关于网格搜索的进阶…

Element UI框架学习篇(六)

Element UI框架学习篇(六) 1 删除数据 1.1 前台核心函数 1.1.1 elementUI中的消息提示框语法 //①其中type类型和el-button中的type类型是一致的,有info灰色,success绿色,danger红色,warning黄色,primary蓝色 //②message是你所要填写的提示信息 //③建议都用,因为比双引号…

字符串装换整数(atoi)-力扣8-java

一、题目描述请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。函数 myAtoi(string s) 的算法如下&#xff1a;读入字符串并丢弃无用的前导空格检查下一个字符&#xff08;假设还未…