用 Cacti 來監控你的系統 – TCP Connection 監控 Round5

2015-06-11 Cacti

因應站台流量越來越大,除了在硬體效能上的監控,也可以抓取 TCP connection 在 cacti 繪製

其實原理和 netstat -tun | grep “192.168.10.10:80” | wc -l 的是一樣的

原文出處

 

在這篇將監控 IP 並且指定 80 port

 

 

Cacti 加入 TCP Connection Templates

Step.1 先下載 TCP Connection Templates 範本 & 執行檔

本站下載

 

Step.2 將 tcp_conns.sh 放到 /var/www/html/cacti/scripts/

$ unzip tcp_conns.zip
$ cd tcp_conns
$ mv tcp_conns.sh /var/www/html/cacti/scripts/
$ chown nginx.nginx /var/www/html/cacti/scripts/tcp_conns.sh

 

Step.3 再來到 Cacti 管理介面將 TCP Connection Templates 檔匯入

到 「Import Templates」→「Import Templates from Local File」→ 選擇檔案匯入。

201506111457

 

Step.4 匯入模板之後就會顯示已新增 Data Input、Data Template、Graph Template

由於我之前已經加入過,所以會變成 update

201506111458

 

 

Step.5 然後到 Devices 去 Create Graphs for this Host

新建剛剛新增的 SNMP – Active HTTP Connections 模板,打勾後按 Create

201506111501

 

Step.6 填入你要監控的 IP 跟 Port,然後建立

201506111654

 

Step.7 過幾分鐘等待 Cacti 畫出圖,搞定!

201506111657

 

 

 

如果一直無法出圖,你也可以手動用 snmpwalk 檢測,查看 tcp_conns.sh 執行的程式

#!/bin/sh
conns=`/usr/bin/snmpwalk -On -c $4 -v 2c $3 .1.3.6.1.2.1.6.13.1.3.$1.$2 | /usr/bin/wc -l`
/bin/echo $conns

 

$1 = 被檢測端的來源 IP,如你要抓取 192.168.0.1 的 tcp 就用 192.168.0.1

$2 = 被檢測端的來源 Port

$3 用於 snmp 通訊的 IP 位置

$4 snmp community

 

範例

$ ./tcp_conns.sh 192.168.0.1 80 192.168.0.1 public

 

此外也可以搜尋 OID 去畫出自己想要的圖

ipMonitor Support Portal :: Mibs

 

 

 

 

Debug:

Q: 無法畫出圖? 開啟 Graphic Template Debug Mode 查看紀錄顯示

RRDTool Says:
ERROR: the RRD does not contain an RRA matching the chosen CF

Ans: 這是由於統計的 CF Type 不同,到 Graph Template Items 將 CF Type 改為 AVERAGE 即可。

 

 

11 Replies to “用 Cacti 來監控你的系統 – TCP Connection 監控 Round5”

  1. Tommas表示:

    請問你的tcp_conns.sh裡面的變數有4個,但是你的範本在輸入時卻只有兩個輸入,IP跟PORT?

    • shazi7804表示:

      hi Tommas

      只需要提供被檢測端的變數數值,$3 , $4 會抓取目前這台主機所建立的模版參數!

  2. Tommas表示:

    請問下目前範本的連結有問題,無法下載,請問你可以再提供新連結嗎?

  3. Tommas表示:

    感謝板主的回覆,不過目前的問題,仍是卡在不出圖,從rra的資料夾看檔案是有數據,但是就是沒辦法出圖,目前仍沒找到解決方法,使用的cacti版本是0.8.8h版本!不知道版大有沒有遇過這樣的問題!?是因為我有安裝 manage plugin 套件的關係嗎?

    • shazi7804表示:

      hi Tommas

      若 rrd 有數值,但是無法出圖的話,這樣你必須檢查 rra/*.rrd 的權限是否正確。

  4. Tommas表示:

    在console > Data Input Methods > SNMP – Get TCP Connections By IP And Port Number of Remote Machine > Input String 的 sh /scripts/tcp_conns.sh 這部分要修改嗎? 我的snmp的密碼是使用 public,那這個部分要修改嗎?$4是寫在範本內容裡面嗎?
    還有預設的tcp_conns.sh
    conns=`/usr/bin/snmpwalk -On -c $4 -v 1 $3 .1.3.6.1.2.1.6.13.1.3.$1.$2 | /usr/bin/wc -l`
    這樣我抓不到值,我更改為以下這樣才能抓到值
    conns=`/usr/bin/snmpwalk -On -c $4 -v 1 $3 .1.3.6.1.2.1.6.13.1.3.$1|grep “.$2 “| /usr/bin/wc -l`

    • shazi7804表示:

      hi Tommas:

      你可以直接使用 snmpwalk 測試

      $ /usr/bin/snmpwalk -On -c pubilc -v 2v localhost .1.3.6.1.2.1.6.13.1.3

      oid 為 .1.3.6.1.2.1.6.13.1.3,你提供的這個用法並沒有錯

      (1) .1.3.6.1.2.1.6.13.1.3.$1 | grep “.$2”
      這個用法是將 $1 帶入的 IP 過濾出來,在使用 grep 過濾出 .80 的 oid

      (2) .1.3.6.1.2.1.6.13.1.3.$1.$2
      這是用法是我很明確的知道我需要哪一個IP與Port

  5. Tommas表示:

    感謝回覆~目前已找到問題且能完整出圖~不知道為什麼,匯入目前網路上分享的很多範本都不正常,連版大提供的範本也是相同問題,撈的到數據但是出不了圖。後來再自行新增Graph Templates 和Data Templates後才能正常出圖,或許是0.8.8h版的問題也說不定!感謝版大耐心回覆~謝謝!

    • shazi7804表示:

      hi Tommas

      恭喜獲得數據,如有更詳細的解決方法也歡迎你分享。

  6. Tommas表示:

    后来好像直接沿用Data Input Methods另外再自行建立Graph Templates 和 Data Templates,才可以出图!

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