0. 환경 / 목표 요약
- Client서버: Dell PowerEdge R450 (OS: CentOS 7.9)
- RAID: PERC H755 Front (RAID-1, SAS HDD 2개)
- 목표
- Dell OMSA(OM-SrvAdmin) 설치
- omreport 로 PSU 이중화 / 디스크 상태 확인
- Zabbix에서 HPE 서버와 같은 키 이름으로 모니터링
- PSU: psu.health[1], psu.health[2]
- 디스크: pdisk.* (summary / health / discovery 등)
- 재부팅 후에도 OMSA dataeng 자동 기동
1. OMSA 설치
1-1. OMSA 패키지 복사
NMS 서버에서 LDAP_DB#3로 push 방식으로 복사.
# NMS 서버에서
scp OM-SrvAdmin-Dell-Web-LX-10.1.0.0-4561.RHEL7.x86_64_A00.tar.gz osk@10.10.119.45:/home/osk/
LDAP_DB#3에서 root로 로그인 후:
su -
cd /opt
mkdir -p dell_omsa_10.1
mv /home/osk/OM-SrvAdmin-Dell-Web-LX-10.1.0.0-4561.RHEL7.x86_64_A00.tar.gz dell_omsa_10.1/
cd dell_omsa_10.1
tar xzf OM-SrvAdmin-Dell-Web-LX-10.1.0.0-4561.RHEL7.x86_64_A00.tar.gz
# docs, linux, RPM-GPG-KEY, setup.sh 등 생성
1-2. 필수 패키지 설치
yum install -y pciutils
※pciutils 설치 없이 omsa 바로 설치시 에러 내용 (pciutils의존이라 설치해야 한다.)
Installing the selected packages.
warning: srvadmin-deng-10.1.0.0-4561.18274.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 34d8786f: NOKEY
error: Failed dependencies:
pciutils is needed by srvadmin-omilcore-10.1.0.0-4561.18274.el7.x86_64
- Installation of some of the packages have failed.
- Please refer to 'readme_ins.txt' file for more details.
- The readme_ins.txt can be found in srvadmin/docs/readme folder
1-3. OMSA 설치(스토리지 중심)
cd /opt/dell_omsa_10.1/linux/supportscripts
./srvadmin-install.sh --storage
설치 후 omreport 위치 확인:
find /opt -maxdepth 4 -name omreport 2>/dev/null
# /opt/dell/srvadmin/bin/omreport
# /opt/dell/srvadmin/sbin/omreport
(원하면 root PATH에 추가)
echo 'export PATH=$PATH:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/sbin' >> /root/.bash_profile
2. OMSA dataeng 서비스 자동 기동
2-1. 최초 상태 확인
systemctl status dataeng
# Loaded: masked (/dev/null; bad)
# Active: inactive (dead)
2-2. 마스크 해제 + 수동 기동
systemctl unmask dataeng
systemctl daemon-reload
systemctl start dataeng
systemctl status dataeng
# Active: active (exited) (SysV 스크립트 방식이라 이렇게 나오는 게 정상)
2-3. 재부팅 시 자동 시작 설정 (root crontab)
dataeng 가 SysV 스크립트라 systemctl enable 이 매끄럽지 않아서, @reboot 크론으로 처리.
crontab -e # root 계정 기준
맨 아래에 한 줄 추가:
@reboot /etc/rc.d/init.d/dataeng start >/var/log/dataeng-autostart.log 2>&1
crond 가 enable 상태인지 확인:
systemctl enable crond
systemctl start crond
systemctl status crond
3. 서버 측 Zabbix 설정 (스크립트/유저파라미터/sudoers)
3-1. 스크립트 디렉터리 생성
mkdir -p /etc/zabbix/scripts
cd /etc/zabbix/scripts
3-2. PSU 상태 스크립트 psu_health.sh
cat > /etc/zabbix/scripts/psu_health.sh << 'EOF'
#!/usr/bin/env bash
# Dell OMSA PSU 상태 조회 (간단 버전)
# psu_health.sh 1 -> 첫 번째 PSU 상태
# psu_health.sh 2 -> 두 번째 PSU 상태
set -euo pipefail
export LC_ALL=C
PSU_NUM="${1:-1}"
OMREPORT=${OMREPORT:-/opt/dell/srvadmin/bin/omreport}
STATUS="$(
sudo -n "$OMREPORT" chassis pwrsupplies -fmt ssv 2>/dev/null | \
awk -F';' -v num="$PSU_NUM" '
NF < 2 { next } # 헤더/공백 라인 스킵
# 첫 번째 필드가 숫자(0,1,2,...)인 줄만 PSU로 취급
$1 ~ /^[0-9]+$/ {
i++
if (i == num) {
gsub(/^[ \t]+|[ \t]+$/, "", $2)
print $2
found=1
exit
}
}
END {
if (!found) print "NotPresent"
}
'
)"# 트리거/템플릿이 대문자 "OK" 기준이므로 대문자로 변환
STATUS=$(echo "$STATUS" | tr '[:lower:]' '[:upper:]')
echo "${STATUS:-NOTPRESENT}"
EOF
chmod 750 /etc/zabbix/scripts/psu_health.sh
chown root:zabbix /etc/zabbix/scripts/psu_health.sh
결과 예: OK, NOTPRESENT 등.
3-3. 디스크 상태 스크립트 pdisk_health.sh
cat > /etc/zabbix/scripts/pdisk_health.sh << 'EOF'
#!/usr/bin/env bash
# Dell OMSA(omreport) 기반 PD(물리 디스크) 상태 수집
#
# 사용:
# pdisk_health.sh discovery -> LLD JSON ({#PDID}, {#PDSTATE})
# pdisk_health.sh state <ID> -> 해당 PD 상태 (Online/Failed/Ready...)
# pdisk_health.sh summary -> "pd=0:1:0:Online,0:1:1:Online,..." 한 줄
set -euo pipefail
export LC_ALL=C
OMREPORT=${OMREPORT:-/opt/dell/srvadmin/bin/omreport}
CTL=${CTL:-0} # 단일 컨트롤러 환경 가정
pd_lines() {
# omreport storage pdisk controller=<CTL> 출력에서
# ID : 0:1:0
# State : Online
# 구조만 추출 -> "0:1:0 Online"
sudo -n "$OMREPORT" storage pdisk controller="$CTL" 2>/dev/null | \
awk '
BEGIN { id=""; state="" }
/^ID[[:space:]]*:/ {
sub(/^[^:]*:[[:space:]]*/, "", $0)
gsub(/^[[:space:]]+|[[:space:]]+$/, "", $0)
id = $0
}
/^State[[:space:]]*:/ {
sub(/^[^:]*:[[:space:]]*/, "", $0)
gsub(/^[[:space:]]+|[[:space:]]+$/, "", $0)
state = $0
if (id != "") {
print id, state
id=""; state=""
}
}
'}
case "${1:-}" in
discovery)
echo -n '{ "data":['
first=1
while read -r slot state; do
[ -z "$slot" ] && continue
if [ $first -eq 0 ]; then echo -n ','; fi
first=0
printf '{ "{#PDID}":"%s", "{#PDSTATE}":"%s" }' "$slot" "$state"
done < <(pd_lines)
echo '] }'
;;
state)
pd="${2:?ID 형식 필요 예: 0:1:0}"
pd_lines | awk -v k="$pd" '
$1==k { print $2; found=1; exit }
END { if (!found) print "UNKNOWN" }
';;
summary|*)
echo "pd=$(pd_lines | awk '{ printf "%s:%s,", $1, $2 }' | sed "s/,$//")"
;;
esac
EOF
chmod 750 /etc/zabbix/scripts/pdisk_health.sh
chown root:zabbix /etc/zabbix/scripts/pdisk_health.sh
3-4. sudoers 설정
cat > /etc/sudoers.d/zabbix-agent << 'EOF'
Defaults:zabbix !requiretty
Defaults:zabbix secure_path=/usr/sbin:/usr/bin:/sbin:/bin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/sbin
# ── 공통: 프로세스/CPU 수집 ─────────────────────────────
zabbix ALL=(ALL) NOPASSWD: /usr/bin/ps
zabbix ALL=(ALL) NOPASSWD: /usr/bin/pgrep
# ── Dell 전용: OMSA omreport + Zabbix 스크립트 ──────────
zabbix ALL=(ALL) NOPASSWD: /opt/dell/srvadmin/bin/omreport
zabbix ALL=(ALL) NOPASSWD: /etc/zabbix/scripts/psu_health.sh
zabbix ALL=(ALL) NOPASSWD: /etc/zabbix/scripts/pdisk_health.sh
# ── 공통: nft 카운터(필요한 서버에만 사용) ─────────────
zabbix ALL=(ALL) NOPASSWD: /usr/sbin/nft list counter inet netmon host_in
zabbix ALL=(ALL) NOPASSWD: /usr/sbin/nft list counter inet netmon host_out
EOF
visudo -c -f /etc/sudoers.d/zabbix-agent # 문법 체크
3-5. UserParameter 설정
cd /etc/zabbix/zabbix_agentd.d
PSU용
cat > userparameter_psu.conf << 'EOF'
UserParameter=psu.health[*],/etc/zabbix/scripts/psu_health.sh $1
EOF
디스크용
cat > pdisk.conf << 'EOF'
# 물리 디스크 LLD
UserParameter=pdisk.discovery,sudo -n /etc/zabbix/scripts/pdisk_health.sh discovery
# 특정 디스크 상태
UserParameter=pdisk.state[*],sudo -n /etc/zabbix/scripts/pdisk_health.sh state "$1"
# 요약 문자열 (예: pd=0:1:0:Online,0:1:1:Online)
UserParameter=pdisk.summary,sudo -n /etc/zabbix/scripts/pdisk_health.sh summary
EOF
3-6. Zabbix Agent 재시작 및 서버 측 테스트
systemctl restart zabbix-agent
systemctl status zabbix-agent
서버에서 직접 확인:
# PSU
sudo -u zabbix /etc/zabbix/scripts/psu_health.sh 1
sudo -u zabbix /etc/zabbix/scripts/psu_health.sh 2
# 디스크
sudo -u zabbix /etc/zabbix/scripts/pdisk_health.sh summary
sudo -u zabbix /etc/zabbix/scripts/pdisk_health.sh state 0:1:0
Zabbix 서버(NMS)에서 원격 테스트:
zabbix_get -s 10.10.119.45 -k 'psu.health[1]'
zabbix_get -s 10.10.119.45 -k 'psu.health[2]'
zabbix_get -s 10.10.119.45 -k 'pdisk.summary'
4. Zabbix UI 설정 (템플릿/아이템/트리거/대시보드)
이 부분은 HPE용 템플릿을 복제해서 Dell용으로 수정하는 방식.

