MRTG Perl and Shell Scripts | jehiah.cz 2011-09-03 02:35:32에 작성. 1,548번 읽힘.

MRTG Perl and Shell Scripts | jehiah.cz에는 mrtg 에서 쓸 수 있는 여러종류의 스크립트가 있다. loadavg를 mrtg 에 표현 할 수 있는 방법을 찾다가 알게 되었다. 스크립트 내용은 아래에 한번에 정리해둔다.

mrtg-filesize.sh – 메일 로그가 차지하는 용량을 보여준다.

#!/bin/sh
# Created by Jehiah Czebotar
# http://www.jehiah.com/
#
# This script is licensed under the GPL http://www.gnu.org/copyleft/gpl.html
#
# Date   : January 5, 2003
# File   : mrtg-filesize.sh
# Version: 1.0
#########################
 
###  Sample /etc/mrtg.cfg usage
 
#  Title[server-mail]: Server Mail log size
#  PageTop[server-mail]: Server Mail log size
#  Target[server-mail]: `scripts/mrtg-filesize.sh /var/log/maillog`
#  MaxBytes[server-mail]: 1208032
#  YLegend[server-mail]: Size
#  ShortLegend[server-mail]: Bytes
#  LegendO[server-mail]: Bytes
#  Options[server-mail]: perminute, growright
 
 
l=`ls -l $1 | awk '{print $5}'`
echo $l
echo $l
hostname;
echo "mailsize";

mrtg-loadavg.sh – 서버 로드율 (부하율)을 보여준다.

#!/bin/sh
# Created by Jehiah Czebotar
# http://www.jehiah.com/
#
# This script is licensed under the GPL http://www.gnu.org/copyleft/gpl.html
#
# Date   : January 5, 2003
# File   : mrtg-loadavg.sh
# Version: 1.0
#########################
 
 
#### Sample /etc/mrtg.cfg usage
 
#  Target[server-cpu]: `scripts/mrtg-loadavg.sh`
#  MaxBytes[server-cpu]: 500
#  Title[server-cpu]: server CPU Load (5 minute average)
#  YLegend[server-cpu]: Load*100
#  ShortLegend[server-cpu]: load
#  Legend1[server-cpu]: CPU Load (x 100)
#  Legend2[server-cpu]:
#  LegendI[server-cpu]: 1min load
#  LegendO[server-cpu]: 5min load
#  PageTop[server-cpu]: server 5-minute average CPU Load
#  Options[server-cpu]: gauge,nopercent,integer,growright
 
awk </proc/loadavg '{print (100*$1) "\n" (100*$2) }'
hostname;
echo "loadavg";

mrtg-numconns.sh – TCP커넥션 수를 보여준다.

#!/bin/sh
# Created by Jehiah Czebotar
# http://www.jehiah.com/
#
# This script is licensed under the GPL http://www.gnu.org/copyleft/gpl.html
#
# Date   : January 5, 2003
# File   : mrtg-numconns.sh
# Version: 1.0
#########################
 
### Sample /etc/mrtg/mrtg.cfg usage
#  Title[server-numconns]: Server TCP connections
#  Target[server-numconns]: `scripts/mrtg-numconns.sh`
#  PageTop[server-numconns]: TCP connections
#  MaxBytes[server-numconns]: 1000
#  YLegend[server-numconns]: Connections
#  ShortLegend[server-numconns]: connections
#  LegendO[server-numconns]: Connections
#  Options[server-numconns]: gauge, growright
 
 
if [ "$1" = "" ] ; then
	O=`/bin/netstat -nt | fgrep ESTABLISHED | wc -l`
	label='numconns'
else
	O=`/bin/netstat -nt | fgrep ESTABLISHED | fgrep "$1" | wc -l`
	label="$1"
fi
echo $O
echo $O
hostname
echo "$label"

mrtg-uptime.pl – 업타임을 보여준다.

#!/usr/bin/perl
# Created by Jehiah Czebotar
# http://www.jehiah.com/
#
# This script is licensed under the GPL http://www.gnu.org/copyleft/gpl.html
#
# Date   : January 5, 2003
# File   : mrtg-uptime.pl
# Version: 1.0
#########################
 
### Sample /etc/mrtg/mrtg.cfg file
 
#  Target[server-uptime]: `scripts/mrtg_uptime.pl`
#  Colours[server-uptime]: LIGHT BLUE#7AAFFF,BLUE#1000FF,DARK GREEN#006000,VIOLET#FF00FF
#  Options[server-uptime]: gauge,noinfo, nopercent, growright, unknaszero
#  MaxBytes[server-uptime]: 200
#  Title[server-uptime]: server uptime
#  YLegend[server-uptime]: Days
#  ShortLegend[server-uptime]: Days
#  Legend1[server-uptime]: Uptime
#  Legend2[server-uptime]:
#  LegendI[server-uptime]:
#  LegendO[server-uptime]: uptime :
#  PageTop[server-uptime]: Uptime in days
 
$uptime = `uptime`;
$uptime =~ /up (.*?) day/;
$up = int($1);
 
print "$up\n";
print "$up\n";
print "\n"; #hostname should be printed on 3rd line
print "uptime\n"; #

마우스 포인트 커뮤니케이터 – mmunicater 2011-09-02 17:00:27에 작성. 1,505번 읽힘.

신기한 웹에 대한 자료를 많이 올려주시는 firejune님의 마우스 포인트 커뮤니케이터 – Smails를 보고 나도 jQuery와 Socket.io로 제작을 해보았다. 최대한 브라우저 자원을 효율적이게 사용하기 위해서 가로세로 10픽셀 이하의 작은 사각형으로 유저를 표현한다. 색상은 socket id 로 구분 짓는다. 한사람에 대해서 고유한 색상이 정해지지는 않는 방식이기에 이부분은 조금 아쉬운 부분이 있다.

예전에 socket.io 로 채팅방이라는 첫작품을 만든 적이 있는데, 사용자수가 수십명을 넘어가니 상당한 서버 성능 저하가 있었다. 그땐 아마 내가 코딩을 잘못 했기 때문에 그랬던 것 같고, 이번에는 정말로 제대로된 nodejs 의 성능을 테스트 해보기 위해 만들었다. 현재 운영중인 다양한 사이트에 적용한 상태이다. 이 블로그에도 현재 이 게시물에 대해서만 적용이 되어 있다.

반응하는 이벤트

현재 마우스 이동, 마우스Down, 마우스Up 에 대해서 자료를 받고 전송시켜준다.

성능 이슈

마우스 이동시에 바로 emit 해주지 않고 일정 시간마다 내 마우스 좌표를 emit 해준다. 처음에는 마우스 이동시마다 emit 했기 때문에 사람이 늘어날수록 자료 교환량이 엄청나게 증가했다. mousemove 이벤트가 1초에 수십번 발생할 수 있었기 때문이다. 물론 다른 포인터들의 업데이트도 역시 받는건 실시간으로 받지만 업데이트는 최대한 자바스크립트 계산을 줄이기 위해 일정 간격마다 업데이트를 해준다.

호환 목록

- Google Chrome
- Apple Safari
- Internet Explorer 7, 8 (9는 미테스트)

데모

현재 이 페이지나 http://mmunicater.sock.io/에서 볼 수 있다.