zabbix精华篇-低级自动发现详解---批量自动获取主机所有tomcat端口并进行监控(二十四)

简介: zabbix利用低级自动发现自动监控tomcat端口1.为什么要使用自动发现由于我们tomcat服务器特别多,且每一个上面跑的实例长达几十个,但是这些tomcat的端口也都需要监控起来,如果手动添加的话将会非常麻烦,我们可以利用自动发现,将自动发现配置一些规则并做成模板,给有tomcat的服务器链接模板就可以了,这个过程就会大大减少人工的工作量

zabbix利用低级自动发现自动监控tomcat端口

1.为什么要使用自动发现

由于我们tomcat服务器特别多,且每一个上面跑的实例长达几十个,但是这些tomcat的端口也都需要监控起来,如果手动添加的话将会非常麻烦,我们可以利用自动发现,将自动发现配置一些规则并做成模板,给有tomcat的服务器链接模板就可以了,这个过程就会大大减少人工的工作量

2.在被控主机安装tomcat多实例

2.1.安装tomcat

[root@tomcat ~]# yum -y install java
[root@tomcat ~]# tar xf apache-tomcat-8.0.49.tar.gz

2.2.部署tomcat多实例

[root@tomcat ~]# cp -rp apache-tomcat-8.0.49 /application/tomcat1
[root@tomcat ~]# cp -rp apache-tomcat-8.0.49 /application/tomcat2
[root@tomcat ~]# cp -rp apache-tomcat-8.0.49 /application/tomcat3
[root@tomcat ~]# cp -rp apache-tomcat-8.0.49 /application/tomcat4
[root@tomcat ~]# cp -rp apache-tomcat-8.0.49 /application/tomcat5

2.3.修改端口号

[root@tomcat ~]# cd /application/
[root@tomcat application]# vim tomcat1/conf/server.xml
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
[root@tomcat application]# vim tomcat2/conf/server.xml 
<Server port="5005" shutdown="SHUTDOWN">
<Connector port="5080" protocol="HTTP/1.1"
<Connector port="5009" protocol="AJP/1.3" redirectPort="8443" />
[root@tomcat application]# vim tomcat3/conf/server.xml 
<Server port="6005" shutdown="SHUTDOWN">
<Connector port="6080" protocol="HTTP/1.1"
<Connector port="6009" protocol="AJP/1.3" redirectPort="8443" />
[root@tomcat application]# vim tomcat4/conf/server.xml 
<Server port="7005" shutdown="SHUTDOWN">
<Connector port="7080" protocol="HTTP/1.1"
<Connector port="7009" protocol="AJP/1.3" redirectPort="8443" />
[root@tomcat application]# vim tomcat5/conf/server.xml 
<Server port="9005" shutdown="SHUTDOWN">
<Connector port="9080" protocol="HTTP/1.1"
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />

2.4.启动tomcat

[root@tomcat application]# for i in {1..5}
do
./tomcat${i}/bin/startup.sh
done
Using CATALINA_BASE:   /application/tomcat1
Using CATALINA_HOME:   /application/tomcat1
Using CATALINA_TMPDIR: /application/tomcat1/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /application/tomcat1/bin/bootstrap.jar:/application/tomcat1/bin/tomcat-juli.jar
Tomcat started.
Using CATALINA_BASE:   /application/tomcat2
Using CATALINA_HOME:   /application/tomcat2
Using CATALINA_TMPDIR: /application/tomcat2/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /application/tomcat2/bin/bootstrap.jar:/application/tomcat2/bin/tomcat-juli.jar
Tomcat started.
Using CATALINA_BASE:   /application/tomcat3
Using CATALINA_HOME:   /application/tomcat3
Using CATALINA_TMPDIR: /application/tomcat3/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /application/tomcat3/bin/bootstrap.jar:/application/tomcat3/bin/tomcat-juli.jar
Tomcat started.
Using CATALINA_BASE:   /application/tomcat4
Using CATALINA_HOME:   /application/tomcat4
Using CATALINA_TMPDIR: /application/tomcat4/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /application/tomcat4/bin/bootstrap.jar:/application/tomcat4/bin/tomcat-juli.jar
Tomcat started.
Using CATALINA_BASE:   /application/tomcat5
Using CATALINA_HOME:   /application/tomcat5
Using CATALINA_TMPDIR: /application/tomcat5/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /application/tomcat5/bin/bootstrap.jar:/application/tomcat5/bin/tomcat-juli.jar
Tomcat started.

2.5.查询tomcat端口

[root@tomcat application]# netstat -lnpt | grep java | awk '{print $4}' | grep 80$ | awk -F: '{print $NF}'
7080
8080
5080
9080
6080

3.配置zabbix自动发现自动监控主机tomcat进程

3.1.编写获取tomcat端口并输出为json格式的脚本

脚本思路:

1.首先定义一个获取所有tomcat端口的数组变量

2.在定义一个所有tomcat端口数量的变量用于后面json格式逗号的比较

