zabbix监控添加学习笔记
在实际生产环境中,除了CPU、内存等一些系统信息可以挂载zabbix的自带模板Template OS Linux;但是一些公司开发的定制服务需要自己写模板或者监控项去监控;
一、监控公司的java服务
1、编写监控脚本
#!/bin/bash
#version: 1.0
#author: zhide.zhang
#email: 1072051214@qq.com
#create time: 2021年 07月 29日 星期四 18:10:48 CST
#返回1为java进程正常,返回0则java进程未运行;
status(){
if [ -n "$numid" ];then
echo "1"
else
echo "0"
fi
} case $1 in
zuul)
numid=`ps aux |grep zuul.jar |grep -v grep | awk '{print $2}'`
status
;;
user-service)
numid=`ps aux |grep user-service.jar |grep -v grep | awk '{print $2}'`
status
;;
auth-service)
numid=`ps aux |grep auth-service.jar |grep -v grep | awk '{print $2}'`
status
;;
esac
#cat /etc/zabbix/zabix_agentd.d/java-service.conf
UserParameter=java.status[*],/etc/zabbix/script/java-service.sh $1
在agent端脚本和配置文件编写完成之后需要重启zabbix-agent服务:systemctl restart zabbix-agent.service
2、添加监控项
如果多个服务器都部署的是相同的java服务,则可以定义一个模板,将该模板挂载到相应的主机;
2.1、定义模板名称

2.2、定义监控项

键值:java.status是在上面java-service.conf配置文件中定义的,中括号中的zuul.java是在java-service.sh脚本中定义的项目;
2.3、定义触发器

