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.查看仪表盘告警

告警成功

目录
相关文章
|
1月前
|
监控 网络协议 Unix
Linux命令-nc(端口监控、文件传输、反弹shell等)
Linux命令-nc(端口监控、文件传输、反弹shell等)
205 0
|
6月前
|
关系型数据库 MySQL 应用服务中间件
【JavaWeb学习】—如何修改Tomcat的端口号(十)
【JavaWeb学习】—如何修改Tomcat的端口号(十)
|
7月前
|
数据采集 Prometheus 监控
监控利器之Prometheus基于Blackbox_exporter监控服务的端口
监控利器之Prometheus基于Blackbox_exporter监控服务的端口
310 0
|
11天前
|
前端开发 Java 应用服务中间件
linux本地检测如何tomcat是否启动成功tomcat端口检测
linux本地检测如何tomcat是否启动成功tomcat端口检测
|
1月前
|
分布式计算 DataWorks 监控
DataWorks产品使用合集之在 DataWorks 中, FTP 主机和端口信息如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
22 1
|
7月前
|
网络协议 应用服务中间件 Linux
LInux之在同一Tomcat下使用不同的端口号访问不同的项目
LInux之在同一Tomcat下使用不同的端口号访问不同的项目
69 0
|
1月前
|
安全 Linux 网络安全
Linux【安全 01】云服务器主机安全加固(修改SSHD端口、禁用登陆失败的IP地址、使用密钥登录)
Linux【安全 01】云服务器主机安全加固(修改SSHD端口、禁用登陆失败的IP地址、使用密钥登录)
208 1
|
1月前
原生表格纵向滚动条
原生表格纵向滚动条
|
1月前
|
监控 网络协议 Linux
linux(三十五)网络状态和端口监控 netstat
linux(三十五)网络状态和端口监控 netstat
44 1
|
1月前
|
Java 关系型数据库 MySQL
【Linux】jdk、tomcat、MySQL环境搭建的配置安装,Linux更改后端端口
【Linux】jdk、tomcat、MySQL环境搭建的配置安装,Linux更改后端端口
76 0

推荐镜像

更多