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模板檔案,重新載入進去。
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的標籤,替換成Tomcat 9500然後儲存,在介面載入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 | 9300 Tomcat Status |
-
| 102 | b58769ff71c16b0126014efdf8f5892c | Tomcat 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值換成新的hash值,是否就可以載入成另外一個新的tomcat埠的xml模板呢?試試吧。
2.3 開始構建新的hash值
思路:先找出原有的xml模板中的所有hash值,將後四位擷取換成tomcat埠號9500。
2.3.1 在linux下用grep命令獲得所有cash值
執行shell命令取得鎖喉hash資料行:
- [root@mysqlvm2 ~]# more cacti_host_template_tomcat_server.xml |grep hash > cacti_hash.xml
-
[root@mysqlvm2 ~]# 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檔案
-
[root@mysqlvm2 ~]#
- cp cacti_host_template_tomcat_server.xml cacti_host_template_tomcat9500_server.xml
(2),寫一個迴圈shell指令碼
-
[root@mysqlvm2 ~]# 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;
- [root@mysqlvm2 ~]#
(3),執行shell命令,生成新的9500模板
[root@mysqlvm2 ~]# 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'
進去 Console-->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 | 9300 Tomcat Status |
-
| 102 | b58769ff71c16b0126014efdf8f5892c | Tomcat Status |
-
+-----+----------------------------------+--------------------+
-
2 rows in set (0.00 sec)
-
-
mysql> SELECT * FROM `data_template` WHERE NAME LIKE \'%tomcat%\';
-
+-----+----------------------------------+--------------------+
-
| id | hash | name |
-
+-----+----------------------------------+--------------------+
-
| 101 | 5a135ee7b52669e39cd51a89a2870f66 | 9300 Tomcat Status |
-
| 102 | b58769ff71c16b0126014efdf8f5892c | Tomcat Status |
-
| 104 | 5a135ee7b52669e39cd51a89a2879500 | 9500 Tomcat Status |
-
+-----+----------------------------------+--------------------+
- 3 rows in set (0.00 sec)
總結:
所有載入的cacti模板檔案中,核心區分點所一個個hash值,如果構造出新的一組hash值,那麼載入後就是新的監控選項。
假如你現在一個web伺服器上又新增了一個9300的tomcat服務,你只需要把我分享的9500埠的xml中的hash末尾9500替換成9300,那麼就又是一個新的xml模板。
以此類推,現在喜歡在一個linux伺服器上搭建mysql多例項,那麼多例項mysql如何在cacti下監控,也可以用本文中類似的辦法構建新的mysql的多埠模板xml檔案來重新載入實現。
Cacti下監控tomcat多埠模板檔案下載地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127697/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Cacti監控Tomcat伺服器實現過程Tomcat伺服器
- Nagios透過check_http監控一臺web應用伺服器上多個tomcat服務iOSHTTPWeb伺服器Tomcat
- Nagios通過check_http監控一臺web應用伺服器上多個tomcat服務iOSHTTPWeb伺服器Tomcat
- cacti監控windows伺服器Windows伺服器
- Jacoco 覆蓋率 監測一臺機器上多個 tomcat 怎麼實現Tomcat
- DIY一個前端監控平臺(上)前端
- linux下cacti監控平臺的搭建Linux
- 搭建Cacti監控
- cacti監控mysqlMySql
- 10 分鐘實現一個自己的伺服器監控器伺服器
- Cacti+Nagios監控平臺完美整合iOS
- cacti監控lighttpdhttpd
- cacti監控tcpconnectionTCP
- cacti批量新增監控
- iftop監控一個埠的網路流量
- shell監控伺服器埠加web飛信報警伺服器Web
- 使用 SNMP 和 Cacti 監控 Linux 伺服器Linux伺服器
- 最受歡迎的Java web應用伺服器之一——Tomcat監控選型及實踐JavaWeb伺服器Tomcat
- Nagios+Cacti監控平臺完美整合部署iOS
- Tomcat內配置多個webapps監聽不同埠TomcatWebAPP
- Cacti0.8.8a監控mysqlMySql
- Cacti 監控 AIX 系統AI
- Cacti監控MySQL實現過程中碰到的問題解彙總MySql
- Cacti安裝磁碟IO監控
- cacti自定義監控指令碼指令碼
- Python實現遠端埠監控例項Python
- 基於 IntersectionObserver 實現一個元件的曝光監控Server元件
- Centos使用Cacti監控你的網路CentOS
- 轉載 使用Cacti監控你的網路(二)- Cacti的安裝
- 跟我一起動手實現Tomcat(一):實現靜態Web伺服器TomcatWeb伺服器
- tomcat下多個埠,多個應用(轉載)Tomcat
- zabbix、cacti、nagios,伺服器監控還有更好的選擇嗎?iOS伺服器
- 如何實現一個IOS網路監控元件iOS元件
- 如何在多臺 Web 伺服器上共享 sessionWeb伺服器Session
- cacti監控(2)正式安裝rrdtoolcacti
- oracle 監聽配置多個埠Oracle
- 配置CACTI監控MySQL資料庫狀態(4)配置cactiMySql資料庫
- nginx多個專案放在不同的tomcat中,共享同一個埠NginxTomcat