모니터링 플러그인 (정의해서) 추가하기
이 제품의 "설정" 메인메뉴의 "대시보드" 서브메뉴에서는 모니터링 플러그인과 관련하여 다음 작업들을 할 수 있습니다.
이 절에서는 위 작업을 하는 방법을 소개합니다.
이 제품에서 기본으로 제공하는 플러그인 목록 확인하기
이 제품은 서버와 스토리지, 네트워크에 대한 리소스 사용량(CPU, 메모리, 디스크 사용량)을 비롯해 복제 상태, 네트워크 회선 사용량, 특정 애플리케이션에 대한 상세한 모니터링도 가능해 시스템에 대한 전반적인 상태를 한 화면으로 볼 수 있습니다. 모니터링 결과가 수치로 나타날 경우에는 차트로 확인할 수 있고 텍스트의 경우에는 "이벤트 보기" 탭에서 발생 이벤트를 확인할 수 있습니다.
이 제품은 다양한 모니터링 플러그인들을 제공하고 있으며, 사용자가 원하는 플러그인을 직접 등록해서 모니터링하는 것도 가능합니다. MDRM에서 제공하는 플러그인은 다음과 같습니다.
플러그인 명 | 운영체제 | 입력 정보 | 모니터링 결과값 | 설명 |
---|---|---|---|---|
CPU 사용량 | 윈도우, 리눅스 | - | Percentage(%) | 서버의 CPU 사용량을 체크 |
메모리 사용량 | 윈도우, 리눅스 | - | Percentage(%) | 서버의 메모리 사용량을 체크 |
디스크(볼륨) 사용량 | 윈도우, 리눅스 | • 윈도우: 볼륨 • 리눅스: 경로 | Percentage(%) | 지정한 볼륨의 사용량을 체크 |
핑 손실률 | 윈도우, 리눅스, 유닉스 | - | Percentage(%) | 관제서버와 클라이언트 노드 간의 핑 손실률 |
Oracle | 윈도우, 리눅스 | • 포트: DB 포트 • 사용자: DB 접속 • 비밀번호: 사용자 암호 | Boolean | Oracle DB의 온라인 상태를 확인(Dictionary 테이블의 State값 확인) |
Oracle | 윈도우, 리눅스 | • 포트: DB 포트 • 사용자: DB 접속 • 비밀번호: 사용자 암호 | Count | Oracle DB의 세션 개수를 확인 |
Oracle | 윈도우, 리눅스 | • 포트: DB 포트 • 사용자: DB 접속 가능 사용자 • 비밀번호: 사용자 암호 • 최대값: 세션 최대값 | Count | Oracle DB의 프로세스 개수를 확인 |
MS-SQL DB | 윈도우 | • 사용자: DB 접속 가능 사용자 • 비밀번호: 사용자 비밀번호 • DB이름: DB 이름 | Boolean | MS-SQL DB의 온라인 여부를 확인 |
MS-SQL DB | 윈도우 | • 사용자: DB 접속 • 비밀번호: 사용자 암호 • 포트: DB 포트 | Boolean | MS-SQL 서버에 접속이 가능한지 확인 |
MS-SQL DB 데이터 버퍼 적중률 | 윈도우 | • 사용자: DB 접속 • 비밀번호: 사용자 암호 • 포트: DB 포트 | Percentage(%) | MS-SQL의 데이터 버퍼 적중률(Data Buffer Cash Hit Ratio)을 확인 |
SNMP 트랩 이벤트 | 윈도우, 리눅스, 유닉스 | • IP주소(선택 사항): SNMP • OID(선택사항): SNMP | TEXT | SNMP 트랩 이벤트를 모니터링 |
SNMP Get v1 | SNMP Get v1을 지원하는 모든 | • 포트: SNMP 포트 • OID: 모니터링하려는 • COMMUNITY: SNMP 접근 | Number (Bit, byte) | SNMP Get v1을 이용해 특정 OID를 모니터링하는 플러그인(결과값 필터에 정규식을 입력해 원하는 결과값을 얻을 수 있음) |
SNMP Get v2 | SNMP Get v2를 지원하는 모든 | • 포트: SNMP 포트 • OID: 모니터링하려는 • COMMUNITY: SNMP 접근 | Number (Bit, byte) | SNMP Get v2를 이용해 특정 OID를 모니터링하는 플러그인(결과값 필터에 정규식을 입력해 원하는 결과값을 얻을 수 있음) |
네트워크 | SNMP Get v1, v2를 | • 포트: SNMP 포트 • OID: 모니터링하려는 정보의 OID • COMMUNITY: SNMP 접근 • SNMP Version: SNMP의 | Number (Bit, byte) | SNMP Get v1, v2를 이용해 특정 네트워크 포트를 |
네트워크 | SNMP Get v1, v2를 | •포트: SNMP 포트 • OID: 모니터링하려는 정보의 OID • COMMUNITY: SNMP 접근 허용 커뮤니티 • SNMP Version: SNMP의 | Number (Bit, byte) | SNMP Get v1, v2를 이용해 특정 네트워크 포트를 |
<표 21> 이 제품이 지원하는 모니터링 플러그인 목록
MDRM는 모니터링에 필요한 보편적인 모니터링 플러그인들을 다양하게 사전정의하여 제공합니다(관련 화면에 모니터링 플러그인 목록으로 나타납니다). 이렇게 기본으로 제공하는 플러그인들 외에 사용자가 정의한 모니터링 플러그인이 필요하다면, 사용자가 직접 정의한 플러그인들을 등록하십시오.
모니터링 플러그인을 관리하려면, 다음 그림과 같이 "설정" 메인메뉴를 클릭한 후 "모니터링 플러그인" 서브메뉴를 클릭하십시오.
<그림 110> 모니터링 플러그인 관리 화면
모니터링 플러그인 추가 화면
모니터링 플러그인을 추가하려면, 다음 그림과 같이 "설정" 메인메뉴를 클릭한 다음 "모니터링 플러그인 서브메뉴"를 클릭한 후, 모니터링 플러그인 관리 화면이 나타나면 [플러그인 추가] 버튼을 클릭하십시오.
<그림 111> 모니터링 플러그인 추가 화면
그러면 플러그인을 추가할 수 있는 화면이 나타납니다. 다음 그림과 내용을 참고하여 사용자에게 맞게 구성한 후 [확인] 버튼을 클릭하십시오.
<그림 112> 모니터링 플러그인 추가
- 플러그인 명: 해당 플러그인의 이름을 입력하는 항목
- 서비스 구분: 해당 플러그인이 속한 서비스 구분을 선택하는 항목
- 플러그인 동작 위치: 관제서버에서 실행할지 클라이언트(클러스터 노드)에서 실행할지 선택하는 항목
- 플러그인 적용 대상: 트리거 설정을 양측 노드 모두에 적용할지 온라인 상태의 그룹에만 적용할지 선택하는 항목
- 지원OS종류: 해당 플러그인이 동작하는 운영체제를 선택하는 항목
- 입력 정보: 해당 플러그인의 모니터링하려면 부가적인 정보가 필요할 경우 사용하는 항목
- 모니터링 결과 단위: 모니터링 결과의 단위를 선택하는 항목
- 결과값 필터: 결과값에 대해 추가적인 필터를 적용할 경우에 사용하는 항목
- 편집 가능 옵션 선택: 해당 플러그인의 설치할 때 결과값 필터의 내용 수정 가능
- 설명: 해당 플러그인에 대해 필요한 설명을 입력할 수 있는 항목
플러그인 동작 위치에 대하여
• 서버: MDRM 관제서버에서 요청할 때만 동작하여 결과값을 가져올 경우 선택
(예: DB접속 여부, DB 온라인 여부, 디스크 사용량)
• 클라이언트: 해당 플러그인을 클러스터 노드에 설치해서, 클라이언트에서 주기적으로 모니터링하다가 MDRM 관제 서버에서 요청하면 누적한 결과치를 가져올 경우 선택
(예: CPU평균 사용량, 메모리 평균 사용량)
• 중복 설치 가능: 해당 플러그인을 클러스터 노드에 중복으로 설치해야 할 경우 선택
(예: 디스크 사용량)
플러그인 적용 대상에 대하여
지원OS종류에 대하여
입력 정보에 속한 항목들에 대하여
• 제목: 플러그인을 설치할 때 요청하는 입력값의 이름을 정의하는 항목
• 옵션키: 명령어를 실행할 때 옵션이 필요할 경우 입력하는 항목(예: DB에의 접속 여부 확인을 위해 SQL 명령어(SQLCMD -S SERVERNAME -U sa -P PASSWORD)를 실행하는 플러그인의 경우 “S”, “-U”, “-P” 같은 옵션이 필요한데 이때 옵션키에 이를 정의)
• 입력값 형식: 입력 받는 값의 타입(text, password)을 정의하는 항목(password의 경우: 입력할 때 내용이 별표로 나타남)
모니터링 결과값의 단위에 대하여
• Percentage (%): 모니터링 결과값이 % 형태로 출력되는 플러그인의 경우 선택하는 항목
• Number (N): 모니터링 결과값이 숫자 형태로 출력되는 플러그인(예: DB접속자 수, 세션 개수)의 경우 선택하는 항목
• Boolean(B): 모니터링 결과 값이 성공(0) 또는 실패(1) 두 가지 형태의 값으로만 반환되는 플러그인(예: DB 온라인 여부, DB접속 여부)의 경우 선택하는 항목
• Text (T): 텍스트 형태 이벤트를 모니터링하는 플러그인(예: SNMP 이벤트)의 경우 선택하는 항목
사용자 정의 모니터링 플러그인 작성하기
사용자 정의 모니터링 플러그인의 작성은 다음과 같이 두 부분으로 나뉩니다.
- 스크립트 작성
- 플러그인 등록 절차
각 항목에 대한 세부적인 설명은 다음 절에서부터 순서대로 제공합니다.
스크립트 작성하기
사용자 정의 모니터링 플러그인을 작성하여 등록하려면, 다음 순서대로 작업하십시오.
사용할 모니터링 플러그인의 스크립트를 이미 갖고 있을 경우
1. 먼저, 다음 표를 참고하여 사용자 정의 플러그인을 위한 스크립트 작성하십시오. 사용자 정의 모니터링 플러그인을 관제서버 차트에 등록하고 알림을 받도록 설정하려면, 반환 코드와 출력 메시지 포맷에 유의하여 작성하십시오.
반환 코드 | 상태 | 모니터링 결과 단위 | |||
---|---|---|---|---|---|
Boolean | Number | Percentage | 스크립트 작성 예시 | ||
0 | OK | ChartValue=0 | ChartValue=정수 | ChartValue=<0~100> | • Boolean의 경우: • Percentage의 경우: |
1 | WARNING | ChartValue=1 | ChartValue=정수 | ChartValue=<0~100> | #!/bin/sh |
2 | CRITICAL | ChartValue=1 | ChartValue=정수 | ChartValue=<0~100> | #!/bin/sh |
3 | UNKNOWN | ChartValue=1 | ChartValue=정수 | ChartValue=<0~100> | #!/bin/sh |
반환 코드는 Nagios 서버에서 모니터링 상태를 표현하기 위한 용도이며 필요에 따라 0, 2 코드만 반환할 수 있습니다. 출력 메시지에는 ChartValue=<값> 형태의 키워드를 포함시키고, ChartValue 값은 관제서버에서 수집되어 모니터링 차트로 표현하기 위해 양수값을 입력합니다. 차트의 형태는 관제서버에서 등록된 플러그인의 모니터링 결과 단위(모니터링 플러그인 참고)에 따라 결정됩니다.
2. 관제서버에 터미널로 접속해서 스크립트를 작성하십시오.
권장하는 저장 경로는 “/usr/local/nagios/libexec/custom_script/”로, 예를 들면 “/usr/local/nagios/libexec/custom_script/sample.sh” 식으로 작성하시면 됩니다.
#!/bin/bash PATH=$PATH:/usr/bin; export PATH CLASSPATH=$CLASSPATH:/script; export CLASSPATH AA=`date` YEAR=`echo $AA|awk '{print $9}'` if [ $YEAR -eq "2015" ]; then echo "OK - This year is 2015. ChartValue=0" exit 0 else echo "CRITICAL - This year is needed to change. ChartValue=1" exit 2 fi
첫번째 echo 를 플러그인 출력으로 인식합니다.
플러그인 등록 절차
관제서버의 콘솔로 접속하여 플러그인을 추가한 후, 모니터링 컴포넌트의 설정 파일을 변경하십시오. 아래 주요 입력 항목을 참고하십시오.
컬럼 | 값 | 비고 |
---|---|---|
결과값 필터(정규식) | ChartValue=(\d*) | 정규식 내용을 넣는 항목으로, 제시한 값으로 입력 |
입력 정보 | - | 플러그인을 실행할 때 필요한 인자 값을 플러그인의 설치시 전달 가능 |
파일 업로드 | - | 파일 추가 기능 미지원. 수동으로 스크립트 작성하거나 파일 ��사를 권장 |
<표 21> 플러그인을 등록할 때 입력하는 주요 항목들
플러그인을 추가하려면, 다음 그림과 내용을 참고하여 작업하십시오.
- 추가한 모니터링 플러그인의 고유 이름을 조회하십시오.
터미널에 root 계정으로 터미널로 접속한 후 다음과 같이 관제서버 DB에 접속하십시오.
# su - mccs # psql -d mccs
그런 다음 <plug_uniq_name>을 조회하는 쿼리를 실행하고 DB 연결을 종료하십시오.
select plug_uniq_name, plug_title from mtr_plugins where del_tm is null order by mtr_plug_id desc limit 5; \q
다음과 같이, 아래 예시에서 "WAS행 감지"의 플러그인 고유 이름은 “M0056” 입니다.
확인한 후 root 계정으로 돌아갑니다.다음과 같이 모니터링 명령어를 정의하십시오.
# cd /etc/nagios4/conf.d # vi mccs_commands.cfg
mccs_commands.cfg 파일을 열어 제일 하단에 새로운 명령어를 추가합니다.
mccs_commands.cfg define command { command_name <plug_uniq_name> command_line <script_file_path> $HOSTADDRESS$ }
• <plug_uniq_name>: 위에서 조회한 플러그인 고유 이름(예: M0056)
• <script_file_path>: 스크립트 실행 경로
• $HOSTADDRESS$: 노드의 시스템 IP 주소로, 스크립트 실행시 매개변수로 전달할 수 있는 상수
입력 예시는 다음과 같습니다.매개변수 전달 방법
스크립트를 실행할 때 매개변수를 전달하려면 플러그인 추가 화면에서 [정보추가] 버튼을 클릭하십시오.
mccs_command.cfg 파일을 열어 다음과 같은 형태로 전달할 수 있습니다.
define command { command_name M0056 command_line $USER1$/custom_script/sample.sh $HOSTADDRESS$ -port $ARG1$ }
변경사항을 적용하기 위해 모니터링 컴포넌트의 설정 파일을 다시 읽습니다.
# service nagios reload
- 제품의 "시스템" 메인메뉴를 클릭하고 좌측 트리메뉴에서 플러그인을 설치할 클러스터의 이름을 한 후, "모니터링" 서브메뉴를 클릭하여 "플러그인 관리" 탭을 선택하십시오. 그러면 나타난 화면의 설치 가능한 플러그인 화면에서 추가한 플러그인을 선택한 후에 [설치] 버튼을 클릭하십시오.
다음 그림에서, 사용자가 설치한 “WAS행 감지” 플러그인이 목록에 나타난 것을 확인하실 수 있습니다. - 플러그인이 정상적으로 동작하는지 여부를 확인하십시오. 모니터링 컴포넌트 웹 화면에서 플러그인의 동작 상태와 에러메시지 등을 통해 볼 수 있습니다.
• 접속 주소: http://<관제서버주소>:8082/nagios/jsonquery.html
• 계정 / 암호: mccs / password
플러그인 상태를 확인한 화면 예시는 다음과 같습니다.
첫번째 “echo : plugin_output”에 출력되고 그 외에는 “long_plugin_output”으로 출력됩니다. 관제서버는 “plugin_output”의 값만 필터링하고 있습니다.
옵션 | 선택 값 | 비고 |
---|---|---|
CGI | Status JSON CGI | - |
Query | service | - |
Host Name | 해당 플러Node_ID 선택 | - |
Service Description | <plug_uniq_name> 선택 | M0056 선택 |