(Script/개발/공개)-Bash Script를 이용한 서버 상태 모니터링
개요
Bash Script를 이용하여 서버의 상태를 모니터링 하며 다수의 서버를 관리 하기 편하게 임계치를 모니터링 DB에서 가져와 편리한 관리와 알람 발송 가능하도록 개발
시스템 구성
기능
- 파티션 용량 체크
- 파티션 기본 임계치
ex) 전 파티션 85%
- 특정 파티션 커스텀 임계치
ex) / 파티션 90%
- 특정 파티션 용량 체크 제외
ex) /var 체크 제외
- 파티션 기본 임계치
- 파티션 증가량 체크
ex) / 파티션이 10분간 200MB 이상 증가 할 경우
- 파티션 Read Only 상태 체크
- 프로세스 개수 체크
- 로드 에버리지 체크
- IPMI TOOL을 이용하여 H/W 상태 체크
- Power Supply
- 알람 원하는 문구 추가
- 알람 방식 선택
- 알람 발송 (알람 발송 server 구현 필요)
- 쉘 스크립트 정상 동작 여부 체크 이상 시 알람 (http 서버 구현 필요)
- 위 항목중 필요하지 않은 항목 모니터링 제외
- LD #로드 에버리지
- PS #프로세스
- DS #DISK 파티션별 용량
- PW #Power Supply 상태
- RO #파티션 Read Only 상태
- DF #DISK 파티션별 증가량
부가 기능
- DATA를 가져오는 WEB 서버 장애 대비용 임계치를 못 가져 올 시 자체 임계치 사용
- 알람 방식이 2가지 이상일 경우 발송 실패 시 재전송 기능
알람 임계치 구조
셸에서 WEB으로 임계치 데이터
Request
시 아래 포맷으로Response
해줘야 한다.
임계치 구분자는,
를 사용한다.
#
은 설명을 위해 작성 하였으므로Response
하면 안 된다.DEFAULT_VOLUME :85 #파티션 용량 체크 기본 임계치 CUSTOM_VOLUME :/test=95,/var=30 #특정 파티션 용량 체크 임계치 EXCEPT_VOLUME :/tmp #특정 파티션 용량 체크 제외 INCREASE_VOLUME :128 #용량 증가량 체크 MB 단위 PROCESS :700,800 #프로세스 개수 임계치 경고, 위험 LOAD_AVERAGE :30,30,40,40 #로드 에버리지 임계치 5분 경고, 15분 경고, 5분 경고, 15분 위험 EXCEPT_LIST :PO #특정 모니터링 제외 항목 ALARM_TYPE :L #ALARM 방식 ALARM_ADD_MSG :위험합니다. #알람 문구 뒤에 추가 문구
알람 대상자 구조
셸에서 WEB으로 알람 대사자 데이터
Request
시 아래 포맷으로Response
해줘야 한다.
임계치 구분자는개행
사용한다.
이 부분은 알람 발송 파일 구조에 따라 달라질 수 있다.[수신번호] [발신번호] [수신번호] [발신번호]
예시
소스
참고 사항
자체 임계치 수정 필요 부분 if문 아래에 임계치 수정 필요 코드가 길어 요약
#check_system.sh
45 if [[ ! ${WARNING_LOAD_5min} =~ ${NUMBER_CHECK} ]]
...
81 if [[ ! ${WARNING_PROCESSES} =~ ${NUMBER_CHECK} ]]
...
109 if [[ ! ${DISK_DEFAULT_LIMIT} =~ ${NUMBER_CHECK} ]]; then
...
307 if [[ ! ${DISK_FLOOD_VAL} =~ ${NUMBER_CHECK} ]]; then
...
#send_msg.sh
15 if [ -z "`cat ${USER_PATH} | grep -wE '(070|02|031
...
마무리
기존에는 자체 로컬에서만 실행하여 오동작하거나 임계치 및 알람 대상을 변경 하려면 전 서버에 접속하여 수정 또는 확인해야 했다.
서버가 많을 시 일일이 관리하기 힘들어 DB 임계치를 수정만 하면 전 서버 관리가 가능하다.
#2021-03-03
지금 생각해 보면 더좋은 기술과 방법이 많은데 역시 공부는 열심히 해야겠다.