4-1. 값 매핑 (공통)
- 설정 → 값 매핑
- 디스크 상태 값 매핑 생성 또는 기존 사용
PSU는 문자열 그대로(OK, NOTPRESENT) 사용하므로 값 매핑 없이도 됨.
4-2. Dell용 템플릿 복제
- 설정 → 템플릿 에서 기존 HPE 템플릿(예: Template_db_custom) 선택
- 우측 상단 복제(클론)
- 새 이름: 예) Template_db_custom_dell
- 저장
이후 설정은 전부 이 Dell 템플릿에서 진행.
4-3. 디스크 마스터 아이템 pdisk.summary
Dell 템플릿에서:
- 아이템 탭 → 기존 Storcli PD Summary 아이템을 열어
- 이름: PD Summary (원하는 이름)
- 키: pdisk.summary 로 변경
- 유형: ZABBIX 에이전트
- 데이터형: 텍스트
- 갱신 간격: 1m (권장)
- 저장
4-4. 디스크 의존 아이템 pdisk.health
같은 템플릿에서:
- 기존 storcli.pd.health 의존 아이템이 있으면 삭제
- 새 의존 아이템 생성
- 이름: 디스크 상태
- 유형: 의존 아이템
- 키: pdisk.health
- 마스터 아이템: 방금 만든 PD Summary (pdisk.summary)
- 데이터형: 수치(unsigned)
- 값 매핑: 디스크 상태 선택
- 보존하기 전의 처리(전처리) 탭에 정규식/JS 추가
(기존 HPE 전처리가 있으면 그대로 복붙, Dell 결과값 Online 기준으로 수정)
예: 정규표현식 1단계로 “모든 디스크가 Online 이면 0, 아니면 1” 로 만드는 방법
- 전처리 단계 추가:
- 이름: 정규표현식
- 파라미터:
(?s).*pd=[0-9:]+:Online(,[0-9:]+:Online)*.* - 실패 시 사용자 정의 값: Set value to → 1
- 그 다음 단계에서 상수 값 0 으로 초기화해 두었다면(기존 HPE 방식)
실제 결과는:- 문자열이 위 정규식과 매치되면 → 0 (OK)
- 매치 안 되면 → 1 (Fail)
(환경마다 기존 전처리 구성이 조금씩 다를 수 있어서, 지금 쓰는 HPE 템플릿의 storcli.pd.health 전처리 구성을 그대로 따라가는 게 가장 안전함)
4-5. 디스크 트리거
Dell 템플릿에서:
- 트리거 → 새 트리거
- 값 입력
- 이름: DISK 비정상
- 심각도: Warning 등
- 표현식:
{Template_db_custom_dell:pdisk.health.last()}=1
(조금 더 보수적으로 하고 싶으면 min(5m)=1 로 변경)
- 저장
4-6. PSU 아이템 / 트리거 (Dell도 HPE와 공통 키 사용)
Dell 템플릿 또는 호스트에서:
아이템
- PSU 1
- 유형: ZABBIX 에이전트
- 키: psu.health[1]
- 데이터형: 문자
- 갱신 간격: 예) 5m
- PSU 2
트리거
- PSU 1 비정상
{Template_db_custom_dell:psu.health[1].last()}<>"OK" - PSU 2 비정상
{Template_db_custom_dell:psu.health[2].last()}<>"OK"
스크립트에서 이미 OK 대문자로 변환하기 때문에 이 표현식 그대로 사용 가능.
단 PSU가 1개짜리 서버에선 NOTPRESENT 를 정상으로 보려면
iregexp("^(OK|NOTPRESENT)$")=0 같은 패턴으로 바꾸면 된다.
4-7. 템플릿을 Dell 서버에 연결
- 설정 → 호스트 → Client 서버 선택
- 템플릿 탭
- 기존 HPE 템플릿(Template_db_custom) 연결되어 있으면 Unlink and clear 또는 제거
- 새 Template_db_custom_dell 추가
- 저장
1~2분 정도 지나면:
- 호스트 최신 데이터에서
- psu.health[1], psu.health[2] → OK
- pdisk.health → 0 (값 매핑으로는 OK)
- 대시보드에서는
- PS1 / PS2 / DISK 열 모두 OK 표시
- 장애 발생 시:
- PSU 이상 → PSU 1 비정상, PSU 2 비정상 트리거 알람
- 디스크 이상 → DISK 비정상 트리거 알람
⭐발표자 : 박태진님
0. 환경 / 목표 요약
1. OMSA 설치
1-1. OMSA 패키지 복사
NMS 서버에서 LDAP_DB#3로 push 방식으로 복사.
# NMS 서버에서
scp OM-SrvAdmin-Dell-Web-LX-10.1.0.0-4561.RHEL7.x86_64_A00.tar.gz osk@10.10.119.45:/home/osk/
LDAP_DB#3에서 root로 로그인 후:
su -
cd /opt
mkdir -p dell_omsa_10.1
mv /home/osk/OM-SrvAdmin-Dell-Web-LX-10.1.0.0-4561.RHEL7.x86_64_A00.tar.gz dell_omsa_10.1/
cd dell_omsa_10.1
tar xzf OM-SrvAdmin-Dell-Web-LX-10.1.0.0-4561.RHEL7.x86_64_A00.tar.gz
# docs, linux, RPM-GPG-KEY, setup.sh 등 생성
1-2. 필수 패키지 설치
yum install -y pciutils
※pciutils 설치 없이 omsa 바로 설치시 에러 내용 (pciutils의존이라 설치해야 한다.)
Installing the selected packages.
warning: srvadmin-deng-10.1.0.0-4561.18274.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 34d8786f: NOKEY
error: Failed dependencies:
pciutils is needed by srvadmin-omilcore-10.1.0.0-4561.18274.el7.x86_64
- Installation of some of the packages have failed.
- Please refer to 'readme_ins.txt' file for more details.
- The readme_ins.txt can be found in srvadmin/docs/readme folder
1-3. OMSA 설치(스토리지 중심)
cd /opt/dell_omsa_10.1/linux/supportscripts
./srvadmin-install.sh --storage
설치 후 omreport 위치 확인:
find /opt -maxdepth 4 -name omreport 2>/dev/null
# /opt/dell/srvadmin/bin/omreport
# /opt/dell/srvadmin/sbin/omreport
(원하면 root PATH에 추가)
echo 'export PATH=$PATH:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/sbin' >> /root/.bash_profile
2. OMSA dataeng 서비스 자동 기동
2-1. 최초 상태 확인
systemctl status dataeng
# Loaded: masked (/dev/null; bad)
# Active: inactive (dead)
2-2. 마스크 해제 + 수동 기동
systemctl unmask dataeng
systemctl daemon-reload
systemctl start dataeng
systemctl status dataeng
# Active: active (exited) (SysV 스크립트 방식이라 이렇게 나오는 게 정상)
2-3. 재부팅 시 자동 시작 설정 (root crontab)
dataeng 가 SysV 스크립트라 systemctl enable 이 매끄럽지 않아서, @reboot 크론으로 처리.
crontab -e # root 계정 기준
맨 아래에 한 줄 추가:
@reboot /etc/rc.d/init.d/dataeng start >/var/log/dataeng-autostart.log 2>&1
crond 가 enable 상태인지 확인:
systemctl enable crond
systemctl start crond
systemctl status crond
3. 서버 측 Zabbix 설정 (스크립트/유저파라미터/sudoers)
3-1. 스크립트 디렉터리 생성
mkdir -p /etc/zabbix/scripts
cd /etc/zabbix/scripts
3-2. PSU 상태 스크립트 psu_health.sh
cat > /etc/zabbix/scripts/psu_health.sh << 'EOF'
#!/usr/bin/env bash
# Dell OMSA PSU 상태 조회 (간단 버전)
# psu_health.sh 1 -> 첫 번째 PSU 상태
# psu_health.sh 2 -> 두 번째 PSU 상태
set -euo pipefail
export LC_ALL=C
PSU_NUM="${1:-1}"
OMREPORT=${OMREPORT:-/opt/dell/srvadmin/bin/omreport}
STATUS="$(
sudo -n "$OMREPORT" chassis pwrsupplies -fmt ssv 2>/dev/null | \
awk -F';' -v num="$PSU_NUM" '
NF < 2 { next } # 헤더/공백 라인 스킵
# 첫 번째 필드가 숫자(0,1,2,...)인 줄만 PSU로 취급
$1 ~ /^[0-9]+$/ {
i++
if (i == num) {
gsub(/^[ \t]+|[ \t]+$/, "", $2)
print $2
found=1
exit
}
}
END {
if (!found) print "NotPresent"
}
'
)"# 트리거/템플릿이 대문자 "OK" 기준이므로 대문자로 변환
STATUS=$(echo "$STATUS" | tr '[:lower:]' '[:upper:]')
echo "${STATUS:-NOTPRESENT}"
EOF
chmod 750 /etc/zabbix/scripts/psu_health.sh
chown root:zabbix /etc/zabbix/scripts/psu_health.sh
결과 예: OK, NOTPRESENT 등.
3-3. 디스크 상태 스크립트 pdisk_health.sh
cat > /etc/zabbix/scripts/pdisk_health.sh << 'EOF'
#!/usr/bin/env bash
# Dell OMSA(omreport) 기반 PD(물리 디스크) 상태 수집
#
# 사용:
# pdisk_health.sh discovery -> LLD JSON ({#PDID}, {#PDSTATE})
# pdisk_health.sh state <ID> -> 해당 PD 상태 (Online/Failed/Ready...)
# pdisk_health.sh summary -> "pd=0:1:0:Online,0:1:1:Online,..." 한 줄
set -euo pipefail
export LC_ALL=C
OMREPORT=${OMREPORT:-/opt/dell/srvadmin/bin/omreport}
CTL=${CTL:-0} # 단일 컨트롤러 환경 가정
pd_lines() {
# omreport storage pdisk controller=<CTL> 출력에서
# ID : 0:1:0
# State : Online
# 구조만 추출 -> "0:1:0 Online"
sudo -n "$OMREPORT" storage pdisk controller="$CTL" 2>/dev/null | \
awk '
BEGIN { id=""; state="" }
/^ID[[:space:]]*:/ {
sub(/^[^:]*:[[:space:]]*/, "", $0)
gsub(/^[[:space:]]+|[[:space:]]+$/, "", $0)
id = $0
}
/^State[[:space:]]*:/ {
sub(/^[^:]*:[[:space:]]*/, "", $0)
gsub(/^[[:space:]]+|[[:space:]]+$/, "", $0)
state = $0
if (id != "") {
print id, state
id=""; state=""
}
}
'}
case "${1:-}" in
discovery)
echo -n '{ "data":['
first=1
while read -r slot state; do
[ -z "$slot" ] && continue
if [ $first -eq 0 ]; then echo -n ','; fi
first=0
printf '{ "{#PDID}":"%s", "{#PDSTATE}":"%s" }' "$slot" "$state"
done < <(pd_lines)
echo '] }'
;;
state)
pd="${2:?ID 형식 필요 예: 0:1:0}"
pd_lines | awk -v k="$pd" '
$1==k { print $2; found=1; exit }
END { if (!found) print "UNKNOWN" }
';;
summary|*)
echo "pd=$(pd_lines | awk '{ printf "%s:%s,", $1, $2 }' | sed "s/,$//")"
;;
esac
EOF
chmod 750 /etc/zabbix/scripts/pdisk_health.sh
chown root:zabbix /etc/zabbix/scripts/pdisk_health.sh
3-4. sudoers 설정
cat > /etc/sudoers.d/zabbix-agent << 'EOF'
Defaults:zabbix !requiretty
Defaults:zabbix secure_path=/usr/sbin:/usr/bin:/sbin:/bin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/sbin
# ── 공통: 프로세스/CPU 수집 ─────────────────────────────
zabbix ALL=(ALL) NOPASSWD: /usr/bin/ps
zabbix ALL=(ALL) NOPASSWD: /usr/bin/pgrep
# ── Dell 전용: OMSA omreport + Zabbix 스크립트 ──────────
zabbix ALL=(ALL) NOPASSWD: /opt/dell/srvadmin/bin/omreport
zabbix ALL=(ALL) NOPASSWD: /etc/zabbix/scripts/psu_health.sh
zabbix ALL=(ALL) NOPASSWD: /etc/zabbix/scripts/pdisk_health.sh
# ── 공통: nft 카운터(필요한 서버에만 사용) ─────────────
zabbix ALL=(ALL) NOPASSWD: /usr/sbin/nft list counter inet netmon host_in
zabbix ALL=(ALL) NOPASSWD: /usr/sbin/nft list counter inet netmon host_out
EOF
visudo -c -f /etc/sudoers.d/zabbix-agent # 문법 체크
3-5. UserParameter 설정
cd /etc/zabbix/zabbix_agentd.d
PSU용
cat > userparameter_psu.conf << 'EOF'
UserParameter=psu.health[*],/etc/zabbix/scripts/psu_health.sh $1
EOF
디스크용
cat > pdisk.conf << 'EOF'
# 물리 디스크 LLD
UserParameter=pdisk.discovery,sudo -n /etc/zabbix/scripts/pdisk_health.sh discovery
# 특정 디스크 상태
UserParameter=pdisk.state[*],sudo -n /etc/zabbix/scripts/pdisk_health.sh state "$1"
# 요약 문자열 (예: pd=0:1:0:Online,0:1:1:Online)
UserParameter=pdisk.summary,sudo -n /etc/zabbix/scripts/pdisk_health.sh summary
EOF
3-6. Zabbix Agent 재시작 및 서버 측 테스트
systemctl restart zabbix-agent
systemctl status zabbix-agent
서버에서 직접 확인:
# PSU
sudo -u zabbix /etc/zabbix/scripts/psu_health.sh 1
sudo -u zabbix /etc/zabbix/scripts/psu_health.sh 2
# 디스크
sudo -u zabbix /etc/zabbix/scripts/pdisk_health.sh summary
sudo -u zabbix /etc/zabbix/scripts/pdisk_health.sh state 0:1:0
Zabbix 서버(NMS)에서 원격 테스트:
zabbix_get -s 10.10.119.45 -k 'psu.health[1]'
zabbix_get -s 10.10.119.45 -k 'psu.health[2]'
zabbix_get -s 10.10.119.45 -k 'pdisk.summary'
4. Zabbix UI 설정 (템플릿/아이템/트리거/대시보드)
이 부분은 HPE용 템플릿을 복제해서 Dell용으로 수정하는 방식.
4-1. 값 매핑 (공통)
PSU는 문자열 그대로(OK, NOTPRESENT) 사용하므로 값 매핑 없이도 됨.
4-2. Dell용 템플릿 복제
이후 설정은 전부 이 Dell 템플릿에서 진행.
4-3. 디스크 마스터 아이템 pdisk.summary
Dell 템플릿에서:
4-4. 디스크 의존 아이템 pdisk.health
같은 템플릿에서:
(기존 HPE 전처리가 있으면 그대로 복붙, Dell 결과값 Online 기준으로 수정)
예: 정규표현식 1단계로 “모든 디스크가 Online 이면 0, 아니면 1” 로 만드는 방법
(?s).*pd=[0-9:]+:Online(,[0-9:]+:Online)*.*
실제 결과는:
(환경마다 기존 전처리 구성이 조금씩 다를 수 있어서, 지금 쓰는 HPE 템플릿의 storcli.pd.health 전처리 구성을 그대로 따라가는 게 가장 안전함)
4-5. 디스크 트리거
Dell 템플릿에서:
{Template_db_custom_dell:pdisk.health.last()}=1
(조금 더 보수적으로 하고 싶으면 min(5m)=1 로 변경)
4-6. PSU 아이템 / 트리거 (Dell도 HPE와 공통 키 사용)
Dell 템플릿 또는 호스트에서:
아이템
트리거
{Template_db_custom_dell:psu.health[1].last()}<>"OK"
{Template_db_custom_dell:psu.health[2].last()}<>"OK"
스크립트에서 이미 OK 대문자로 변환하기 때문에 이 표현식 그대로 사용 가능.
단 PSU가 1개짜리 서버에선 NOTPRESENT 를 정상으로 보려면
iregexp("^(OK|NOTPRESENT)$")=0 같은 패턴으로 바꾸면 된다.
4-7. 템플릿을 Dell 서버에 연결
1~2분 정도 지나면:
⭐발표자 : 박태진님