Cacti监控一台Web服务器上多个Tomcat端口的实现

因为一台web应用服务器上面安装了多台tomcat,有多个端口,比如默认的8080,还有后续追加的9100,9300,9500等等。一个cacti_host_template_tomcat_server.xml模板只能指定监控一个tomcat服务端口。

因此如果想要监控一台web服务器上的多个tomcat服务器,那么就必须另外想办法,按照一个host上面一个模板监控一个tomcat服务来说的话,要想在一个host上面监控多个tomcat服务就需要构建多个模板xml文件。目前想到2种方法:

(1),在cacti的web页面上一步步点击按钮操作添加新的tomcat端口监控选项。

(2),构建一个新的xml模板文件,重新加载进去。

准备工作:

Cacti监控Tomcat服务器实现过程:http://blog.csdn.net/mchdba/article/details/29372347

Cacti使用安装详解: http://blog.csdn.net/mchdba/article/details/27120605

1 人工在web界面添加多tomcat端口监控选项

看到cacti服务页面有Add按钮,可以一步步添加模板,所以首先在界面上手动添加另外一个tomcat 9500模板,大概步骤如下所示:

1.1 先建Data Input Source

Data Input Method 一项选择 step1建立的Tomcat 9500 Status


?

1.2 建立 Data Tempate

在Data Input Method 一项选择 step 1建立的Tomcat 9500 Status

?

在这里要特别注意 Data Source Type的选择,是Count还是GAUGE,不要选错,选错了,就是NAN值,图上出不来数据。

【PS】:这里有14个Data Source Item,手动一个个确实比较麻烦,而且一个端口需要建一个,一个端口N个服务,一个服务14个端口,如果都是手工一个个添加过来,那就到猴年马月了,在添加的过程中,还要注意一些下拉选项,很消耗时间和精力。

1.3 建立Data Source


?点击Create 按钮,下一步:

看到有提示准备生成<path_rra>/web-9_bytes_received_568.rrd的rrd绘图文件,点击Save按钮保存,看到已经建立好了:

1.4 建立Graph Template

1.5 建立Graph Tempate

之后,还需要建立显示图画颜色等的Item以及Item Input。

(1)     点击当前页面的Graph Template Items [edit: 9500 Tomcat – Connection Rate] 标题栏后面的Add按钮,参考已经有的Tomcat – Connection Rate来创建一模一样的item。

(2)     点击 Graph Item Inputs标题栏后面的Add按钮,参考已经有的Tomcat – Connection Rate来添加数据来源选项。

(3)     确保所有的选项值跟原有的一样,特别是Unit Grid Value (--unit/--y-grid)的值为0,之后点击Save按钮保存。

1.6 进去Graph Management界面,创建Graph图,如下所示:

点击Create之后,进去选择好Graph Item Fields,打开Debug Mode模式,就可以看到RRDTool Commands以及出来的debug图片数据,如下所示:

然后,去Graphs界面,查看创建的rate图,如下9500端口的数据出来了:

这种办法虽然笨拙耗时,但是总算一步步来,还是可以添加完成的。

2,看到手动在web界面添加cacti的tomcat模板文件,太耗时太麻烦,所以另选途径再构造一份cacti下的tomcat模板文件。

2.1 直接替换tomcat字符串在后面加9500端口

想要弄亲自构建另外一个tomcat监控的模板文件,可以以现在的cacti_host_template_tomcat_server.xml为基础来实现。打开模板文件,可以看到很多标签,先检索到带Tomcat的标签,然后保存,在界面加载Import成功后,Console --> Collection Methods --> Data Input Methods里面还是只有一个选项9500 Tomcat Status,原来的Tomcat Status没有了,也就是说原来的Tomcat Status被后来的9500的模板xml直接覆盖了,这一种方式走不通。

2.2 继续从后台的cacti数据库里面的数据进行研究

研究tomcat的模板配置文件,进去cacti后台数据库的模板表里,查看导入的tomcat模板表:

mysql> SELECT * FROM `data_template` WHERE NAME LIKE ‘%tomcat%‘;

