Log-local.sh — получение и запись в файл локальной статистики

#!/bin/bash

# Script for logging current system status:

# - number of processes

# - RX and TX bytes over venet0 network interface

# Log to this file:

LOG_FILE=/var/www/stat/local.log

# Timestamp:

TS=`date '+%Y-%m-%d %H:%M:%S'`

# Process number

PROCNUM=`ps aux | wc -l`

PROCNUM=$(($PROCNUM-1))

# netstat info

NETBYTES=`netstat -i | grep '^venet0[[:blank:]]' | awk '{print "RX ",$4,"bytes, TX ",$8,"bytes."}'`

# Log all to the file

echo "$TS => Procs: $PROCNUM, $NETBYTES" >> "$LOG_FILE"

#------------------------------------------------------------

Log-snmp.sh — получение и запись в файл SNMP-статистики.

#!/bin/bash

# Script for logging current SNMP information:

# - RX and TX bytes over some network interface

# Log to this file:

LOG_FILE=/var/www/stat/snmp.log

# Network interface number:

N=8

# SNMP host

HOST=192.168.222.100

# SNMP community

COMMUNITY=public

# MIBS

MIB1="IF-MIB::ifDescr.$N"

MIB2="IF-MIB::ifInOctets.$N"

MIB3="IF-MIB::ifInUcastPkts.$N"

MIB4="IF-MIB::ifOutOctets.$N"

MIB5="IF-MIB::ifOutUcastPkts.$N"

#############################

# Timestamp:

TS=`date '+%Y-%m-%d %H:%M:%S'`

# snmp info

RES=''

for MIB in $MIB1 $MIB2 $MIB3 $MIB4 $MIB5; do

LINE=`snmpget -c $COMMUNITY -v 1 $HOST $MIB`

NAME=`echo $LINE | sed "s/^IF-MIB::\([[:alnum:]]\+\).*/\1/"`

VALUE=`echo "$LINE" | sed "s/^IF-MIB::[[:alnum:]]\+\.$N = [[:alnum:]]\+: //"`

RES="$RES $NAME:$VALUE"

done

# Log all to the file

echo "$TS => $RES" >> "$LOG_FILE"

#------------------------------------------------------------

Запуск скриптов получения данных предполагается делать раз в минуту для получения локальной информации, и раз в две минуты — для получения информации с коммутатора через SNMP.

Для вывода данных по запросам браузера предлагается установить в систему для запуска с помощью lighttpd следующие скрипты:

Cgi-local.sh — отображение локальной статистики.

#!/bin/bash

# Simple CGI script

echo Content-type: text/plain

echo ""

LOG_FILE=/var/www/stat/local.log

# Show NUM lines

if [ -n "$QUERY_STRING" ]; then

NUM=$QUERY_STRING

else

if [ -n "$1" ]; then

NUM=$1

else

NUM=10

fi

fi

echo "Current statistic:"

tail -n $NUM "$LOG_FILE" | sort -r

#------------------------------------------------------------


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: