디스크 파티션 사용량 모니터링 스크립트[2]
✅작업내용
✅디스크 용량 확인 명령어
df -h
✅Use 칼럼의 데이터 구하기
df -h | awk '{print $5}'
✅Use 칼럼의 데이터에서 % 제외하기 (%를 기준으로 자르고 첫번째 줄 print)
df -h | awk '{print $5}' | awk -F% '{print $1}'
✅Use 칼럼의 데이터에서 칼럼제목(영어) 제외
df -h | awk '{print $5}' | awk -F% '{print $1}' | grep -v "^[A-Z]"
위의 명령어는 쉘스크립트에서 사용하기에 복잡할 수 있다.
✅gsub 내장함수를 이용한 명령어
df -h | awk '{gsub("%",""); print$5 , $6}' | column -t
✅출력값을 변수에 대입해서 처리 : 변수를 쓰는 이유는 나중에 코드를 읽을때 알아보기 쉽고, 코드 확장 위함 (USE, MNT)
df -h | awk '{gsub("%",""); USE=$5; MNT=$6; print USE,MNT}' | column -t
✅USE 가 30이 넘는 Mount의 이름 출력
df -h | awk '{gsub("%",""); USE=$5; MNT=$6; if(USE > 30) print USE,MNT}' | column -t
df -h | awk '{gsub("%",""); USE=$5; MNT=$6; if(USE > 30) print USE,MNT}' | column -t | grep -v "^[A-Z]"
✅USE 가 30이 넘는 Mount의 이름과 사용량을 문장으로 출력
df -h | awk '{gsub("%" , ""); USE=$5; MNT=$6; if (USE > 30) print MNT,"파티션이 " ,USE,"%를 사용 중입니다."}' | column -t | grep -v "^[A-Z]"
✅ 쉘스크립트 참고
$ ( 명령어 )
$() 안에있는 명령어는 실행이 된다.
📌 log_part.sh 내용
#! /bin/bash
# 파티션별 사용량을 확인해서 30% 이상인 파티션이 있으면 관리자에게 메시지를 보냄
# 1. 파티션별 사용량을 확인
# 2. 크기를 비교해서 처리
# 3. use가 30 이상이면 관리자에게 메시지
# 4. 30 미만이면 아무것도 안함
#TEXT 변수에 보낼 메시지를 작성
# (역슬래쉬) 이용해서 줄 바꿈
TEXT="$(df -h | \
awk '{
gsub("%" , "");
USE=$5;
MNT=$6;
if ( USE > 30 )
print MNT, "파티션이 " ,USE, "%를 사용 중입니다."
}' | grep -v "^[A-Z]")"
HOST="$(hostname)"
# 30% 이상 디스크를 사용하는 파티션이 있을 경우
# TEXT 변수의 내용(메시지)를 관리자에게 보냄
# TEXT 앞에 # 은 바이트 수 구하는 문법. 즉 1바이트 보다 크면(메시지가 존재하면)
if [ ${#TEXT} -gt 1 ]
then
/root/monitor/telegram_push.sh "${HOST}" "${TEXT}"
fi
위의 스크립트에서 텔레그램 봇으로 메시지 보내는 쉘 스크립트는 이전 포스팅(서버 운영 필요한 지식 - 트러블 슈팅[1] - (텔레그램 봇 메시지 보내기)) 에 나와 있습니다.
✅적용
crontab 에 등록하기 : 1시간에 1번
✅순서
분, 시간, 일, 월, 요일
✅crontab 에 등록
crontab -e
# 정시마다 특정 로그 파일 용량 체크
00 * * * * /root/monitor/log_part.sh >/dev/null 2>&1
#30 분 마다 파티션 용량 체크
30 * * * * /root/monitor/log_mon.sh >/dev/null 2>&1
✅crontab 등록한 스케쥴 확인
crontab -l
crontab -r 쓰면 안됨! 전체 삭제됨
'리눅스&서버 > 우분투' 카테고리의 다른 글
웹,데이터베이스 서버 트러블슈팅을 위한 쉘 스크립트 [4] (0) | 2022.05.07 |
---|---|
웹서버 및 mysql DB 백업 쉘스크립트 [3] (0) | 2022.03.23 |
서버 운영 필요한 지식 - 트러블 슈팅[1] - (텔레그램 봇 메시지 보내기) (0) | 2022.03.23 |
ubuntu 에 pm2 와 ssl 인증서로 https 설정 (0) | 2021.10.20 |
ubuntu에 Nginx 설치 정리 + Node js (1) | 2021.10.19 |