3.使用printf输出json格式

4.定义j的值,在接下来for循环中用于每次循环都加1,最终判断是否是最后一个循环,如果是最后一个循环就不要输出逗号,否则就影响了json的格式

4.使用for循环遍历我们定义好的数组变量,在循环内部也要使用printf定义json格式,然后把遍历到的tomcat端口值输入到就json中,在用if判断当前j的值是不是小于tomcat端口总值,如果小于就要输出json格式的逗号,如果大于则不输出,大于也就表示tomcat端口值以及全部遍历完

脚本内容纯手工编写,网上给出的不太靠谱

1.编写脚本
[root@tomcat ~]# cd  /etc/zabbix/scripts/
[root@tomcat scripts]# vim tomcat_port.sh
#!/bin/bash
#获取tomcat端口号并制作成json格式               --jxl 20201214
tomcat_port=(`netstat -lnpt | egrep -i "$1" | awk {'print $4'} | egrep -v "05|09"| awk -F: '{print $NF}'|sort|uniq`)  #定义数组,获取tomcat端口号
tomcat_count=`netstat -lnpt | egrep -i "$1" | awk {'print $4'} | egrep -v "05|09"| awk -F: '{print $NF}'|sort|uniq | wc -l` #定义端口数量
printf "{\n"                                    #打印json格式
printf  '\t'"\"data\":["
j=0   
for i in ${!tomcat_port[@]}             #遍历数组获取索引值
do
   let j++
   printf '\n\t\t{'
   printf "\"{#TOMCAT_PORT}\":\"${tomcat_port[$i]}\"}"        #取到tomcat的端口号
   if [ $j -lt $tomcat_count ];then                   #本次的i值与tomcat端口数量做比较,如果小则输出,否则不输出
              printf ','
   fi
done
printf  "\n\t]\n"
printf "}\n"
2.脚本输出
[root@tomcat scripts]# sh tomcat_port.sh java
{
  "data":[
    {"{#TOMCAT_PORT}":"5080"},
    {"{#TOMCAT_PORT}":"6080"},
    {"{#TOMCAT_PORT}":"7080"},
    {"{#TOMCAT_PORT}":"8080"},
    {"{#TOMCAT_PORT}":"9080"}
  ]
}
3.脚本赋权限
[root@tomcat scripts]# chmod a+x tomcat_port.sh 

3.2.zabbix-agent配置

1.增加自定义监控项
监控项使用变量传参的形式
[root@tomcat scripts]# vim /etc/zabbix/zabbix_agentd.d/tomcat_monitor.conf
UserParameter=tomcat_port[*],/etc/zabbix/scripts/tomcat_port.sh $1
2.重启zabbix-agent
[root@tomcat scripts]# systemctl restart zabbix-agent.service 
3.取值前一定要给netstat命令增加s权限,否则zabbix是普通用户没有权限执行netstat
[root@tomcat scripts]# chmod +s /bin/netstat
4.zabbix-server模拟取值
[root@bogon ~]# zabbix_get -s 192.168.81.170 -k tomcat_port[java]
{
  "data":[
    {"{#TOMCAT_PORT}":"5080"},
    {"{#TOMCAT_PORT}":"6080"},
    {"{#TOMCAT_PORT}":"7080"},
    {"{#TOMCAT_PORT}":"8080"},
    {"{#TOMCAT_PORT}":"9080"}
  ]
}

3.3.创建监控模板

1)点击创建模板

配置—模板—创建模板

2)填写模板信息

模版名称:Template Tomcat Auto Discovery

可见的名称:Template Tomcat Auto Discovery

群组:Templates

描述:自动发现tomcat端口并监控

3.4.配置模板

3.4.1.创建应用集

配置—模板—找到我们刚刚建好的模板—应用集—创建应用集

点击创建应用集

名称:Tomcat Auto Discovery

3.4.2.创建自动发现规则

点击自动发现规则—创建

名称:

类型:zabbix客户端

键值:tomcat_port[java]

3.4.3.设置自动发现规则-监控项原型

1)点击监控项原型

2)创建监控项原型

3)填写监控项信息

名称:Tomcat $1 Port 端口检测

