關於cacti一個腳本的問題(已解決)
最近開始使用cacti做為流量監控用,得到了不少高手的幫助,但目前碰到一個問題,很奇怪,希望論壇里的朋友幫我看看是什麼問題.
cacti版本為0.86j中文漢化版,系統是linux紅帽子.
在cacti論壇里找到TCP Connection Status腳本,http://forums.cacti.net/about12787.html
在cacti用戶許可權下運行:
$ perl /usr/local/apache/htdocs/cacti/scripts/lvm_netstat_tcp.pl 10.1.4.3 2 'public' 161 500
established:236 listen:0 timewait:695 timeclose:0 finwait1:1 finwait2:56 synsent:0 synrecv:0 closewait:0
顯示是可以得到數據信息的.
但在cacti日誌上卻得不到任何數據.
12/12/2007 03:05:04 PM - CACTID: Poller Host DS SCRIPT: perl /usr/local/apache/htdocs/cacti/scripts/lvm_netstat_tcp.pl 10.1.4.3 2 'public' 161 500, output: established:0 listen:0 timewait:0 timeclose:0 finwait1:0 finwait2:0 synsent:0 synrecv:0 closewait:0
所以得到的圖形為如圖所示,說明數據是可以寫入rrd,但為何用日誌上得不到任何數據呢?
請cacti高手幫幫忙,謝謝~~
[ 本帖最後由 恍若如夢 於 2007-12-19 14:54 編輯 ]
《解決方案》
請問你的中文是真么實現的,cacti默認是英文的圖?呵呵路過~~
《解決方案》
rrdtool在1.25之後就支持中文了,網上的文章也挺多,找找就行~
《解決方案》
同問該問題,關注中!!!希望高手來解答原因!
《解決方案》
不知道你用的是net-snmp幾的版本?
《解決方案》
問題同上,望解決
《解決方案》
命令行執行沒有問題
在cron里執行有問題就很有可能是環境變數的問題
會不會是要吧perl改成/usr/bin/perl呀
《解決方案》
已解決,foole說得沒錯,和變數有關係.加入后可以了~
《解決方案》
請教一下,我在系統內運行該腳本提示snmp版本有問題,請問需要對該腳本做過什麼相應的修改嗎?
萬分感謝
已經用了他修改2c問題后的腳本了,但還是有問題,如下:#!/usr/bin/perl -w
# --------------------------------------------------
# ARGV = <hostname> required
# ARGV = <snmp version> required
# ARGV = <snmp community> required
# ARGV = <snmp port> required
# ARGV = <snmp timeout> required
# --------------------------------------------------
$in_hostname = $ARGV if defined $ARGV;
$in_version = $ARGV if defined $ARGV;
$in_community = $ARGV if defined $ARGV;
$in_port = $ARGV if defined $ARGV;
$in_timeout = $ARGV if defined $ARGV;
my $_cmd = "snmpnetstat -v $in_version -c $in_community -t $in_timeout -n -P tcp $in_hostname:$in_port";
# usage notes
if (
( ! defined $in_hostname ) ||
( ! defined $in_version ) ||
( ! defined $in_community ) ||
( ! defined $in_port ) ||
( ! defined $in_timeout )
) {
print "usage:\n\n
$0 <host> <snmp version> < snmp community> <snmp port> <snmp timeout>\n\n";
exit;
}
if ($in_version == 2)
{
$in_version = "2c";
}
my @_output = `$_cmd`;
my $_estab = 0;
my $_listen = 0;
my $_timewait = 0;
my $_timeclose = 0;
my $_finwait1 = 0;
my $_finwait2 = 0;
my $_synsent = 0;
my $_synrecv = 0;
my $_closewait = 0;
#print "$_output\n";
foreach ( @_output ) {
#print $_;
$_estab++ if /ESTABLISHED/;
$_listen++ if /LISTEN/;
$_timewait++ if /TIMEWAIT/;
$_timeclose++ if /TIMECLOSE/;
$_finwait1++ if /FINWAIT1/;
$_finwait2++ if /FINWAIT2/;
$_synsent++ if /SYNSENT/;
$_synrecv++ if /SYNRECV/;
$_closewait++ if /CLOSEWAIT/;
}
#
print "established:$_estab listen:$_listen timewait:$_timewait timeclose:$_timeclose finwait1:$_finwait1 finwait2:$_finwait2 synsent:$_synsent synrecv:$_synrecv closewait:$_closewait";perl /usr/local/apache/htdocs/cacti/scripts/lvm_netstat_tcp.pl 10.11.1.1 2 'public' 161 500
Invalid version: 2
Usage: snmpnetstat hostname
NET-SNMP version: 5.1.2
-v SNMP version
-V display version number
-c community specify community name
-t timeout SNMP packet timeout (seconds)
-i show interfaces with packet counters
-o show interfaces with octet counters
-r show routing table
-s show general statistics
-n show IP addresses, not names
-a show sockets in LISTEN mode too
-P proto show only details for this protocol
-I interface show only this interface
-d dump packets
-Ddebugspec
established:0 listen:0 timewait:0 timeclose:0 finwait1:0 finwait2:0 synsent:0 synrecv:0 closewait:0
[ 本帖最後由 mydlss 於 2008-2-27 11:34 編輯 ]
《解決方案》
又重新看了一下那個帖子
發現1樓的那個腳本是for windows的
第二頁有一段for linux的修改過的腳本
#!/usr/bin/perl -w
# --------------------------------------------------
# ARGV = <hostname> required
# ARGV = <snmp version> required
# ARGV = <snmp community> required
# ARGV = <snmp port> required
# ARGV = <snmp timeout> required
# --------------------------------------------------
$in_hostname = $ARGV if defined $ARGV;
$in_version = $ARGV if defined $ARGV;
$in_community = $ARGV if defined $ARGV;
$in_port = $ARGV if defined $ARGV;
$in_timeout = $ARGV if defined $ARGV;
# if ($in_version == 2)
#{
# $in_version = "2c";
#}
if ($in_version eq "2")
{
$in_version = "2c";
}
my $_cmd = "snmpnetstat -v $in_version -c $in_community -t $in_timeout -n -P tcp $in_hostname:$in_port";
#my $_cmd = "snmpnetstat -v $in_version -c $in_community -t $in_timeout -Cn -Cp tcp $in_hostname:$in_port"; 這裡linux下參數不認,用回上面老的命令
# usage notes
if (
( ! defined $in_hostname ) ||
( ! defined $in_version ) ||
( ! defined $in_community ) ||
( ! defined $in_port ) ||
( ! defined $in_timeout )
) {
print "usage:\n\n
$0 <host> <snmp version> < snmp community> <snmp port> <snmp timeout>\n\n";
exit;
}
my @_output = `$_cmd`;
my $_estab = 0;
my $_listen = 0;
my $_timewait = 0;
my $_timeclose = 0;
my $_finwait1 = 0;
my $_finwait2 = 0;
my $_synsent = 0;
my $_synrecv = 0;
my $_closewait = 0;
#print "$_output\n";
foreach ( @_output ) {
#print $_;
$_estab++ if /ESTABLISHED/;
$_listen++ if /LISTEN/;
$_timewait++ if /TIMEWAIT/;
$_timeclose++ if /TIMECLOSE/;
$_finwait1++ if /FINWAIT1/;
$_finwait2++ if /FINWAIT2/;
$_synsent++ if /SYNSENT/;
$_synrecv++ if /SYNRECV/;
$_closewait++ if /CLOSEWAIT/;
}
#
print "established:$_estab listen:$_listen timewait:$_timewait timeclose:$_timeclose finwait1:$_finwait1 finwait2:$_finwait2 synsent:$_synsent synrecv:$_synrecv closewait:$_closewait";
現在版本錯誤不報了,但新的問題是,執行了很長時間都無任何反應