Zabbix的自定义监控

news2024/9/20 19:47:54

Zabbix的自定义监控

zabbix自动可以提供很多监控项;但是往往不能满足需求;尝尝需要我们自己创建一系列的监控项,这就是自定义监控;

监控项:zabbix进行监控的一个指标,zabbix成为item;

  • 它的值是由独立的key进行识别的;

如何判断一个服务是否启动?

#可以监控端口就能知道
[root@Node1 ~]# ps -ef | grep ssh
root       6638      1  0 22:20 ?        00:00:00 /usr/sbin/sshd -D

	#判断是否为0;如果非0的就代表已经是挂掉了
[root@Node1 ~]# echo $?
0
	#类似于这样的方法就是用到shell脚本上了;

自定义监控redis服务

  • 利用zabbix自带的功能创建监控项
  • 方法:配置–>主机–>监控–>创建监控项
    • 注意:名称:最好是使用简单明了的
    • 类型:自定义的
    • 键值:这里是有模板的;
    • 主机连接端口:ip+端口
    • 间隔时间:自定义
    • 历史数据保留时间–>默认是保留3个月
    • 趋势:指的是中间值,平均值
    • 应用集:可以自定义;
    • 最后的状态已改是“已启用的状态”
  • 验证: 检测–>最新数据–>选择主机–>应用
    实验截图如下:
    在zabbix-agent服务器上面安装一个zabbix
  • zabbix-agent:192.168.75.131
#安装redis
[root@Node1 ~]# yum -y install redis
	#把redis的配置文件调整一下
[root@Node1 ~]# rpm -ql redis
/etc/logrotate.d/redis
/etc/redis-sentinel.conf
/etc/redis.conf
..............

#修改配置文件
[root@Node1 ~]# vim /etc/redis.conf 
......
bind 0.0.0.0
.......

[root@Node1 ~]# systemctl start redis

#查看一下端口
[root@Node1 ~]# netstat -ntlup 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      7271/redis-server 0 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6866/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      6949/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      7299/zabbix_agentd  

然后回到zabbix-server端配置

  • web配置–>浏览器:192.168.75.130

    • 点击配置–>主机–>创建主机–>创建监控项
      在这里插入图片描述
      然后进入到另外一个界面
  • 然后创建一个监控项–>点击创建监控项
    在这里插入图片描述然后去条监控项–>调好之后点击添加;完成配置
    在这里插入图片描述
    验证是否添加成功

去到web界面:配置–>主机–>选择自己设置的–>应用–>找到自己监控的redis_status_check这个监控选项
在这里插入图片描述自定义脚本监控

第一步:修改监控主机的zabbix-agent配置文件

#首先需要修改一下zabbix-agent的配置文件
[root@Node1 ~]# vim /etc/zabbix_agentd.conf
	#指定监控项以及获取值的方式-->在空白处添加就可以
...........
	#这一行就是用户自定义
284 ### Option: UserParameter
285 #       User-defined parameter to monitor. There can be several user-defined parameters.
286 #       Format: UserParameter=<key>,<shell command>
287 #       See 'zabbix_agentd' directory for examples.
288 #
289 # Mandatory: no
290 # Default:
291 # UserParameter=
292 UserParameter=redis.status,bash bash /data/sh/redis_status.sh
293 
.....
	#选项的简介:
	#redis-status-check:这个是键值(对应监控项的名称)
	#bash /data/sh/redis_status.sh	-->这里是指定获取监控项的方式
	
[root@Node1 ~]# systemctl restart zabbix-agent

第二步:创建脚本

#创建检测的脚本
#创建一个存放脚本的目录
[root@Node1 ~]# mkdir -p /data/sh
[root@Node1 ~]# cd /data/sh/

#开始创建脚本
[root@Node1 sh]# vim redis_status.sh
#!/bin/bash
#Author by LinagGaRy
##########################
killall -0 redis-server &> /dev/null
if [ $? -eq 0 ];then
        echo 1
