SAP 시스템을 Zabbix에서 모니터링합니다. (Linux 버전)

소개



전회 투고로부터 반년이 지났습니다. . . 반성.

Zabbix를 사용하여 SAP 시스템의 가동 감시를 할 때 간단한 쉘 스크립트를 작성하여 감시할 수 있도록 한 이야기입니다.

이 논문의 SAP는 "SAP Netweaver ABAP/JAVA"를 나타냅니다.

개요



Zabbix는 UserParameter를 사용하여 모든 OS 명령, 쉘 스크립트 표준 출력을 모니터링 할 수 있습니다. 따라서 SAP의 작동 상태를 나타내는 값을 표준 출력으로 출력하는 쉘 스크립트를 작성하고 모니터링합니다.

SAP 가동 상태란?



이 논문에서 SAP의 작동 상태는 sapcontrol 명령의 GetProcessList 함수로 출력되는 dispstatus로 정의됩니다.
아래의 표는 dispstatus 에 출력되는 값과 그 값이 나타내는 가동 상태, 스크립트의 출력치입니다.


dispstatus
상태
스크립트의 출력값


그린
작동 중
3

YELLOW
부팅 중
2

RED
장애
1

그레이
정지중
0


구현



전제


  • Zabbix Agent는 루트 사용자로 작동합니다
  • sapstartsrv 프로세스는 별도의 프로세스를 모니터링해야합니다 (sapstartsrv가 중지되면 sapcontrol 명령으로 작동 상태를 얻을 수 없기 때문에)

  • 쉘 스크립트의 흐름



    다음의 흐름으로 처리합니다.
  • saphostctrl 명령의 ListInstances 함수로 서버에 설치된 SAP 인스턴스의 인스턴스 번호를 가져옵니다.
  • 검색된 각 인스턴스 번호에 대해 sapcontrol 명령의 GetProcessList 함수로 SAP 인스턴스의 작동 상태를 가져옵니다.
  • GREEN > YELLOW > RED > GRAY 의 순서로 가장 하위의 상태를 호스트 전체의 SAP 가동 상태로서 표준 출력에 출력한다.

  • 모니터링 쉘 스크립트 소스 코드



    check_sap_status.sh
    #!/bin/bash
    readonly SAPHOSTCTRL="/usr/sap/hostctrl/exe/saphostctrl"
    readonly SAPCONTROL="/usr/sap/hostctrl/exe/sapcontrol"
    
    readonly CNS_INITIAL=4
    readonly CNS_GREEN=3
    readonly CNS_YELLOW=2
    readonly CNS_RED=1
    readonly CNS_GRAY=0
    ### Functions ####
    function check_status() {
      local sys_status="${CNS_INITIAL}"
        for nr in `"${SAPHOSTCTRL}" -function ListInstances | awk '{print $6}'`
        do
          sys_status="$(check_instance_status "${sys_status}" "${nr}")"
        done
        echo "${sys_status}"
    }
    function check_instance_status() {
      local status="${1}"
      local nr="${2}"
      while read dispstatus
      do
        case "${dispstatus}" in
          GREEN)  test "${status}" -ge "${CNS_GREEN}" && status="${CNS_GREEN}"
                  ;;
          YELLOW) test "${status}" -ge "${CNS_YELLOW}" && status="${CNS_YELLOW}"
                  ;;
          RED)    test "${status}" -ge "${CNS_RED}" && status="${CNS_RED}"
                  ;;
          GRAY)   test "${status}" -ge "${CNS_GRAY}" && status="${CNS_GRAY}"
                  ;;
        esac
      done < <("${SAPCONTROL}" -format script -nr "${nr}" -function GetProcessList | grep dispstatus|awk '{print $3}')
      echo "${status}"
    }
    
    ### Main Proc ####
    check_status
    

    UserParameter 설정



    /etc/zabbix/zabbix_agentd.d/userparameter_sap.conf
    UserParameter=sap.status[*],/etc/zabbix/plugin/sap/check_sap_status.sh
    

    항목 설정 (Zabbix Server)





    트리거 설정 (Zabbix Server)


    GREEN 를 나타내는 3 이외를 장애라고 판단하도록 조건식을 설정

    좋은 웹페이지 즐겨찾기