键值:net.tcp.listen[{#TOMCAT_PORT}] //由于是端口检测,因此这里要选择net.tcp.listen监控项,[]的值要填写{#TOMCAT_PORT}才能监控

应用集选择刚刚创建的Tomcat Auto Discovery

3.4.3.设置自动发现规则-触发器类型

名称:{HOST.NAME} Tomcat {#TOMCAT_PORT} 端口异常 //这里的{HOST.NAME}就是监控主机的名称 {#TOMCAT_PORT} 这个就是端口号

严重性:严重

表达式:{Template Tomcat Auto Discovery:net.tcp.listen[{#TOMCAT_PORT}].count(2m,0)}>3

这个表达式的含义:当2分钟内tomcat端口检测的结果都是0,并且3次都是这样就触发告警,端口检测触发的值有2个,0表示异常,1表示ok

到此自动发现模板就配置好了

4.主机应用自动发现模板

4.1.应用模板配置—主机—详细信息

点击主机

找到模板一列,选择我们的自动发现模板,点击添加

4.2.加速zabbix-server

[root@bogon ~]# systemctl restart zabbix-server

4.3.查看tomcat端口监控项是否全部添加

点击主机中的监控项,选择Tomcat Auto Discovery应用集即可看到监控项已经全部添加

4.4.查看触发器是否正常点击触发器即可

全部正常,其实触发器名称上的{HOST.NAME}可加可不加

5.再次增加tomcat应用验证是否自动添加监控项

5.1.增加tomcat实例

1.安装tomcat
[root@tomcat ~]# cp apache-tomcat-8.0.49 /application/tomcat6
[root@tomcat ~]# cp apache-tomcat-8.0.49 /application/tomcat7
2.修改端口号
[root@tomcat ~]# cd /application/
[root@tomcat application]# vim tomcat6/conf/server.xml
<Server port="2805" shutdown="SHUTDOWN">
<Connector port="2880" protocol="HTTP/1.1"
<Connector port="2809" protocol="AJP/1.3" redirectPort="8443" />
[root@tomcat application]# vim tomcat7/conf/server.xml 
<Server port="3005" shutdown="SHUTDOWN">
<Connector port="3080" protocol="HTTP/1.1"
<Connector port="3009" protocol="AJP/1.3" redirectPort="8443" />
3.启动tomcat
[root@tomcat ~]# for i in {6..7}
do
sh /application/tomcat${i}/bin/startup.sh
done
4.查看目前的端口
[root@tomcat ~]# sh /etc/zabbix/scripts/tomcat_port.sh java
{
  "data":[
    {"{#TOMCAT_PORT}":"2880"},
    {"{#TOMCAT_PORT}":"3080"},
    {"{#TOMCAT_PORT}":"5080"},
    {"{#TOMCAT_PORT}":"6080"},
    {"{#TOMCAT_PORT}":"7080"},
    {"{#TOMCAT_PORT}":"8080"},
    {"{#TOMCAT_PORT}":"9080"}
  ]
}

5.2.查看监控系统

监控项已经顺利增加

触发器也已经顺利增加

6.关闭其中两个tomcat查看告警

6.1.关闭tomcat

[root@tomcat ~]# ps aux | egrep "tomcat6|tomcat7" | grep -v grep | awk '{print $2}' | xargs -I {} kill -9{}

6.2.查看仪表盘告警

告警成功

目录
相关文章
|
5月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
2月前
|
监控 安全 Linux
在Linux中,zabbix如何监控脑裂?
在Linux中,zabbix如何监控脑裂?
|
1月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
31 2
zabbix agent集成percona监控MySQL的插件实战案例
|
2月前
|
网络协议 Linux 网络安全
在Linux中,如何将本地 80 端口的请求转发到 8080 端口?当前主机 IP 为10.0.0.104。
在Linux中,如何将本地 80 端口的请求转发到 8080 端口?当前主机 IP 为10.0.0.104。
|
2月前
|
网络协议 Ubuntu Linux
在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。
在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。
|
2月前
|
SQL 网络协议 Java
JAVA SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败
JAVA SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败
36 0
|
2月前
|
SQL 监控 分布式数据库
【解锁数据库监控的神秘力量!】OceanBase社区版与Zabbix的完美邂逅 —— 揭秘分布式数据库监控的终极奥秘!
【8月更文挑战第7天】随着OceanBase社区版的普及,企业广泛采用这一高性能、高可用的分布式数据库。为保障系统稳定,使用成熟的Zabbix监控工具对其进行全方位监控至关重要。本文通过实例介绍如何在Zabbix中配置监控OceanBase的方法,包括创建监控模板、添加监控项(如TPS)、设置触发器及图形展示,并提供示例脚本帮助快速上手。通过这些步骤,可以有效监控OceanBase状态,确保业务连续性。
75 0
|
4月前
|
监控 数据库 Docker
Zabbix监控神通数据库教程
**摘要:** 本文介绍了如何使用Docker安装和配置神舟通用数据库,并利用Zabbix进行监控。首先,通过Docker安装数据库镜像,启动容器并映射端口。接着,使用默认凭证连接数据库并验证安装。然后,将数据库的Python模块和库文件复制到主机,并安装Python3.5及相应模块,创建外部检查脚本以实现Zabbix的监控功能。示例展示了查询数据库版本的监控指标配置。最后,提到了监控结果的界面展示,并邀请读者探索更多Zabbix监控技巧。
54 0
Zabbix监控神通数据库教程
|
3月前
|
监控 关系型数据库 应用服务中间件
Linux zabbix监控 软件的安装
Linux zabbix监控 软件的安装
|
5月前
|
分布式计算 DataWorks 监控
DataWorks产品使用合集之在 DataWorks 中, FTP 主机和端口信息如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
54 1

推荐镜像

更多
下一篇
无影云桌面