+-----+----------------------------------+--------------------+

| id  | hash                             | name               |

+-----+----------------------------------+--------------------+

| 101 | 5a135ee7b52669e39cd51a89a2870f66 | 9500 Tomcat Status |

| 102 | b58769ff71c16b0126014efdf8f5892c | Tomcat 9500 Status |

+-----+----------------------------------+--------------------+

2 rows in set (0.00 sec)

mysql>

5a135ee7b52669e39cd51a89a2870f66在xml文件中存在,而且是

<hash_0100125a135ee7b52669e39cd51a89a2870f66>

<name>9500 Tomcat Status</name>

<ds>

……

其中’hash_01’是标示,中间的’0012’是cacti版本号码,在后面的一系列散乱的字符串’5a135ee7b52669e39cd51a89a2870f66’就是中的后面数字。

分析到这里,想到决定是否新加一个模板的关键应该就是这些hash数据,如果把模板xml里面的hash值换成新的,是否就可以加载成另外一个新的tomcat端口的xml模板呢?试试吧。

2.3 开始构建新的hash值

思路:先找出原有的xml模板中的所有hash值,将后四位截取换成tomcat端口号9500,

2.3.1 在linux下用grep命令获得所有cash值

[[email protected] ~]# more cacti_host_template_tomcat_server.xml |grep hash > cacti_hash.xml

这里的cacti_hash.xml里面包含的内容如下所示:

[[email protected] ~]# more cacti_hash2.xml |more

<hash_020012b1ced03706b799b82f1d62146d959500>

<graph_templates>hash_0000121df1e862da7c09e91e3d9ccc3f359500|hash_0000123810995e1194c890f50a09388efc9500|hash_000012cf60b10d60b07078fe1429a0575c9500|hash_000012892489f6e4de56c

7762e90d52cc39500</graph_templates>

</hash_020012b1ced03706b799b82f1d62146d959500>

<hash_0000121df1e862da7c09e91e3d9ccc3f359500>

<hash_100012aa019bdbe34704dbd5d57a3bccef9500>

<hash_1000121690bcb932496d12d6c31c1614799500>

<task_item_id>hash_08001217cef337fc98ed9edbf507407eb19500</task_item_id>

<gprint_id>hash_060012e9c43831e54eca8069317a2ce8c69500</gprint_id>

</hash_1000121690bcb932496d12d6c31c1614799500>

…..

看到其中还有许多<task_item_id> </gprint_id >等等之类的标签,直接用shell命令

:%s/<task_item_id>//以及 :%s/<\/ gprint _id>//之类的替换命令删除掉,之后所有的xml标签都替换掉了,只剩下所有的hash值。这里注意对于几个用|符号链接起来的hash值,需要单独去掉|符号再换行,确保一个hash值是一行。

最终得到一行一行的hash值的cacti_hash.xml文件。

2.3.2 遍历hash值文件,生成新的hash值xml模板。

原理是写shell脚本遍历cacti_hash.xml文件,遍历hash值,然后去原来的模板文件里面cacti_host_template_tomcat9500_server.xml找到对于的hash值,将后4位替换成tomcat端口号9500,shell命令如下所示:

(1),Copy一个副本xml文件

[[email protected] ~]#

cp cacti_host_template_tomcat_server.xml cacti_host_template_tomcat9500_server.xml

(2),写一个循环shell脚本

[[email protected] ~]# more cacti2.sh

for i in `cat cacti_hash.xml`

do

# echo $i;

port=‘9500‘;

new_hash=${i:0:39}$port;

# echo $new_hash;

sed -i "s/$i/$new_hash/" cacti_host_template_tomcat9500_server.xml

done;

[[email protected] ~]#

(3),执行shell命令,生成新的9500模板

[[email protected] ~]# sh cacti2.sh

2.4 copy出行的9500端口文件,在界面加载

加载完成后,就会在Console --> Collection Methods --> Data Input Methods里面看到新添加上的9500 Tomcat Status选项,

记得点击9500超链接进去,把Input String换成9500端口的访问连接,这样这个9500端口监控所获取的所有数据都是从9500端口的tomcat服务器上而来,如下图所示:

