라즈베리파이를 사용하시는 분들중에 소규모 서버로 운영하시는 분들이 꽤 있으실텐데요.
이번에는 관리를 위해 내 라즈베리파이 서버의 CPU 온도, 메모리 사용량, 디스크 사용량, 주요 서비스 등 을 정리해서 보여주는 스크립트를 만들어보았습니다.
필요하신분들은 유용하게 사용하시면 될 것 같습니다.
쉘을 텔레그램 봇 또는 다른 API 와 연동하여 휴대폰이나 메일로 정보를 받아볼 수 있도록 구현하는 것도 좋은 방법입니다!
(전 텔레그램 봇으로 연동해서 때때로 정보를 받게 해 두었습니다)
일단 아래 두 쉘 스크립트가 필요합니다.
server_status.sh
#!/bin/sh
(echo -n "CPU: " && \
expr $(cat /sys/class/thermal/thermal_zone0/temp) / 1000 && \
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }' && \
df -h | grep -i /dev/root | awk {'print "Disk root Avail: "$4"/"$2" ("$5" used)"'} && \
df -h | grep -i sda1 | awk {'print "Disk SSD Avail: "$4"/"$2" ("$5" used)"'} && \
echo -n "Kubelet Service: " && systemctl status kubelet $1 | awk 'NR==5' | awk '{print $2}' && \
kubectl get pod -n prd | grep "deployment" | awk '{print "APP: " $3 " RDY: " $2 " RST: " $4}' && \
kubectl get pod -n prd | grep "postgres" | awk '{print "DB: " $3 " RDY: " $2 " RST: " $4}' && \
echo -n "Fail2ban FAILED: " && sudo fail2ban-client status sshd | grep Currently\ failed | awk {'print ""$5""'} && \
echo -n "Fail2ban BANNED: " && sudo fail2ban-client status sshd | grep Currently\ banned | awk {'print ""$4""'} && \
echo -n "Running Process: " && sh /usr/script/ps_running_check.sh && \
echo "" && \
uptime -p && date)
ps_running_check.sh
RESULT1=`ps cax | grep -w ffmpeg`
RESULT1_1=`ps cax | grep -w ffmpeg | wc -l`
RESULT2=`ps cax | grep -w badblocks`
RESULT3=`ps cax | grep -w cp`
RESULT4=`ps cax | grep -w avconv`
RESULT5=`ps cax | grep -w scp`
RESULT6=`ps cax | grep -w php` # Nextcloud preview generator for photos
RESULT7=`ps cax | grep -w rsync`
if [ "${RESULT1:-null}" = null ]; then
echo -n ""
else
if [ `expr $RESULT1_1 / 1` -eq 1 ]; then
echo -n "ffmpeg"
elif [ `expr $RESULT1_1 / 1` -eq 2 ]; then
echo -n "ffmpeg x2"
else
echo -n "ffmpeg x3 or higher"
fi
fi
if [ "${RESULT2:-null}" = null ]; then
echo -n ""
else
echo -n "badblocks "
fi
if [ "${RESULT3:-null}" = null ]; then
echo -n ""
else
echo -n "cp "
fi
if [ "${RESULT4:-null}" = null ]; then
echo -n ""
else
echo -n "avconv "
fi
if [ "${RESULT5:-null}" = null ]; then
echo -n ""
else
echo -n "scp "
fi
if [ "${RESULT6:-null}" = null ]; then
echo -n ""
else
echo -n "php "
fi
if [ "${RESULT7:-null}" = null ]; then
echo -n ""
else
echo -n "rsync "
fi
server_status.sh 스크립트를 실행하면 현재 돌고 있는 프로세스 확인을 위해 ps_running_check.sh 이 돌면서 주요 프로세스를 체크 합니다.
(실행은 server_status.sh 만 하시면 됩니다)
결과는 아래 처럼 나옵니다.
CPU: 44
Memory Usage: 866/7875MB (11.00%)
Disk root Avail: 34G/59G (40% used)
Disk SSD Avail: 731G/916G (16% used)
Kubelet Service: active
APP: Running RDY: 1/1 RST: 0
DB: Running RDY: 1/1 RST: 1
Fail2ban FAILED: 0
Fail2ban BANNED: 0
Running Process: scp
up 3 weeks, 6 days, 6 hours, 12 minutes
Mon 18 Jan 20:29:31 KST 2021
사용하시는 프로세스가 다 다를테니 수정해서 사용하시면 되겠습니다!
ps_running_check.sh 에는 변수에 넣어둔 프로세스만 확인을 하여 실행중이면 Running Process: 에 표기를 해 주므로 주로 사용하시는 프로세스들만 변수에 넣어 주시고 if 문 echo 에 출력 문구를 정해 주시면 됩니다.
본인이 원하는 출력으로 맞추기 위해선 커스터마이징이 좀 필요하겠지만 도움이 될 까 싶어서 올려두었습니다.
끝.
'리눅스' 카테고리의 다른 글
라즈베리파이에 DDNS 부여해서 고유 도메인 주소 주는 방법 (0) | 2021.01.19 |
---|---|
리눅스 CLI 에서 screen 사용하면 작업 또는 프로세스 돌리고 창 닫아도 된다 (0) | 2021.01.18 |
리눅스 rsync 로 백업하고 crontab 걸어서 자동 백업 구성 (0) | 2021.01.17 |
리눅스 새 디스크를 파티션 나누고, pv, vg, lv 구성 후 포맷하고 사용하기까지의 과정 (0) | 2020.12.26 |
umount 하려는 디스크에 프로세스가 사용 중 일때 (0) | 2020.12.25 |