else
        echo 0
fi
  • killall -0 +redis 是检测redis服务是否存在

    #安装killall命令
    [root@Node1 yum.repos.d]# yum search killall
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
    ============================================= 匹配:killall ==============================================
    psmisc.x86_64 : Utilities for managing processes on your system
    [root@Node1 ~]# yum -y install psmisc
    

第三步:测试脚本

  • 脚本运行的时候一定要先测试,脚本没有问题,才能继续;
  • 测试需要在服务器端和客户端都进行测试

zabbix-agent端来测试一下脚本

#开启一下redis-->
[root@Node1 sh]# systemctl start redis

#然后测试脚本
[root@Node1 sh]# bash redis_status.sh 
1

#关闭一下redis-->然后在测试
[root@Node1 sh]# systemctl stop redis.service 
[root@Node1 sh]# bash redis_status.sh 
0

#使用zabbix-agent命令来测试
[root@Node1 ~]# systemctl restart zabbix-agent.service


第四步:去web界面配置:配置–>主机–>选择
在这里插入图片描述检查:web界面:检测—>最新数据–>筛选

web监控界面出现字体的乱码

随便在windows上main找一份字体上传给到服务器端;就OK了

windows的路径:C:\Windows\WinSxS\amd64_microsoft-windows-font-truetype-simkai_31bf3856ad364e35_10.0.14393.0_none_1fd5c0c98bebc282

进到服务器端,上传字体

[root@node0 ~]# ls
anaconda-ks.cfg  simkai.ttf

#移动到zabbix的字体当中
[root@node0 ~]# mv simkai.ttf  /usr/share/zabbix/assets/fonts/DejaVuSans.ttf 
mv:是否覆盖"/usr/share/zabbix/assets/fonts/DejaVuSans.ttf"? y

	#然后去到web更新

监控nginx服务

nginx中也是有状态模块的;

#在配置文件中可以添加如下信息
[root@Node1 ~]# vim /etc/nginx/nginx.conf

...........
        location = /status {
                stub_status;
                }

	#空白处新增加这一行	
        location = /status {		#这里的目录是不用创建的
                stub_status;					#启用了状态模块
                allow 192.168.75.131;		#只允许本机访问、白名单
                deny all;				#拒绝所有;
        }
..........

[root@Node1 ~]# nginx -s reload


#尝试查看一下
[root@Node1 ~]# curl 192.168.75.131:/status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 

创建监控nginx的脚本

[root@Node1 ~]# cd /data/sh/
[root@Node1 sh]# vim nginx_status.sh
#!/bin/bash
#Author by LiangGaRY
######################
function active {
        curl 192.168.75.131/status 2>/dev/null |awk 'NR==1{print $NF}'
}
function accepts { 
        curl 192.168.75.131/status 2>/dev/null | awk 'NR==3{print $1}' 
} 
function handled { 
        curl 192.168.75.131/status 2>/dev/null | awk 'NR==3{print $2}' 
} 
function requests { 
        curl 192.168.75.131/status 2>/dev/null | awk 'NR==3{print $3}' 
}
function reading { 
        curl 192.168.75.131/status 2>/dev/null | awk 'NR==4{print $2}' 
}
function writing { 
        curl 192.168.75.131/status 2>/dev/null | awk 'NR==4{print $4}' 
}
function waiting { 
        curl 192.168.75.131/status 2>/dev/null | awk 'NR==4{print $NF}' 
}
$1

#添加执行权限
[root@Node1 sh]# chmod +x nginx_status.sh 

#脚本测试
[root@Node1 sh]# zabbix_get -s 192.168.75.131 -k nginx.status

然后去到web界面设置即可

vim编写属于自己的.vimrc格式

