【Zabbix】jstat에서 java 힙 영역(heap memory)을 감시하게 되었다

7683 단어 jstatzabbixBash
◆한 일
· 감시 대상 서버에서 jstat를 사용하여 gc 로그를 기반으로 Old 영역의 사용률을 출력하는 스크립트 작성
· 스크립트를 cron 설정으로 1분 간격으로 기동시킨다
・Old영역의 사용률이 90%를 넘으면 Zabbix의 로그 감시로 검지한다

◆조건
· 감시 대상 서버에서 다음을 사용할 수있는 것
· · Zabbix Agent
※감시 대상 서버와 감시 서버간에 Zabbix Agent의 통신을 사용할 수 있는 것
· jstat 명령
· · bc 명령

◆환경
· OS는 CentOS7, Java는 OpenJDK8 (1.8), 감시 서버는 Zabbix3.0을 이용.

◆작업
[감시 대상 서버]
필요한 패키지를 설치합니다. bc 패키지는 힙 영역의 임계치 계산에 스크립트 내에서 이용.

# yum install bc
# yum install java-1.8.0-openjdk-devel

gc 로그의 모니터용 스크립트를 설치.

gc_monitor.sh
#!/bin/sh
##

############################################
# 変数
############################################
PID=`/bin/jps |grep Bootstrap |awk '{print $1}'`
#GCログ出力先
LOGFILE=/var/log/tool/jstat_gcutil.log
#Zabbix監視用のログ出力先
CHECK_LOGFILE=/var/log/tool/jstat_check.log
OUR=`tail -1 ${LOGFILE}|awk '{print $5}'`
TV_1=80 #NOTICEレベルの閾値(%)
TV_2=90 #WARNINGレベルの閾値(%)

############################################
# 処理
############################################

##調査用ログ出力
echo -e "`date` ¥¥n `jstat -gcutil -t ${PID}`" >> ${LOGFILE}

##Old領域使用率チェック
OU_CHECK=$?

        if [[ ${OU_CHECK} = 0 ]] && [[ "$(echo "${OUR}< ${TV_1}" |/bin/bc )" -eq 1 ]] ;then

                  echo "`date +%Y%m%d_%H:%M:%S` Java HeapMemory(Old Area) Check OK" >> ${CHECK_LOGFILE}

        elif [[ ${OU_CHECK} = 0 ]] && [[ "$(echo "${OUR}> ${TV_1}" |/bin/bc )" -eq 1 ]] && [[ "$(echo "${OUR}< ${TV_2}" |/bin/bc )" -eq 1 ]] ;then

                  echo "`date +%Y%m%d_%H:%M:%S` Java HeapMemory(Old Area) over ${TV_1}% NOTICE" >> ${CHECK_LOGFILE}

        elif [[ ${OU_CHECK} = 0 ]] &&  [[ "$(echo "${OUR}> ${TV_2}" |/bin/bc )" -eq 1 ]] ;then

                  echo "`date +%Y%m%d_%H:%M:%S` Java HeapMemory(Old Area) over ${TV_2}% WARNING" >> ${CHECK_LOGFILE}

        else
                  echo "`date +%Y%m%d_%H:%M:%S` Java HeapMemory(Old Area) Check Failed" >> ${CHECK_LOGFILE}

         fi
exit

[감시 서버]
Zabbix3.0에 아이템 설정과 트리거 설정을 넣는다.

아이템 설정


트리거 설정 ※조건식 발췌
아래와 같이, 정규 표현으로 "WARNING"의 문언이 있으면 스테이터스=1이 된다.
그리고는, 경고 통지 설정을 넣으면 메일등으로 통지 가능. 경고 알림 설정은 할애.

트리거 설정
{ホスト名:log[/var/log/tools/jstat_check.log,,,,skip,].regexp(WARNING)}=1

이상이 됩니다.

좋은 웹페이지 즐겨찾기