当返回值=0时,则告警;表示java服务已经停止;
二、java服务自动发现
当公司的服务器上部署的java服务各不相同,有多有少,此时手动写java监控脚本和添加java服务监控项就是个大工程;此时,java服务自动发现就排上用场了;
zabbix官方文档:https://www.zabbix.com/documentation/3.4/zh/manual/discovery/low_level_discovery#discovery_of_file_systems
1、编写java服务自动发现脚本
#!/bin/bash
java_server=($(ps aux |grep "java -jar"|grep -v grep |awk '{print $13}')) printf "{\n"
printf '\t"data":[\n'
for ((i=0;i<${#java_server[@]};i++))
do
printf '\t\t{\n'
num=$(echo $((${#java_server[@]}-1)))
if [ "$i" == ${num} ];
then
printf "\t\t\t\"{#JAVA_NAME}\":\"${java_server[$i]}\"}\n"
else
printf "\t\t\t\"{#JAVA_NAME}\":\"${java_server[$i]}\"},\n"
fi
done
printf "\t]\n"
printf "}\n"
要以json格式呈现;
2、编写自动发现服务配置文件
cat java.service.conf
UserParameter=java.service,/etc/zabbix/script/java.service.sh
重启zabbix-agent服务:systemctl restart zabbix-agent.service
3、配置服务自动发现模板


这地方的键值java.service是在java.service.conf文件中定义的;

这地方可以用zabbix内置的进程监控键值proc.num来做监控项;

三、磁盘IO使用情况自动发现
1、磁盘IO自动发现脚本
#!/bin/bash
diskarray=(`cat /proc/diskstats |grep -E "\bsd[a-z]\b|\bxvd[a-z]\b|\bvd[a-z]\b"|awk '{print $3}'|sort|uniq 2>/dev/null`) length=${#diskarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"
2、磁盘IO状态脚本
#/bin/bash device=$1
item=$2 IOSTAT_PID=`ps aux | grep "iostat -dxkt 1" | grep -v grep | awk '{print $2}'`
if [ -z "$IOSTAT_PID" ];then
`nohup /usr/bin/iostat -dxkt 1 > /tmp/iostat_output 2>/dev/null &`
sleep 2
fi case $item in
# rrqm)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $2}'
# ;;
# wrqm)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $3}'
# ;;
# rps)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $4}'
# ;;
# wps)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $5}'
# ;;
# rKBps)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $6}'
# ;;
# wKBps)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $7}'
# ;;
# avgrq-sz)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $8}'
# ;;
# avgqu-sz)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $9}'
# ;;
# await)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $10}'
# ;;
# r_await)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $11}'
# ;;
# w_await)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $12}'
# ;;
# svctm)
# /usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $13}'
# ;;
util)
echo `/usr/bin/tail -n20 /tmp/iostat_output |grep "$device" |tail -1|awk '{print $14}'`
;;
esac
3、编写自动发现配置文件
cat disk-status.conf
UserParameter=disk.discovery,/etc/zabbix/script/disk.discovery.sh
UserParameter=disk.status[*],/etc/zabbix/script/disk.status.sh $1 $2
4、定义自动发现规则



当磁盘util利用率连续采集3次的值的平均值超过80则报警;
四、监控磁盘空间使用率
用zabbix自带的键采集vfs.fs;
1、定义自动发现规则

2、定义过滤器
因为有些服务器系统,文件系统类型很多,我们只过滤我们需要的;
[root@localhost ~]# zabbix_get -s 10.30.1.12 -k "vfs.fs.discovery"
{"data":[{"{#FSNAME}":"/","{#FSTYPE}":"rootfs"},{"{#FSNAME}":"/sys","{#FSTYPE}":"sysfs"},{"{#FSNAME}":"/proc","{#FSTYPE}":"proc"},{"{#FSNAME}":"/dev","{#FSTYPE}":"devtmpfs"},{"{#FSNAME}":"/sys/kernel/security","{#FSTYPE}":"securityfs"},{"{#FSNAME}":"/dev/shm","{#FSTYPE}":"tmpfs"},{"{#FSNAME}":"/dev/pts","{#FSTYPE}":"devpts"},{"{#FSNAME}":"/run","{#FSTYPE}":"tmpfs"},{"{#FSNAME}":"/sys/fs/cgroup","{#FSTYPE}":"tmpfs"},{"{#FSNAME}":"/sys/fs/cgroup/systemd","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/pstore","{#FSTYPE}":"pstore"},{"{#FSNAME}":"/sys/fs/cgroup/cpu,cpuacct","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/hugetlb","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/pids","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/net_cls,net_prio","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/memory","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/perf_event","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/blkio","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/devices","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/freezer","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/cpuset","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/kernel/config","{#FSTYPE}":"configfs"},{"{#FSNAME}":"/","{#FSTYPE}":"xfs"},{"{#FSNAME}":"/proc/sys/fs/binfmt_misc","{#FSTYPE}":"autofs"},{"{#FSNAME}":"/sys/kernel/debug","{#FSTYPE}":"debugfs"},{"{#FSNAME}":"/dev/hugepages","{#FSTYPE}":"hugetlbfs"},{"{#FSNAME}":"/dev/mqueue","{#FSTYPE}":"mqueue"},{"{#FSNAME}":"/data","{#FSTYPE}":"ext4"},{"{#FSNAME}":"/run/user/0","{#FSTYPE}":"tmpfs"},{"{#FSNAME}":"/proc/sys/fs/binfmt_misc","{#FSTYPE}":"binfmt_misc"},{"{#FSNAME}":"/mnt/movtile_vc","{#FSTYPE}":"nfs"},{"{#FSNAME}":"/mnt/movtile_vc","{#FSTYPE}":"nfs"},{"{#FSNAME}":"/mnt/movtile","{#FSTYPE}":"nfs"},{"{#FSNAME}":"/run/user/1001","{#FSTYPE}":"tmpfs"}]}
返回的是json格式的,数据,不太好看,可以用jq命令格式化一下;


只需要展示文件系统类型为nfs、ext4、xfs的磁盘空间大小;
3、定义监控项目原型

{#FSNAME} 可用磁盘空间
名称:$1 可用磁盘空间
键值:vfs.fs.size[{#FSNAME},free]
信息类型:数字无正负
单位:B
{#FSNAME} 磁盘总空间
名称:$1 磁盘总空间
键值:vfs.fs.size[{#FSNAME},total]
信息类型:数字无正负
单位:B
Free disk space on {#FSNAME}(percentage)
名称:Free disk space on $1(percentage)
键值:vfs.fs.size[{#FSNAME},pfree]
信息类型:浮点数
单位:%
Free inodes on {#FSNAME} (percentage)
名称:Free inodes on $1 (percentage)
键值:vfs.fs.inode[{#FSNAME},pfree]
信息类型:浮点数
单位:%
Used disk space on {#FSNAME}
名称:Used disk space on $1
键值:vfs.fs.size[{#FSNAME},used]
信息类型:数字无正负
单位:B
4、定义触发器类型
名称:Free inodes小于20% on volume {#FSNAME}
表达式:{system-information:vfs.fs.inode[{#FSNAME},pfree].last(0)}<20
#########
名称:可用磁盘空间小于 20% on volume {#FSNAME}
表达式:{system-information:vfs.fs.size[{#FSNAME},pfree].last(0)}<20

5、定义图形原型


五、zabbix测试命令
#启动zabbix-agent
systemctl start zabbix-agent.service
#zabbix内建命令
zabbix_get -s 10.30.1.4 -p 10050 -k "system.hostname"
#自定义键值访问
zabbix_get -s 10.30.1.4 -k "java.status[user-service-web-app]"
#iptables放行zabbix-agent
iptables -I INPUT 20 -p tcp -m tcp --dport 10050 -m comment --comment "zabbix_agentd listen " -j ACCEPT
zabbix监控添加学习笔记的更多相关文章
- FL2440驱动添加(3)LCD驱动添加学习笔记
FL2440 LCD内置控制器,320*240 TFT型LCD. 自我理解总结的两种添加驱动模式: 非platform方式添加驱动: 加载驱动: 1,硬件初始化,申请内存,并作地址映射 2,分配设备号 ...
- linux 监控性能学习笔记(1)
top命令中的 load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况. 在单核系统中100%利用负载标识为1.00,双核系统标识2.00 四核系统标识为4.00 因 ...
- Zabbix监控Tengine
title: Zabbix监控Tengine tags: zabbix,nginx,tengine author: Chinge Yang date: 2016-12-29 --- Zabbix监控T ...
- Zabbix监控PostgreSQL
目录 Zabbix监控PostgreSQL 1. 安装libzbxpgsql 2. 配置zabbix配置文件zabbix_agentd.conf 3. 创建监控用户 4. 导入监控模板 5. 主机链接 ...
- zabbix学习笔记:zabbix监控之短信报警
zabbix学习笔记:zabbix监控之短信报警 zabbix的报警方式有多种,除了常见的邮件报警外,特殊情况下还需要设置短信报警和微信报警等额外方式.本篇文章向大家介绍短信报警. 短信报警设置 短信 ...
- Dynamic CRM 2013学习笔记(七)追踪、监控及性能优化
本文将介绍CRM的三个内容追踪.监控及性能优化.追踪是CRM里一个很有用的功能,它能为我们的CRM调试或解决错误.警告提供有价值的信息:我们可以用window的性能监控工具来了解CRM的性能状况:最后 ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用
SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用 Spring Boot Admin是一个管理和监控Spring Boot应用程序的应用程序.本文参考文档: 官 ...
- SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据
简介 上篇文章中讲了使用Hystrix实现容错,除此之外,Hystrix还提供了近乎实时的监控.本文将介绍如何进行服务监控以及使用Hystrix Dashboard来让监控数据图形化. 项目介绍 sc ...
随机推荐
- 溢出属性,定位,z-index,JS
溢出属性 1.visible(默认值):使溢出内容展示 2.hidden:隐藏溢出内容且不出现滚动条 3.scroll:隐藏溢出容器的内容,溢出的内容可以通过滚动呈现 4.auto:与scroll没啥 ...
- Spring 源码(13)Spring Bean 的创建过程(4)
Spring Bean的创建过程非常的复杂,上一篇重点介绍了Spring在创建Bean的过程中,使用InstantiationBeanPostProcessor进行提前创建Bean,我们可以通过CGL ...
- 一键解决Win10 LTSC 2021官方镜像存在的问题
一键解决Win10 LTSC 2021官方镜像存在的问题 由于适用了win10 ltsc 2021之后,发现官方镜像存在一些致命的bug.但是本人又喜欢这个官方精简的系统,所以进行了一些修复.并将搜集 ...
- 第一篇:实时网络日志分析器和交互式查看器--GoAccess安装
介绍 GoAccess是一个开源的实时网络日志分析器和交互式查看器,可以在* nix 系统或通过浏览器的终端中运行. 它为需要动态可视化服务器报告的系统管理员提供快速且有价值的HTTP统计信息. 特征 ...
- 146_ACCESS之HR招聘信息管理_64位
焦棚子的文章目录 点击下载附件 一.背景: 最近把之前做的一个HR招聘信息管理工具翻新了下,有需要的朋友可以自取,主要想解决的问题是多人在跟进人员招聘的时候信息的不对称,这样下来的就可以及时的看到整个 ...
- freeswitch使用mod_shout模块播放mp3
概述 freeswitch 在对VOIP语音通话中,可以通过playback命令播放IVR语音文件. 默认情况下,freeswitch支持wav文件,也可以直接播放VOIP中常见编解码的G711文件. ...
- Vue出现Component template should ...
当运行vue出现错误Component template should contain exactly one root element. If you ...的时候,我们只需要将<templa ...
- NodeJS全栈开发利器:CabloyJS究竟是什么
CabloyJS CabloyJS是一款顶级NodeJS全栈业务开发框架, 基于KoaJS + EggJS + VueJS + Framework7 文档 官网 && 文档 演示 PC ...
- 一些有趣的B+树优化实验
作为目前数据库引擎的两种主要数据结构,LSM-tree和B+-tree在业界已经有非常广泛的研究.相比B+-tree,LSM-tree牺牲一定的读性能以换取更小的写放大以及更低的存储成本,但这必须建立 ...
- 3D编程模式:依赖隔离模式
大家好~本文提出了"依赖隔离"模式 系列文章详见: 3D编程模式:开篇 本文相关代码在这里: 相关代码 目录 编辑器需要替换引擎 设计意图 定义 应用 扩展 最佳实践 更多资料推荐 ...