在Console --> Templates --> Data Templates/Graph Templates上面也可以看到新添加上的9500 Tomcat Status选项,如下图所示:

OK,现在就可以去Console --> Create --> Management --> Graph Management添加tomcat另外一个9500端口的监控选项,点击按钮的时候,记得在Selected Graph Template下拉选框上选择9500标示的模板,添加完后如下所示:

2.5,报错处理

有报错如下:

RRDTool Says:

ERROR: Could not parse line ‘GPRINT::MAX:Maximum\:%8.2lf %s\n‘

进去-->Graph Templates

>    9500 Tomcat - Connection Rate --> Data Source [error_count] --> Item #4: GPRINT (MAX) 打勾选上,如下所示:

?

去Graphs窗口查看效果,在同一个web-9服务器上,一个基本端口8080一个9500端口的图像都出来了,如下所示:

?

最后在进入后台cacti数据库去查看下我们的验证

mysql> SELECT * FROM `data_template` WHERE NAME LIKE ‘%tomcat%‘;

+-----+----------------------------------+--------------------+

| id  | hash                             | name               |

+-----+----------------------------------+--------------------+

| 101 | 5a135ee7b52669e39cd51a89a2870f66 | 9500 Tomcat Status |

| 102 | b58769ff71c16b0126014efdf8f5892c | Tomcat 9500 Status |

+-----+----------------------------------+--------------------+

2 rows in set (0.00 sec)

mysql> SELECT * FROM `data_template` WHERE NAME LIKE ‘%tomcat%‘;

+-----+----------------------------------+--------------------+

| id  | hash                             | name               |

+-----+----------------------------------+--------------------+

| 101 | 5a135ee7b52669e39cd51a89a2870f66 | 9500 Tomcat Status |

| 102 | b58769ff71c16b0126014efdf8f5892c | Tomcat 9500 Status |

| 104 | 5a135ee7b52669e39cd51a89a2879500 | 9500 Tomcat Status |

+-----+----------------------------------+--------------------+

3 rows in set (0.00 sec)

看id为101以及104的hash值和name描述,hash值后四位从0f66变成9500了。

总结:

所有加载的cacti模板文件中,核心区分点所一个个hash值,如果构造出新的一组hash值,那么加载后就是新的监控选项。
?

假如你现在一个web服务器上又添加了一个9300的tomcat服务,你只需要把我分享的9500端口的xml中的hash末尾9500替换成9300,那么就又是一个新的xml模板。

以此类推,现在喜欢在一个linux服务器上搭建mysql多实例,那么多实例mysql如何在cacti下监控,也可以用本文中类似的办法构建新的mysql的多端口模板xml文件来重新加载实现。

 cacti下监控tomcat多端口模板文件下载地址:http://download.csdn.net/detail/mchdba/7531125

Cacti监控一台Web服务器上多个Tomcat端口的实现

时间: 2024-10-10 06:19:13

Cacti监控一台Web服务器上多个Tomcat端口的实现的相关文章

Nagios通过check_http监控一台web应用服务器上多个tomcat服务

如何在nagios监控tomcat,是一个比较简单又复杂的事情,简单是因为如果只监控web应用服务器的一个tomcat服务是否正常运行,那么比较简单:如果要监控tomcat的其他比如连接数比如jvm内存使用率等就比较复杂,google没有适合的监控脚本:如果要监控web应用上面的多个tomcat服务器,而且很多tomcat服务都是跳转式的,那就需要多做很多事情. 一般通常都使用tcp tomcat端口的方式,不过这有一个bug就是tomcat假死的情况下,tcp 端口是OK的,但是tomcat里

一台WEB服务器上同时运行多个网站的三种方法

实验环境: 在做实验之前我们首先准备一下实验环境,首先在虚拟机上准备一台原始的干净的Windows Server 2008 R2的操作系统作为WEB服务器,ip地址设为192.168.100.10然后安装web服务器的步骤:1.首先在服务器管理器中添加角色,在服务器角色中选择Web服务器(IIS)角色,如图所示:2.IIS7.5被分割了40多个不同功能的模块,管理员可以根据需要定制安装相应的功能模块,这样可以使Web网站的受***面减少,安全性和性能大幅度提高.所以在"选择角色服务的步骤中采用默

