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

告警成功

目录
相关文章
|
4月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
4月前
|
Arthas 监控 Java
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
219 2
|
5月前
|
数据采集 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
88 4
|
5月前
|
监控 关系型数据库 机器人
小白带你学习linux的监控平台zabbix
小白带你学习linux的监控平台zabbix
142 0
|
7月前
|
监控 关系型数据库 MySQL
企业实战(8)CentOS 6.8安装Zabbix-agent 5.0监控主机性能与Mysql数据库
企业实战(8)CentOS 6.8安装Zabbix-agent 5.0监控主机性能与Mysql数据库
|
1月前
|
监控 网络协议 Unix
centos7 zabbix安装客户端agent -配置监控远程主机 在需要监控的电脑上安装
centos7 zabbix安装客户端agent -配置监控远程主机 在需要监控的电脑上安装
22 0
|
2月前
|
数据采集 监控 数据库
请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
【2月更文挑战第25天】请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
26 2
|
7月前
|
监控
zabbix如何添加自定义监控项
zabbix如何添加自定义监控项
277 0
|
3月前
|
监控 Cloud Native 关系型数据库
使用 Grafana 统一监控展示 - 对接 Zabbix
使用 Grafana 统一监控展示 - 对接 Zabbix
|
5月前
|
监控 Docker 容器
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
269 0

推荐镜像

更多