在实际生产环境中,除了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监控添加学习笔记的更多相关文章

  1. FL2440驱动添加(3)LCD驱动添加学习笔记

    FL2440 LCD内置控制器,320*240 TFT型LCD. 自我理解总结的两种添加驱动模式: 非platform方式添加驱动: 加载驱动: 1,硬件初始化,申请内存,并作地址映射 2,分配设备号 ...

  2. linux 监控性能学习笔记(1)

    top命令中的 load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况. 在单核系统中100%利用负载标识为1.00,双核系统标识2.00 四核系统标识为4.00 因 ...

  3. Zabbix监控Tengine

    title: Zabbix监控Tengine tags: zabbix,nginx,tengine author: Chinge Yang date: 2016-12-29 --- Zabbix监控T ...

  4. Zabbix监控PostgreSQL

    目录 Zabbix监控PostgreSQL 1. 安装libzbxpgsql 2. 配置zabbix配置文件zabbix_agentd.conf 3. 创建监控用户 4. 导入监控模板 5. 主机链接 ...

  5. zabbix学习笔记:zabbix监控之短信报警

    zabbix学习笔记:zabbix监控之短信报警 zabbix的报警方式有多种,除了常见的邮件报警外,特殊情况下还需要设置短信报警和微信报警等额外方式.本篇文章向大家介绍短信报警. 短信报警设置 短信 ...

  6. Dynamic CRM 2013学习笔记(七)追踪、监控及性能优化

    本文将介绍CRM的三个内容追踪.监控及性能优化.追踪是CRM里一个很有用的功能,它能为我们的CRM调试或解决错误.警告提供有价值的信息:我们可以用window的性能监控工具来了解CRM的性能状况:最后 ...

  7. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  8. SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用

    SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用 Spring Boot Admin是一个管理和监控Spring Boot应用程序的应用程序.本文参考文档: 官 ...

  9. SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据

    简介 上篇文章中讲了使用Hystrix实现容错,除此之外,Hystrix还提供了近乎实时的监控.本文将介绍如何进行服务监控以及使用Hystrix Dashboard来让监控数据图形化. 项目介绍 sc ...

随机推荐

  1. Node.js躬行记(19)——KOA源码分析(上)

    本次分析的KOA版本是2.13.1,它非常轻量,诸如路由.模板等功能默认都不提供,需要自己引入相关的中间件. 源码的目录结构比较简单,主要分为3部分,__tests__,lib和docs,从名称中就可 ...

  2. 弃用!Github 上用了 Git.io 缩址服务的都注意了

    GitHub 是面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub.对程序员来说,GitHub 可以说是开源精神之所系.在 GitHub 任何职业程 ...

  3. Flutter网络请求和数据解析

    一:前言 - 什么是反射机制,Flutter为什么禁用反射机制? 在Flutter中它的网络请求和数据解析稍微的比较麻烦一点,因为Flutter不支持反射机制.相信大家都看到这么一条,就是Flutte ...

  4. URL 是什么?

    URL 是什么? 本文写于 2020 年 5 月 16 日 URL 是什么?天天听到人家说到这个名词,那它到底是什么? URL 是统一资源定位符,Uniform Resource Locator. 俗 ...

  5. linux篇-linux修改网卡名(亲测有效)

    1查看网卡ip addr 2cd /etc/sysconfig/network-scripts Ls查看 3mv ifcfg-eno16777736 ifcfg-eth0重命名,然后编辑 最后一行加入 ...

  6. 关于加密通道规范,你真正用的是TLS,而非SSL

    摘要:事实上我们现在用的都是TLS,但因为历史上习惯了SSL这个称呼,平常还是以SSL为多. 本文分享自华为云社区<SSL和TLS的联系及区别>,作者: HZDX. TLS/SSL是一种加 ...

  7. 20 HTTP 长连接与短连接

    20 HTTP 长连接与短连接 每日一句 纸上得来终觉浅,绝知此事要躬行. 每日一句 Never give up until the fight is over. 永远不要放弃,要一直战斗到最后一秒. ...

  8. axios知识点总结

    是什么? 前端最流行的 ajax 请求库 基于Promise的HTTP客服端,可以在浏览器和服务器两个环境去运行. 特点 基于 xhr + promise 的异步 ajax 请求库 浏览器端/node ...

  9. 《Unix 网络编程》05:TCP C/S 程序示例

    TCP客户/服务器程序示例 系列文章导航:<Unix 网络编程>笔记 目标 ECHO-Application 结构如下: graph LR; A[标准输入/输出] --fgets--> ...

  10. Lucene开发实例:Lucene中文分词(转载)

    1.准备工作下载lucene 3.6.1 : http://lucene.apache.org/下载中文分词IK Analyzer: http://code.google.com/p/ik-analy ...