记一台web服务器被***处理过程

某天收到电信网监的邮件通知,内容是我们一个网站被***,有个链接显示"×××"信息.命令立即修复.解决过程:1.查看服务器,发现服务器根目录下多出show1.php,show2,php.info.php三个文件,内容相同.内容如下:<?phpset_time_limit(0);$url1 = $_SERVER['PHP_SELF']; $name= substr($url1 ,strrpos($url1 ,'/')+1 );chmod($name,0444);header(&qu

两台web服务器做文件共享,负载均衡

服务器环境:httpd.php.MySQL.DNS.NFS共配置4台虚拟机,web服务各一台,PHP.DNS一台,MySQL.NFS一台. 网段使用172.16.0.0/16 注:httpd,php,DNS服务在此前的博客中有详细说明,这里就不在详细演示,在此前的基础上追加安装,MySQL,NFS 一.安装mysql-5.5.33 下载mysql-5.5.33-linux2.6-x86_64.tar.gz软件包 1.准备数据存放的文件系统 因为数据总是在动态增长的,所以我们要创建一个逻辑卷来保存

heartbeat 配置两台web服务器高可用集群案例

通过heartbeat 配置两台web服务器高可用集群案例: 拓扑: web1:192.168.0.101 hostname: web1.example.com web2:192.168.0.102 hostname:web2.example.com vip:192.168.0.254 nfs服务器:192.168.0.100(存放web页面) 注意: 1主机名要与uname -n 保持一致 2.web1与web2主机的date时间保持同步 3.web1与web2,ssh双机互信通信 4.关闭i

多台web服务器之间共享session

常见的几种方法如下: 1. 写客户端Cookie的方式 当用户登陆成功以后,把网站域名.用户名.密码.token.session有效时间全部采用cookie的形式写入到客户端的cookie里面,如果用户从一台Web服务器跨越到另一台服务器的时候,我们的程序主动去检测客户端的cookie信息,进行判断,然后提供对应的服务,当然,如果cookie过期,或者无效,自然就不让用户继续服务了.当然,这种方法的弊端就不言而喻了,比如客户端禁用了cookie或者cookie被黑客窃取了呢? 2. 服务器之间S

利用nfs共享实现多台web服务器的负载均衡(转载,没实现过)

一.实验目的 本实验主要通过nfs解决多台web服务器负载均衡的问题和数据同步的问题. 二.实验环境: 如上拓扑图所示,在server1上安装有mysql数据库,server2和server3通过nfs共享server1上的mysql数据库,同时,将discuz网站的源码放在server1上,即:server1只运行mysql,而server2和server3只运行php和apache.这样可以保证用户不管访问server2或者server3都可以得到相同的结果. 三.实验步骤 1.server

ASP.NET 4.0尚未在 Web 服务器上注册 解决方法

ASP.NET 4.0尚未在 Web 服务器上注册 解决方法 使用VS2010创建web应用程序时出现如下提示ASP.NET 4.0尚未在 Web 服务器上注册.为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 4.0,按 F1 可了解更多详细信息 解决方法: 首先设置IIS应用程序池 net framework版本为4.0 然后  开始->所有程序->附件->鼠标右键点击“命令提示符”->以管理员身份运行->%windir%\Microsoft.

HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面

在发布系统的过程中,曾经遇到过这样的问题,由于 Web 服务器上的"ISAPI 和 CGI 限制"列表设置,无法 提供您请求的页面. 错误详情如下: 解决方法: 找到IIS的根节点->右侧"ISAPI和CGI限制"->把禁止的ASP.Net版本项设置为允许. 如下图 总结:通过这个这个问题,我想到了一点:虽然解决了问题,但知其然却不知其所以然,很多情况下都是这样的, 虽然能够解决问题,但有的时候由于各方面条件的限制而不知道为什么,不知道这样下去有没有问题