set wildmode=longest:list,full
ingremap ' ''<Esc>i
ingremap " ""<Esc>i
ingremap ( ()<Esc>i
ingremap [ []<Esc>i
ingremap { {}<Esc>i
ingremap < <><Esc>i

func Setsh()
        call setline(1,"#!/bin/bash")
        call setline(2,"#Author By LiangGaRy")
        call setline(3,"#".strftime("%Y-%m-%d %H:%M:%S"))
        call setline(4,"#############################")
        normal G
        normal o
        normal o
endfunc

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

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

相关文章

C++7:STL-模拟实现vector

目录 vector的成员变量 构造函数 reserve size() capacity() push_back 一些小BUG 赋值操作符重载 析构函数 【】操作符重载 resize pop_back Insert 迭代器失效 erase 二维数组问题 总结一下 vector&#xff0c;翻译软件会告诉你它的意思是向量&#xff0c;但其…

面试腾讯测开岗,结束后被面试官吐槽“什么阿猫阿狗都敢来面试大厂了吗?”.....

前一阵子有个小徒弟向我诉苦&#xff0c;说自己在参加某大厂测试面试的时候被面试官怼得哑口无言&#xff0c;场面让他一度十分尴尬 印象最深的就是下面几个问题&#xff1a; 根据你以前的工作经验和学习到的测试技术&#xff0c;说说你对质量保证的理解&#xff1f; 非关系型…

不连接显示器或者HDMI欺骗器来 使用Moonlight串流游戏

环境&#xff1a;WIN11NVIDIA显卡Moonlight串流 问题&#xff1a;当主机不连接显示器时&#xff0c;Moonlight客户端黑屏 解决办法&#xff1a;使用虚拟显示器来使显卡工资 背景&#xff1a;当SteamDeck 大卖的时候&#xff0c;我开始思考是否也需要购买一台Steam Deck来躺在床…

G1垃圾回收器详解

文章目录前言一、思考问题二、官方文档三、基本介绍四、G1的内存模型五、G1的标记过程六、G1的垃圾回收1、G1过程梳理2、Young GC3、Mixed GC4、Full GC七、参数介绍八、典型问题1、疏散失败&#xff08;Evacuation Failure&#xff09;2、大对象分配&#xff08;Humongous All…

【Linux】动静态库以及动静态链接

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅&#x1f339;链接扩展我们在使用Linux的时候&#xff0c;不禁会有这么一个疑问&#xff1a;为什么我们能够在Linux下进行c/c代码的编写以及编译呢&#xff1f;这是因…

_Linux(网络基础)

文章目录1. 相关基础概念2. 认识 "协议"3. 网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型4. 网络传输基本流程网络传输流程图数据包封装和分用小结5. 网络中的地址管理认识IP地址认识MAC地址认识端口号1. 相关基础概念 独立模式: 计算机之间相互独立网络互…

MySQL数据库13——插入数据(INSERT)

下面的语句用于向student表插入数据。 插入语句&#xff1a; INSERT INTO student(ID,name,sex,birthday,origin,contact1,contact2,institute) VALUES (0013,塔赛努,男,1997/9/15,内蒙古自治区,NULL,NULL,计算机学院);INSERT INTO student VALUES (0014,呼和嘎拉,男,1995-02…

字节青训营——秒杀系统设计学习笔记(一)

如何做系统设计 1. 场景分析(Scenario) 什么系统&#xff0c;需要哪些功能&#xff0c;多大的并发量 2. 存储设计(Storage) 数据如何组织&#xff0c;Sq|存储&#xff0c; NoSq|存储 3. 服务设计(Service) 业务功能实现和逻辑整合 4. 可扩展性(Scale) 解决设计缺陷&…

Go的web开发Gin框架1(八)——Gin

一、重点内容&#xff1a; 知识要点有哪些&#xff1f; 1、了解Gin框架 2、导入使用Gin框架 3、尝试配合GORM开发 4、整合html&#xff0c;css&#xff0c;js 二、详细知识点介绍&#xff1a; 1、Gin框架介绍 ​ Gin是一个golang的微框架&#xff0c;封装比较优雅&…

MyBatis无法通过getGenerateKeys获得自增主键的问题

我遇到这个问题的法伤原因比较蠢&#xff0c;查阅了网上相关经验都没有能够解决。看看这个经验能否帮助到你。问题描述&#xff1a;设置了属性的自增后想通过getGenerateKeys获得MySQL对应表单中自增主键id&#xff0c;检查了类、映射器、xml都没有发现问题&#xff0c;但是进行…

如何使用 Python 编程进行多线程

多线程&#xff1a;理论上能在同一个时间段执行多个程序片段&#xff0c;每个程序片段就看作是一个线程。为什么要说理论上&#xff0c;因为实际在操作系统中真正的在同一时间段基本是不存在的&#xff0c;但是在软件编程中我们可以理解为它是在同一时间段执行的。 同步&#…

c/c++开发,无可避免的模板编程实践(篇一)

一、c模板 c开发中&#xff0c;在声明变量、函数、类时&#xff0c;c都会要求使用指定的类型。在实际项目过程中&#xff0c;会发现很多代码除了类型不同之外&#xff0c;其他代码看起来都是相同的&#xff0c;为了实现这些相同功能&#xff0c;我们可能会进行如下设计&#xf…

SpringBoot自定义JsonSerializer和JsonDeserializer,兼容LocalDateTime和LocalDate

1.前言 JDK1.8中添加新的时间日期API&#xff0c;LocalDate、LocalDateTime、LocalTime&#xff0c;但是我们在开发中使用时间戳作为参数值来传递是比较常用的&#xff0c;然而在SpringBoot中并没有为我们提供合适的JsonSerializer和JsonDeserializer。 我们先看看使用默认的Js…

Linux根文件系统移植

目录 一、根文件系统 1.1根文件系统 1.2根文件系统内容 二、根文件系统移植 2.1BusyBox 2.2BusyBox的获取 2.3BusyBox的使用 2.4make menuconfig 2.5编译和安装 2.6修改根文件系统 一、根文件系统 1.1根文件系统 根文件系统是内核启动后挂载的第一个文件系统系统引…

Homekit智能家居创意DIY一智能灯

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时&#xff0c;它们可以通过声控、触控、红外等方式进行控制&#xff0c;或者带有调光开关&#xff0c;让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块&#xff0c;可与手机、家庭智能助手、或其他智能…

链表题目总结 -- 递归

目录一. 递归反转整个链表1. 思路简述2. 代码3. 总结二. 反转链表前 N 个节点1. 思路简述2. 代码3. 总结三、反转链表的一部分1. 思路简述2. 代码3.总结四、反转链表后N个节点1. 思路简述2. 代码3.总结一. 递归反转整个链表 题目链接&#xff1a;https://leetcode.cn/problems…

部署智能合约到公链

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

【面试】生命周期详情解释及案例

目录 1.什么是生命周期 2.生命周期函数 3.vue2中生命周期的函数 4.生命周期的阶段 5.生命周期图示 第一个阶段&#xff1a;组件创建阶段 第二个阶段&#xff1a;编译HTML模板并渲染到浏览器中 第三阶段&#xff1a;组件更新阶段 第四阶段&#xff1a;组件销毁阶段 1.什…

【数据结构】基础:图的基本概念与实现(附C++源代码)

【数据结构】基础&#xff1a;图的基本概念与实现&#xff08;附C源代码&#xff09; 摘要&#xff1a;将会在数据结构专题中开展关于图论的内容介绍&#xff0c;其中包括四部分&#xff0c;分别为图的概念与实现、图的遍历、图的最小生成树以及图的最短路径问题。本文将介绍图…

遗传算法(Genetic Algorithm,GA)实现数据排序,python

遗传算法(Genetic Algorithm,GA)实现数据排序&#xff0c;python 遗传算法是一种比较广泛、通用的算法体系&#xff0c;为了说明遗传算法的原理和实现&#xff0c;现在用GA解决一个计算机科学最基本、最古老的问题&#xff1a;排序问题。 需要特别说明的是&#xff0c;遗传算…