collectd
| collectd | |
|---|---|
| Original author(s) | Florian Forster |
| Initial release | July 8, 2005 |
| Stable release | 5.8.0
/ November 18, 2017[1] |
| Written in | C |
| Operating system | Any Unix-like |
| Available in | English |
| Type | Capacity planning |
| License | MIT License & GNU General Public License, version 2 |
| Website | collectd |
collectd는 시스템 정보를 모우고, 전달하고, 저장하는 데몬입니다. 주로 시스템의 성능 정보와 디스크, 메모리, 그리고 네트워크 사용량 등을 모우는데 사용하고 있고, 수 많은 플럭-인을 통해서 다른 원천으로부터 정보를 모울 수 있습니다. 이 소프트웨어 목록은 collectd가 수집한 정보를 읽어, 화면에 표시해 주고 분석해주는 것들입니다.
Install Collectd Service
우분투에서 지원하는 패키지라 설치가 쉽습니다.
- sudo apt install collectd
The following NEW packages will be installed: ca-certificates-java collectd collectd-core default-jre-headless libconfuse-common libconfuse0 libdevmapper-event1.02.1 libesmtp6 libftdi1 libganglia1 libhiredis0.13 liblvm2app2.2 libmodbus5 liboping0 libow-3.1-1 libowcapi-3.1-1 libprotobuf-c1 librabbitmq4 librdkafka1 libserialport0 libsigrok2 libtokyocabinet9 libtokyotyrant3 libupsclient4 libvarnishapi1 libzip4 openjdk-8-jre-headless owfs-common
Install Collectd-Web and Dependencies
Collectd-web이 정상적으로 동작하는데 필요한 패키지들을 먼저 설치합니다.
- sudo apt install git
- sudo apt install librrds-perl libjson-perl libhtml-parser-perl
Import Collectd-Web Git Repository and Modify Standalone Python Server
가장 최신의 collectd-web가 git 서버로부터 가져옵니다.
- cd /usr/local/
- sudo git clone https://github.com/httpdss/collectd-web.git
- cd collectd-web/
- sudo chmod +x cgi-bin/graphdefs.cgi
파일 /usr/local/collectd-web/runserver.py을 열어서 원하는 포트로 바꿉니다. 현재는 localhost의 IP인 127.0.0.1로 접근하게 되어 있으므로 이것도 바꿀 수 있습니다.
class Handler(CGIHTTPServer.CGIHTTPRequestHandler):
cgi_directories = ["/cgi-bin"]
PORT = 8888
이제 실행 준비가 끝났습니다.
- sudo python runserver.py &
웹 브라우저를 열어서 http://localhost:8888 로 접근을 합니다. 실행하던 서비스를 잠시 꺼버립니다.
- sudo killall python
Create a Init Script to Manage the Standalone Python Server
메번 해당 디렉토리으로 이동해서 실행하는 것은 귀찮기 때문에 시작 스크립트 /usr/local/bin/collectd-web을 만듭니다.
#!/bin/bash
PORT="8888"
case $1 in
start)
cd /usr/local/collectd-web/
python runserver.py 2> /tmp/collectd.log &
sleep 1
stat=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"| cut -d":" -f2 | cut -d" " -f1`
if [[ $PORT -eq $stat ]]; then
sock=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"`
echo -e "Server is still running:\n$sock"
else
echo -e "Server has stopped"
fi
;;
stop)
pid=`ps -x | grep "python runserver.py" | grep -v "color"`
kill -9 $pid 2>/dev/null
stat=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"| cut -d":" -f2 | cut -d" " -f1`
if [[ $PORT -eq $stat ]]; then
sock=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"`
echo -e "Server is still running:\n$sock"
else
echo -e "Server has stopped"
fi
;;
status)
stat=`netstat -tlpn 2>/dev/null |grep $PORT| grep "python" | cut -d":" -f2 | cut -d" " -f1`
if [[ $PORT -eq $stat ]]; then
sock=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"`
echo -e "Server is running:\n$sock"
else
echo -e "Server is stopped"
fi
;;
*)
echo "Use $0 start|stop|status"
;;
esac
- sudo chmod +x /usr/local/bin/collectd-web
- sudo collectd-web start
Enable a Collectd Daemon Plug-in
여기서는 apache 플럭-인을 켜는 과정입니다. /etc/collectd/collectd.conf를 수정합니다.
#LoadPlugin aggregation
#LoadPlugin amqp
LoadPlugin apache
#LoadPlugin apcups
...
<Plugin apache>
<Instance "foo">
URL "http://localhost/server-status?auto"
# User "www-user"
# Password "secret"
# VerifyPeer false
# VerifyHost false
# CACert "/etc/ssl/ca.crt"
# Server "apache"
</Instance>
#
# <Instance "bar">
# URL "http://some.domain.tld/status?auto"
# Host "some.domain.tld"
# Server "lighttpd"
# </Instance>
</Plugin>
<Instance "foo">에서 foo는 화면에 표시되는 이름이므로 자신의 서버에 맞게 적당히 바꿉니다. 플럭-인을 켜는 과정은 먼저 위쪽에 플럭-인 이름만 모인 곳에서 주석처리를 없애고, 검색을 해서 아래쪽으로 이동한 후에 플럭-인에 대한 세부적인 설정에 주석처리를 없애고 수정할 부분은 적당히 수정함으로써 끝이 납니다.
- sudo systemctl restart collectd
- sudo collectd-web stop
- sudo collectd-web start
웹 브라우저의 캐시를 삭제한 후에 재접속하시면 변화된 내용을 볼 수 있다고 알려져 있습니다.[2]
Enable Collectd Daemon and Collectd-web Server System-Wide
시스템 시작시 함께 시작되도록 설정을 합니다. /etc/rc.local에 collectd-web을 등록해서 시작되도록 합니다.
...
/usr/local/bin/collectd-web start
exit 0
rc.local에 실행 권한을 줍니다.
- sudo chmod +x /etc/rc.local
rc.local에 대한 systemd 스크립트가 있지만, 오류가 생깁니다. /lib/systemd/system/rc-local.service를 수정합니다.
[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Collectd-web 시작 스크립트 /usr/local/bin/collectd-web를 약간 수정합니다.
#!/bin/bash
PORT="8888"
case $1 in
start)
cd /usr/local/collectd-web/ && python runserver.py 2> /tmp/collectd.log &
sleep 1
서비스를 등록합니다.
- sudo systemctl enable collectd
- sudo systemctl enable rc.local
- reboot
References
- ^ "Releases - collectd/collectd". Retrieved 12 June 2017 – via GitHub.
- ^ 그러나 플럭-인이 화면에 표시되지 않습니다. 좀 더 많은 정보가 필요합니다.