•  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
r3
r1

(새 문서)
1[목차]
2== 개요 ==
3KT GTV 서버 환경점검을 위해 사용하는 스크립트이다.
4공통 점검 내역은 동일하게 수행하나 LSM/ADC 서버와 VOD 서버 역할이 달라 점검내용이 다른 부분이 있다.
5
r3
6== 점검 스크립트 사용 방법 ==
71. 아래 스크립트를 복사해 서버에 .sh 파일로 만들어 준다.
8> # vim Server_Check.sh
9
102. 스크립트 실행 권한을 부여 한다.
11> # chmod +x Server_Check.sh
12
133. 스크립트 수행 시 숫자 7과 해당 서버를 명시한다.
14> LSM 서버일 경우 [br] # ./Server_Check.sh 7 LSM
15
16> ADC 서버일 경우 [br] # ./Server_Check.sh 7 ADC
17
18> VOD 서버일 경우 [br] # ./Server_Check.sh 7 VOD
19
20== 스크립트 점검 결과 확인 ==
21스크립트 수행 후 모든 항목이 '''이상이 없다면''' 아래와 같이 출력된다.
22>... [br] 모든 항목이 이상없음 상태입니다.
23
24스크립트 수행 후 점검 결과에 '''이상이 있다면''' 아래와 같이 출력된다.
25> [점검필요 항목] [br] 점검 내용 : NIC 사용 현황 [br] 상태: 점검필요 [br] [br] 점검 내용 : 시간동기화 확인 [br] 상태: 점검필요 [br] ...
26
r1

(새 문서)
27== 공통 점검 내역 ==
281. HW 모델명 확인
292. HDD 및 RAID 구성, 상태 점검
303. 시스템 로그 점검
314. NIC 사용 현황 점검
325. Bond 및 IP 설정 점검
336. Routing 점검
347. OS 버전 점검
358. OS Disk 용량 점검
369. /data Disk 용량 점검
3710. 시간동기화 점검
3811. GateWay Ping 점검
3912. 서버 부팅 관련 설정파일 점검
4013. 프로세스 서비스 이중화 상태 점검
4114. 프로세스 포트 및 상태 점검
4215. CPU 사용률 점검
43
44== LSM/ADC 서버 점검 내역 ==
451. LBAdmin 상태 점검
462. LFMServer 로그 점검
473. LFMSinkModule 로그 점검
484. CiGLBServer 로그 점검
495. L_ADS 로그 점검
506. ADSController 로그 점검
517. ADSClient 로그 점검
528. LoadBalancer2 로그 점검
53
54
55== VOD 서버 점검 내역 ==
561. CIHVODServer 로그 점검
57
r3
58==# 스크립트 본문 #==
59{{{
r1

(새 문서)
60
r2
61#!/bin/bash
62# -*- coding : UTF-8 -*-
63# version : 1.0.0
64# create date : 2021-11-18
65# update date : 2025-02-10
66# ----------------------------------------------
67# Copyright (c) 2021
68# @author mir kim
69# Server_Check.sh
r1

(새 문서)
70
71scriptName="Server_Check.sh"
72scriptVersion="20250210"
73check_failures=""
74output_file="/home/castis/output_data_$(date +'%Y-%m-%d_%H-%M').txt"
75ENV=$(env | grep LANG)
76
77manPage="""
78 SYNOPSIS
79 ./Server_Check.sh [?|-h]
80
81 This script works as follows.
82 1. H/W 점검 결과 추출
83 2. Network 상태 점검 결과 추출
84 3. OS 상태 점검 결과 추출
85 4. 이중화 점검 결과 추출
86 5. 서비스 현황 점검 결과 추출
87 6. 종합의견 결과 추출
88 7. JSON 형식으로 반환
89
90 함수 Make_Json_List() parameter
91
92 ex) Make_Json_List 생성유형 \"점검항목 큰 제목\" \"점검항목\" \"점검기준 값\" \"상세 점검 방법\" \"점검 결과 값\" \"양호/불량\"
93
94 OPTIONS
95 ? or -h
96 Show this help message and exit
97
98 """
99
100#local functions start
101ServerName=$(hostname)
102
103# 점검 결과 Result
104Success="양호"
105Fail="불량"
106
107# server model
108Server_Product=$(dmidecode | grep Prod | head -1 | cut -d : -f2 | awk '{print $1, $2, $3, $4}')
109
110function f_Usage() {
111 echo "$manPage"
112}
113
114Item_Num=1
115
116function Make_Json_List() {
117 # echo "DEBUG: 매개변수 -> $1 | $2 | $3 | $4 | $5 | $6"
118 case $1 in
119 First_Start)
120 echo -e "--------------------------------------------"
121 echo -e "점검 내용 : $3"
122 echo -e "결과: $5"
123 echo -e "상태: $6"
124 echo -e "--------------------------------------------"
125 ;;
126 Start)
127 echo -e "점검 내용 : $3"
128 echo -e "결과: $5"
129 echo -e "상태: $6"
130 echo -e "--------------------------------------------"
131 ;;
132 Middle)
133 echo -e "점검 내용 : $3"
134 echo -e "결과: $5"
135 echo -e "상태: $6"
136 echo -e "--------------------------------------------"
137 ;;
138 End)
139 echo -e "점검 내용 : $3"
140 echo -e "결과: $5"
141 echo -e "상태: $6"
142 echo -e "--------------------------------------------"
143 ;;
144 First_Single)
145 echo -e "점검 내용 : $3"
146 echo -e "결과: $5"
147 echo -e "상태: $6"
148 echo -e "--------------------------------------------"
149 ;;
150 Single)
151 echo -e "점검 내용 : $3"
152 echo -e "결과: $5"
153 echo -e "상태: $6"
154 echo -e "--------------------------------------------"
155 ;;
156 esac
157}
158
159# H/W 점검 결과 추출
160function HW_Check() {
161 # [ H/W 모델명 확인 ]
162 Make_Json_List First_Start "HardwareCheck" "H/W 모델명. 확인" "육안확인 결과" "dmidecode | grep 'Product Name'" "$(dmidecode | grep "Product Name" | head -1 | cut -d : -f2 | awk '{print $1, $2, $3, $4}')" "$Success"
163
164 # [ HDD 용량 및 RAID 구성 점검]
165
166 # Dell 서버
167 if [[ $Server_Product =~ "PowerEdge" ]]; then
168
169 battery_status=$(omreport storage battery | grep "Status" | grep -v Ok)
170 disk_status=$(omreport storage pdisk controller=0 | grep "Power Status" -v | grep -w Status | grep -v Ok)
171
172 if [ -n "$battery_status" ] || [ -n "$disk_status" ]; then
173 Make_Json_List Middle "" "Dell HDD상태 및 RAID 구성 점검" "Fail 또는 Error 있음" "omreport storage battery" "DISK, cache_battery 점검필요" "$Fail"
174 else
175 Make_Json_List Middle "" "Dell HDD상태 및 RAID 구성 점검" "Fail 또는 Error 없음" "omreport storage pdisk controller=0" "이상없음" "$Success"
176 fi
177
178 # Gen9 서버
179 elif [[ $Server_Product =~ "Gen9" ]]; then
180 HP="hpssacli"
181
182 # Gen10 서버
183 elif [[ $Server_Product =~ "Gen10" ]]; then
184 HP="ssacli"
185
186 # G8 이하 버전 HP 서버
187 else
188 HP="hpacucli"
189 fi # 여기서 if 문을 닫습니다.
190
191 # HP 서버
192 if [ ! -z $HP ]; then
193
194 cache_battery_status=$($HP ctrl all show config detail | egrep -i "Cache Status|controller status" | grep -i "Failed")
195
196 for list in logicaldrive physicaldrive; do
197 drive_check=$($HP ctrl all show config detail | grep -i "failed")
198 case $? in
199 0)
200 drive_check+=(${list})
201 ;;
202 esac
203 done
204
205 if [ -n "$drive_check" ] || [ -n "$cache_battery_status" ]; then
206 Make_Json_List Middle "" "HPE HDD 상태 및 RAID 구성 점검" "Fail 또는 Error 있음" "$HP ctrl all show detail" "DISK 또는 cache_battery 상태 점검필요" "$Fail"
207 else
208 Make_Json_List Middle "" "HPE HDD 상태 및 RAID 구성 점검" "Fail 또는 Error 없음" "$HP ctrl all show detail" "이상없음" "$Success"
209 fi
210 fi
211
212 # [ 시스템 로그 점검]
213 Syslog=$(grep -im 11 error /var/log/messages | egrep -vc "L2 Error|drive_cmd")
214 if [ $Syslog -le 10 ]; then
215 Make_Json_List Middle "" "시스템 로그 점검" "에러 없음" "grep -i Error /var/log/messages" "이상없음" "$Success"
216 else
217 Make_Json_List Middle "" "시스템 로그 점검" "에러 없음" "grep -i Error /var/log/messages" "점검필요" "$Fail"
218 fi
219}
220
221# Network 상태 점검 결과 추출
222function Network_Check() {
223
224 # [ NIC 사용 현황]
225 OS_Version=$(awk '{print $(NF-1)}' /etc/redhat-release)
226 USE_Bond=$(ls -al /etc/sysconfig/network-scripts/ifcfg-bond* | egrep -w "ifcfg-bond0$|ifcfg-bond1$|ifcfg-bond2quot; -c 2>/dev/null)
227
228 case $OS_Version in
229
230 6.4 | 6.6 | 6.9)
231 Alias=$(grep -c 'alias bond' /etc/modprobe.d/bonding.conf)
232 ;;
233
234 5 | 5.4 | 5.7)
235 Alias=$(grep -c 'alias bond' /etc/modprobe.conf)
236 ;;
237
238 7.5.1804)
239 Alias=$(echo $USE_Bond)
240 ;;
241 esac
242
243 case $USE_Bond in
244
245 $Alias)
246 Make_Json_List Start "NetworkCheck" "NIC 사용 현황" "-" "ethtool ethX\\\ncat /etc/modprobe.conf\\\ncat /etc/modprobe.d/bonding.conf" "이상없음" "$Success"
247 ;;
248 *)
249 Make_Json_List Start "NetworkCheck" "NIC 사용 현황" "-" "ethtool ethX\\\ncat /etc/modprobe.conf\\\ncat /etc/modprobe.d/bonding.conf" "점검필요" "$Fail"
250 ;;
251 esac
252
253 # [ IP 설정 확인]
254
255 # vpc 사용 여부
256 ip addr show vpcmanage >/dev/null 2>/dev/null
257
258 case $? in
259
260 0)
261 Manage_IP=$(ip addr show vpcmanage | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }')
262 Service_IP=$(ip addr show vpcservice | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }')
263
264 Make_Json_List Middle "" "IP 설정 확인" "-" "ifconfig 명령으로 IP 설정 확인" "$Manage_IP\\\n$Service_IP" "$Success"
265 ;;
266 *)
267 # bond2 사용 여부
268 ip addr show bond2 >/dev/null 2>/dev/null
269
270 case $? in
271
272 0)
273 Manage_IP=$(ip addr show bond0 | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }' | head -1)
274 Service1_IP=$(ip addr show bond1 | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }' | head -1)
275 Service2_IP=$(ip addr show bond2 | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }' | head -1)
276
277 Make_Json_List Middle "" "IP 설정 확인" "-" "ifconfig 명령으로 IP 설정 확인" "Manage_IP: $Manage_IP, Service1_IP: $Service1_IP, Service2_IP : $Service2_IP" "$Success"
278 ;;
279 *)
280 Manage_IP=$(ip addr show bond0 | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }' | head -1)
281 Service_IP=$(ip addr show bond1 | grep -w "inet" | cut -d'/' -f1 | awk '{ print $2 }' | head -1)
282
283 Make_Json_List Middle "" "IP 설정 확인" "-" "ifconfig 명령으로 IP 설정 확인" "$Manage_IP: $Manage_IP, Service_IP: $Service_IP" "$Success"
284
285 ;;
286 esac
287 ;;
288 esac
289
290 # 관리 및 서비스 네트워크 Link 상태 점검
291 for list in $(grep "ONBOOT=yes" /etc/sysconfig/network-scripts/ifcfg-bond[0-9] | awk -F'ifcfg-' '{ split($2,arr,":"); print arr[1] }'); do
292 case $list in
293 bond1)
294 # 후지쯔 서버
295 if [[ $Server_Product =~ "PRIMERGY" ]]; then
296
297 NIC_Fail_Cnt=$(grep "$Active_NIC" /proc/net/bonding/bond1 -A 2 | grep Count | cut -d : -f2 | awk '{ if ( $1 >= 100 ){print}}' | wc -l)
298 Active_NIC=$(grep "MASTER_SLAVE" /usr/local/castis/bfod/bfod.cfg | awk -F'=' '{ print $NF }')
299 grep "$Active_NIC" /proc/net/bonding/${list} -A 2 | grep "Status" | grep -vq "up"
300 Link_Status=$?
301 else
302
303 NIC_Fail_Cnt=$(grep Count /proc/net/bonding/$list | cut -d : -f2 | awk '{ if ( $1 >= 100 ){print}}' | wc -l)
304 grep "Status" /proc/net/bonding/${list} | grep -vq "up"
305 Link_Status=$?
306 fi
307 ;;
308
309 *)
310 NIC_Fail_Cnt=$(grep Count /proc/net/bonding/$list | cut -d : -f2 | awk '{ if ( $1 >= 100 ){print}}' | wc -l)
311 grep "Status" /proc/net/bonding/${list} | grep -vq "up"
312 Link_Status=$?
313 ;;
314 esac
315 done
316
317 # [ Routing 설정 점검]
318
319 #bond2 존재 여부
320 src_Cnt=$(ip route show | grep "src" | wc -l)
321 Static_IP_Cnt=$(grep "IPADDR" /etc/sysconfig/network-scripts/ifcfg-* | egrep -v "#|127.0.0.1" | wc -l)
322 case $src_Cnt in
323 $Static_IP_Cnt)
324 Make_Json_List End "" "Routing 설정 점검" "" "route -n routing 정보 확인" "이상없음" "$Success"
325 ;;
326 *)
327 Make_Json_List End "" "Routing 설정 점검" "" "route -n routing 정보 확인" "점검필요" "$Fail"
328 ;;
329 esac
330}
331
332# OS 상태 점검 결과 추출
333function OS_Check() {
334
335 OS_Limit_Space=70
336 L_Data_Limit_Space=90
337 V_Data_Limit_Space=92
338
339 # [ OS/Kerne 버전 ]
340
341 OS_Version=$(awk -F 'release' '{ print $2 }' /etc/redhat-release | awk '{ print $(NF-1) }')
342 Make_Json_List Start "OSCheck" "OS/Kernel 버전" "-" "cat /etc/redhat-release\\\n uname -a" "$OS_Version" "$Success"
343
344 # [ OS_디스크 용량 점검]
345 OS_Free_Space=$(df -h | grep -w "/" | awk '{ print $(NF-1) }' | cut -d'%' -f1)
346 if [ $OS_Free_Space -lt $OS_Limit_Space ]; then
347
348 Make_Json_List Middle "" "OS 디스크 용량 점검 - ( 마운트위치: / )" "${OS_Limit_Space}% 미만" "df -h 명령으로 / 의 사용률 확인" "이상없음" "$Success"
349 else
350 Make_Json_List Middle "" "OS 디스크 용량 점검 - ( 마운트위치: / )" "${OS_Limit_Space}% 미만" "df -h 명령으로 / 의 사용률 확인" "점검필요" "$Fail"
351 fi
352
353 # [ 스토리지_디스크 용량 점검]
354 Data_Fail_Cnt=0
355 case $1 in
356 LSM | ADC)
357 for list in $(df -h | egrep "/data" | grep "%" | awk '{ print $NF }'); do
358
359 if [ $(df -h | grep -w "$list" | awk '{ print $(NF-1) }' | cut -d'%' -f1) -gt $L_Data_Limit_Space ]; then ((Data_Fail_Cnt++)); fi
360 done
361
362 case $Data_Fail_Cnt in
363 0)
364 Make_Json_List Middle "" "스토리지 디스크 용량 점검 - ( 마운트위치: /data? )" "${L_Data_Limit_Space}% 미만" "df -h 명령으로 각 /data?들의 사용률 확인" "이상없음" "$Success"
365 ;;
366 *)
367 Make_Json_List Middle "" "스토리지 디스크 용량 점검 - ( 마운트위치: /data? )" "${L_Data_Limit_Space}% 미만" "df -h 명령으로 각 /data?들의 사용률 확인" "점검필요" "$Fail"
368 ;;
369 esac
370 ;;
371 VOD)
372
373 if df -h | egrep -q "/data"; then
374 for list in $(df -h | egrep "/data" | grep "%" | awk '{ print $NF }'); do
375 if [ $(df -h | grep -w "$list" | awk '{ print $(NF-1) }' | cut -d'%' -f1) -gt $V_Data_Limit_Space ]; then
376 ((Data_Fail_Cnt++))
377 fi
378 done
379 else
380 # /data 디렉토리가 없으면 점검필요로 처리
381 Data_Fail_Cnt=1
382 fi
383
384 case $Data_Fail_Cnt in
385
386 0)
387 Make_Json_List Middle "" "스토리지 디스크 용량 점검 - ( 마운트위치: /data? )" "${V_Data_Limit_Space}% 미만" "df -h 명령으로 각 /data?들의 사용률 확인" "이상없음" "$Success"
388 ;;
389 *)
390 Make_Json_List Middle "" "스토리지 디스크 용량 점검 - ( 마운트위치: /data? )" "${V_Data_Limit_Space}% 미만" "df -h 명령으로 각 /data?들의 사용률 확인" "점검필요" "$Fail"
391 ;;
392 esac
393 ;;
394 esac
395
396 # [ 시간동기화 확인]
397 ntpq -p | egrep -q '\+|\*'
398
399 case $? in
400 0)
401 Make_Json_List Middle "" "시간동기화 확인" "*220.73.142.71\\\n*220.73.142.73" "ntpq -p 명령으로 시간 동기화 동작 상태 확인" "이상없음" "$Success"
402 ;;
403 *)
404 Make_Json_List Middle "" "시간동기화 확인" "*220.73.142.71\\\n*220.73.142.73" "ntpq -p 명령으로 시간 동기화 동작 상태 확인" "점검필요" "$Fail"
405 ;;
406 esac
407
408 # GATEWAY PING 확인
409
410 ifconfig bond2 >/dev/null 2>/dev/null
411 if [ $? -eq 0 ]; then
412 Service_GW=($(ip route show | grep default -A 2 | grep "nexthop via" | awk -F'via ' '{ split($2,arr," "); print arr[1] }'))
413 Service_Interface=($(ip route show | grep default -A 2 | grep "nexthop via" | awk -F'dev ' '{ split($2,arr," "); print arr[1] }'))
414 else
415 Service_GW=($(ip route show | grep default -A 2 | grep via | awk -F'via ' '{ split($2,arr," "); print arr[1] }'))
416 Service_Interface=($(ip route show | grep default -A 2 | grep via | awk -F'dev ' '{ split($2,arr," "); print arr[1] }'))
417
418 fi
419 Service_GW_Result=0
420
421 for ((NIC_Cnt = 0; NIC_Cnt < ${#Service_GW[@]}; NIC_Cnt++)); do
422 ping -I ${Service_Interface[$NIC_Cnt]} ${Service_GW[$NIC_Cnt]} -c 1 >/dev/null 2>/dev/null
423 ((Service_GW_Result = $Service_GW_Result + $?))
424 done
425
426 if [ $Service_GW_Result -eq 0 ]; then
427 Make_Json_List Middle "" "GATEWAY_PING 확인" "정상" "ping '${Service_GW[*]}' (${Service_Interface[*]})" "이상없음" "$Success"
428 else
429 Make_Json_List Middle "" "GATEWAY_PING 확인" "정상" "ping '${Service_GW[*]}' (${Service_Interface[*]})" "점검필요" "$Fail"
430 fi
431
432 # [ 서버 부팅 시 스크립트 권한 확인, 고성능서버 설정 확인 등 ]
433
434 sum_Result=()
435
436 #crontab (파일 권한 및 소유자 확인)
437 ls -l /etc/crontab | awk '{ print $1 }' | egrep -q "^-rw-"
438 cron_Authority=$?
439 ls -ltr /etc/crontab | awk '{ print $3 }' | grep -q "root"
440 cron_Manager=$?
441
442 if [ $cron_Authority -eq 0 ] && [ $cron_Manager -eq 0 ]; then
443 cron_Result=0
444 else
445 cron_Result=" cron "
446 fi
447
448 #sysctl.conf (파일에 해당 문자열이 있는지 확인인)
449 grep -wq "TCP Setting by CASTIS" /etc/sysctl.conf
450 sysctl_Result=$?
451
452 if [ $sysctl_Result -ne 0 ]; then sysctl_Result=" sysctl "; fi
453
454 #rc.local (심볼릭 링크 설정 확인인)
455 ls -ltr /etc/rc.local | egrep "^lrwx" | awk '{ print $NF }' | egrep -q "rc.d/rc.local"
456 rclocal_Authority=$?
457 if [ $rclocal_Authority -ne 0 ]; then rclocal_Authority=" rclocal_Authority "; fi
458
459 Omission_Ps=()
460 case $1 in
461 LSM | ADC)
462 #AD node check
463 echo $(hostname) | grep -wq "AD"
464 AD_Check=$?
465
466 case $AD_Check in
467 0)
468 rc_local_Ps=("ServiceMonitorCtl" "NetIOCtl" "CiMonitoringAgentMonitor")
469 ;;
470 1)
471 rc_local_Ps=("ServiceMonitorCtl" "NetIOCtl" "LFMSinkModuleMonitor" "CiMonitoringAgentMonitor")
472 ;;
473 esac
474
475 # share storage check
476 grep -q "Virtual" /usr/local/castis/LoadBalancer2.cfg
477 Share_Data_Result=$?
478
479 if [ $Share_Data_Result -eq 0 ]; then rc_local_Ps+=("CenterFileManagerCtl"); fi
480 ;;
481 VOD)
482 # share storage check
483 grep -q "Shared_Base_Directory" /usr/local/castis/vod.cfg
484 Share_Data_Result=$?
485
486 rc_local_Ps=("ServiceMonitorCtl" "eStreamServer" "NetIOCtl" "ADMMonitor")
487 if [ $Share_Data_Result -eq 0 ]; then rc_local_Ps+=("CenterFileWorkerCtl"); fi
488 ;;
489 esac
490
491 for ((PS_Cnt = 0; PS_Cnt < ${#rc_local_Ps[@]}; PS_Cnt++)); do
492
493 grep -v '#' /etc/rc.local | grep -q "${rc_local_Ps[$PS_Cnt]}"
494 if [ $? -ne 0 ]; then Omission_Ps+=(${rc_local_Ps[$PS_Cnt]}); fi
495
496 done
497
498 for list in $cron_Result $sysctl_Result $rclocal_Authority; do
499 if [ "$list" != "0" ]; then sum_Result+=($list); fi
500 done
501
502 if [ ! $sum_Result ] && [ ! $Omission_Ps ]; then
503 Make_Json_List End "" "서버 부팅 시 스크립트 설정 누락 확인, 고성능 서버 설정 확인 등" "정상" "rc.local, crontab, sysctl.conf" "이상없음" "$Success"
504 else
505 Make_Json_List End "" "서버 부팅 시 스크립트 설정 누락 확인, 고성능 서버 설정 확인 등" "정상" "rc.local, crontab, sysctl.conf" "${sum_Result[*]} ${Omission_Ps[*]} 점검필요" "$Fail"
506 fi
507}
508
509# 이중화 점검
510function Cluster_Check() {
511
512 #[ 프로세스 이중화 테스트 점검 ]
513 grep -v "#" /usr/local/castis/svcmonitor.cfg | grep -q "Service1_My_Priority=0"
514 # Master_Cnt = 1 : backup, 0: Active
515 Master_Cnt=$?
516 VIP_Up_Fail_Cnt=0
517
518 for V_IP in $(grep "Representative_NIC" /usr/local/castis/svcmonitor.cfg | grep -v "#" | cut -d '=' -f2 | sort -u); do
519 ip addr show | grep -q "secondary ${V_IP}"
520 if [ $? -ne 0 ]; then ((VIP_Up_Fail_Cnt++)); fi
521 done
522
523 case $VIP_Up_Fail_Cnt in
524 0)
525 Make_Json_List Single "ClusterCheck" "프로세스 이중화 테스트 점검" "-" "LSM에서 실행 중이면 정상, ADC에서 실행중이면 절체로 판단" "이상없음" "$Success"
526 return 0
527 ;;
528 *)
529 case $Master_Cnt in
530 0)
531 Make_Json_List Single "ClusterCheck" "프로세스 이중화 테스트 점검" "-" "LSM에서 실행 중이면 정상, ADC에서 실행중이면 절체로 판단" "점검필요" "$Fail"
532 return 1
533 ;;
534 1)
535 Make_Json_List Single "ClusterCheck" "프로세스 이중화 테스트 점검" "-" "LSM에서 실행 중이면 정상, ADC에서 실행중이면 절체로 판단" "이상없음" "$Success"
536 return 1
537 ;;
538 esac
539 ;;
540 esac
541
542}
543
544# 서비스 현황 점검
545Service_Solution_Status_Check() {
546
547 DAY=$(date +%F)
548 MONTH=$(date +%Y-%m)
549 EVENTLOG_DAY=$(date +%Y%m%d)
550 OS_Version=$(awk '{print $(NF-1)}' /etc/redhat-release)
551
552 # LSM 포트 변수 정의
553 LFMServer_PORT="8549"
554 LFMSinkModule_PORT="8550"
555 LoadBalancer2_PORT="50890"
556 ADSController_PORT="904"
557 ADSClient_PORT="911"
558 L_ADS_PORT="30000"
559 L_GSDM_PORT="18079"
560 L_NRM_PORT="18081"
561 file_requester_PORT="18084"
562 cache_manager_PORT="8081"
563 NetIOServer3_PORT="32128"
564 CiMonitoringAgent_PORT="30002"
565 ServiceMonitor_PORT="3511"
566
567 # VOD 포트 변수 정의
568 CiHVODServer_PORT="554"
569 ADM_PORT="40080"
570 ADS_PORT="30000"
571 NetIOServer3_PORT="32128"
572 cache_manager_PORT="8081"
573 CiMonitoringAgent_PORT="30002"
574
575 # LISTEN
576 LISTEN_OUTPUT=$(netstat -tnpl | awk '/LISTEN/ {split($4, a, ":"); print a[length(a)]}' | sed 's/\/.*//g')
577
578 # 누락된 항목을 저장할 변수
579 MISSING_ITEMS=""
580 ISSUES_FOUND=0
581
582 # LSM과 VOD 구분하여 점검
583 case $1 in
584 LSM)
585 for PORT_LSM in ServiceMonitor_PORT LFMServer_PORT LFMSinkModule_PORT LoadBalancer2_PORT ADSController_PORT ADSClient_PORT L_ADS_PORT L_GSDM_PORT L_NRM_PORT file_requester_PORT cache_manager_PORT NetIOServer3_PORT CiMonitoringAgent_PORT; do
586 PORT=${!PORT_LSM}
587 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
588 MISSING_ITEMS+="$PORT_LSM($PORT), "
589 TEMP_MISSING_ITEMS+="$PORT_LSM($PORT) "
590 ISSUES_FOUND=1
591 printed_items[$PORT_LSM]=$PORT
592 fi
593 done
594 sleep 3
595 for PORT_LSM in ServiceMonitor_PORT LFMServer_PORT LFMSinkModule_PORT LoadBalancer2_PORT ADSController_PORT ADSClient_PORT L_ADS_PORT L_GSDM_PORT L_NRM_PORT file_requester_PORT cache_manager_PORT NetIOServer3_PORT CiMonitoringAgent_PORT; do
596 PORT=${!PORT_LSM}
597 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
598 if [[ -z "${printed_items[$PORT_LSM]}" ]]; then
599 MISSING_ITEMS+="$PORT_LSM($PORT), "
600 ISSUES_FOUND=1
601 printed_items[$PORT_LSM]=$PORT
602 fi
603 fi
604 done
605 ;;
606 ADC)
607 for PORT_LSM in ServiceMonitor_PORT NetIOServer3_PORT CiMonitoringAgent_PORT; do
608 PORT=${!PORT_LSM}
609 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
610 MISSING_ITEMS+="$PORT_LSM($PORT), "
611 TEMP_MISSING_ITEMS+="$PORT_LSM($PORT) "
612 ISSUES_FOUND=1
613 printed_items[$PORT_LSM]=$PORT
614 fi
615 done
616 sleep 3
617 for PORT_LSM in ServiceMonitor_PORT NetIOServer3_PORT CiMonitoringAgent_PORT; do
618 PORT=${!PORT_LSM}
619 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
620 if [[ -z "${printed_items[$PORT_LSM]}" ]]; then
621 MISSING_ITEMS+="$PORT_LSM($PORT), "
622 ISSUES_FOUND=1
623 printed_items[$PORT_LSM]=$PORT
624 fi
625 fi
626 done
627 ;;
628 VOD)
629 # VOD 포트 점검
630 for PORT_VOD in CiHVODServer_PORT ADM_PORT ADS_PORT NetIOServer3_PORT cache_manager_PORT CiMonitoringAgent_PORT; do
631 PORT=${!PORT_VOD}
632 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
633 MISSING_ITEMS+="$PORT_LSM($PORT), "
634 TEMP_MISSING_ITEMS+="$PORT_LSM($PORT) "
635 ISSUES_FOUND=1
636 printed_items[$PORT_LSM]=$PORT
637 fi
638 done
639 sleep 3
640 for PORT_VOD in CiHVODServer_PORT ADM_PORT ADS_PORT NetIOServer3_PORT cache_manager_PORT CiMonitoringAgent_PORT; do
641 PORT=${!PORT_VOD}
642 if ! echo "$LISTEN_OUTPUT" | grep -qw "$PORT"; then
643 if [[ -z "${printed_items[$PORT_LSM]}" ]]; then
644 MISSING_ITEMS+="$PORT_LSM($PORT), "
645 ISSUES_FOUND=1
646 printed_items[$PORT_LSM]=$PORT
647 fi
648 fi
649 done
650 ;;
651 esac
652
653 # 결과 출력
654 if [ $ISSUES_FOUND -eq 0 ]; then
655 Make_Json_List Single "ServiceCheck" " 포트 및 프로그램 상태 확인" "모두 LISTEN 상태" "netstat 명령으로 포트 및 프로그램 확인" "이상없음" "$Success"
656 else
657 MISSING_ITEMS_STR=${MISSING_ITEMS%, }
658 Make_Json_List Single "ServiceCheck" " 포트 및 프로그램 상태 확인" "LISTEN 확인 실패: $MISSING_ITEMS_STR" "netstat 명령으로 포트 및 프로그램 확인" "$MISSING_ITEMS_STR 점검필요" "$Fail"
659 fi
660
661 # CPU 사용률 확인
662 VMSTAT=$(vmstat 1 3 | awk '{print $15}' | sed -n 4p)
663
664 if [ "$1" != "VOD" ] && [ $2 -ne 0 ]; then
665 if [ $VMSTAT -ge 30 ]; then
666 Make_Json_List Single "ServiceCheck" "CPU 사용률 확인" "30% 이상" "vmstat 명령으로 CPU id(idle) 확인" "이상없음" "$Success"
667 else
668 Make_Json_List Single "ServiceCheck" "CPU 사용률 확인" "30% 이상" "vmstat 명령으로 CPU id(idle) 확인" "불량" "$Fail"
669 fi
670 else
671 if [ $VMSTAT -ge 30 ]; then
672 Make_Json_List Start "ServiceCheck" "CPU 사용률 확인" "30% 이상" "vmstat 명령으로 CPU id(idle) 확인" "이상없음" "$Success"
673 else
674 Make_Json_List Start "ServiceCheck" "CPU 사용률 확인" "30% 이상" "vmstat 명령으로 CPU id(idle) 확인" "불량" "$Fail"
675 fi
676 fi
677
678 # LBADMIN 상태 확인, 로그 기반 장애 내역 점검
679 if [ "$1" != "VOD" ]; then
680
681 if [ $2 -eq 0 ]; then
682 Server_Error_Cnt=$(/usr/local/castis/tools/vodcmd all status | grep "Error" | awk '{ print $1 }' | xargs echo)
683 if [ -z "$Server_Error_Cnt" ]; then
684
685 Make_Json_List Middle "" "LBAdmin 상태 확인" "-" "LBAdmin에서 LB서버 상태 확인 ( Running, Pause, Error )" "이상없음" "$Success"
686
687 else
688 Make_Json_List Middle "" "LBAdmin 상태 확인" "-" "LBAdmin에서 LB서버 상태 확인 ( Running, Pause, Error )" "${Server_Error_Cnt} 점검필요" "$Fail"
689 fi
690
691 LFM_DIST_LOG1=0
692 LFM_DIST_LOG2=0
693 GLB_LIMIT="30"
694 LB_EVENT_LIMIT="30"
695 LB_CI_LIMIT="30"
696 LFM_EVENT_LIMIT="30"
697 LFM_CI_LIMIT="30"
698 LFMSINK_LIMIT="30"
699 LNRM_LIMIT=30
700 LGSDM_LIMIT=30
701 ADS_LIMIT=30
702 ADC_LIMIT=30
703 ADSCONTROLLER_LIMIT=30
704 UNIXTIME_20=$(date +%s -d '20 minute ago')
705 #OTV
706 if [ $OS_Version == "7.5.1804" ]; then
707 #CiGLBServer
708 if [ -d /var/log/castis/glb_log ]; then
709 LOG_FILE=$(ls -ltr /var/log/castis/glb_log/GLB.log 2>/dev/null)
710 if [ ! -f "$LOG_FILE" ]; then
711 Make_Json_List Middle "" "CiGLBServer 동작 확인" "LOG 파일 없음" "CiGLBServer: $LOG_FILE 파일 없음" "GLB 로그파일 여부 점검필요" "$Fail"
712 else
713 GLB_CI_LOG=$(egrep -ic "error|Fail" "$LOG_FILE")
714 if [ "$GLB_CI_LOG" -ge "$GLB_LIMIT" ]; then
715 Make_Json_List Middle "" "CiGLBServer 동작 확인" "Fail 또는 Error 있음" "CiGLBServer: $LOG_FILE 'error|fail'" "점검필요" "$Fail"
716 else
717 Make_Json_List Middle "" "CiGLBServer 동작 확인" "Fail 또는 Error 없음" "CiGLBServer: $LOG_FILE 'error|fail'" "이상없음" "$Success"
718 fi
719 fi
720 else
721 Make_Json_List Middle "" "CiGLBServer 동작 확인" "디렉터리 없음" "CiGLBServer: /var/log/castis/glb_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
722 fi
723 #LoadBalancer2
724 if [ -d /var/log/castis/lb_log ]; then
725 LOG_FILES="/var/log/castis/lb_log/LoadBalancer2.log 2>/dev/null"
726 if [ -z "$LOG_FILES" ]; then
727 Make_Json_List End "" "LoadBalancer2 동작 확인" "LOG 파일 없음" "LoadBalancer2: /var/log/castis/lb_log 파일 없음" "LoadBalancer2.log 로그파일 여부 점검필요" "$Fail"
728 else
729 LB_CI_LOG=$(egrep -i "error|Fail" $LOG_FILES | grep -vc "LimitCacheContent list" | awk -F':' '{ sum += $2 } END { print sum }')
730 LB_EVENT_LOG=$(egrep -ic "error|Fail" /var/log/castis/lb_log/EventLog[$EVENTLOG_DAY].log 2>/dev/null || echo 0)
731 if [ $LB_CI_LOG -ge $LB_CI_LIMIT ] || [ $LB_EVENT_LOG -ge $LB_EVENT_LIMIT ]; then
732 Make_Json_List End "" "LoadBalancer2 동작 확인" "Fail 또는 Error 있음" "LoadBalancer2: /var/log/castis/lb_log/LoadBalancer2.log 'error|fail'" "LoadBalancer2.log 점검필요" "$Fail"
733 else
734 Make_Json_List End "" "LoadBalancer2 동작 확인" "Fail 또는 Error 없음" "LoadBalancer2: /var/log/castis/lb_log/LoadBalancer2.log 'error|fail'" "이상없음" "$Success"
735 fi
736 fi
737 else
738 Make_Json_List End "" "LoadBalancer2 동작 확인" "디렉터리 없음" "LoadBalancer2: /var/log/castis/lb_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
739 fi
740 else
741 #LFMServer
742 if [ -d /var/log/castis/lfm_log ]; then
743 # 최근 LFMServer.log" 파일 5개 선택택
744 LOG_FILES=$(ls /var/log/castis/lfm_log/$MONTH/${DAY}* | tail -5 | awk '{ print $NF }' 2>/dev/null)
745 if [ -z "$LOG_FILES" ]; then
746 Make_Json_List Middle "" "LFMServer 동작 확인" "LOG 파일 없음" "LFMServer: /var/log/castis/lfm_log/LFMServer.log" "LFMServer.log 로그파일 여부 점검필요" "$Fail"
747 else
748 # 선택된 파일에서 에러와 실패 패턴 검색
749 LFM_CI_LOG=$(egrep -v "Infor|match|Source file" $LOG_FILES | egrep -ic "error|Fail" 2>/dev/null)
750 if [ $LFM_CI_LOG -ge $LFM_CI_LIMIT ]; then
751 Make_Json_List Middle "" "LFMServer 동작 확인" "Fail 또는 Error 있음" "LFMServer: /var/log/castis/lfm_log/LFMServer.log 'error|fail'" "LFMServer.log 점검필요" "$Fail"
752 else
753 Make_Json_List Middle "" "LFMServer 동작 확인" "Fail 또는 Error 없음" "LFMServer: /var/log/castis/lfm_log/LFMServer.log 'error|fail'" "이상없음" "$Success"
754 fi
755 fi
756 else
757 Make_Json_List Middle "" "LFMServer 동작 확인" "디렉터리 없음" "LFMServer: /var/log/castis/lfm_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
758 fi
759 # LFMSinkModule
760 if [ -d /var/log/castis/lfmsinkmodule_log ]; then
761 # 최근 LFMSinkModule.log 파일 5개 선택
762 LOG_FILES=$(ls /var/log/castis/lfmsinkmodule_log/${MONTH}/${DAY}* | tail -5 | awk '{ print $NF }' 2>/dev/null)
763 if [ -z "$LOG_FILES" ]; then
764 Make_Json_List Middle "" "LFMSinkModule 동작 확인" "LOG 파일 없음" "LFMSinkModule: /var/log/castis/lfmsinkmodule_log/LFMSinkModule.log" "LFMSinkModule.log 로그파일 여부 점검필요" "$Fail"
765 else
766 LFMSINKMODULE_LOG=$(egrep -ic "error|Fail" $LOG_FILES)
767 if [ $LFMSINKMODULE_LOG -ge $LFMSINK_LIMIT ]; then
768 Make_Json_List Middle "" "LFMSinkModule 동작 확인" "Fail 또는 Error 있음" "LFMSinkModule: /var/log/castis/lfmsinkmodule_log/LFMSinkModule.log 'error|fail'" "LFMSinkModule.log 점검필요" "$Fail"
769 else
770 Make_Json_List Middle "" "LFMSinkModule 동작 확인" "Fail 또는 Error 없음" "LFMSinkModule: /var/log/castis/lfmsinkmodule_log/EventLog.log 'error|fail'" "이상없음" "$Success"
771 fi
772 fi
773 else
774 Make_Json_List Middle "" "LFMSinkModule 동작 확인" "디렉터리 없음" "LFMSinkModule: /var/log/castis/lfmsinkmodule_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
775 fi
776
777 # CiGLBServer
778 if [ -d /var/log/castis/glb_log ]; then
779 LOG_FILE="/var/log/castis/glb_log/GLB.log"
780 if [ -z "$LOG_FILES" ]; then
781 Make_Json_List Middle "" "CiGLBServer 동작 확인" "LOG 파일 없음" "CiGLBServer: $LOG_FILE 파일 없음" "GLB 로그파일 여부 점검필요" "$Fail"
782 else
783 GLB_CI_LOG=$(egrep -ic "error|Fail" $LOG_FILES)
784 if [ $GLB_CI_LOG -ge $GLB_LIMIT ]; then
785 Make_Json_List Middle "" "CiGLBServer 동작 확인" "Fail 또는 Error 없음" "CiGLBServer: /var/log/castis/glb_log/EventLog.log 'error|fail'" "점검필요" "$Fail"
786 else
787 Make_Json_List Middle "" "CiGLBServer 동작 확인" "Fail 또는 Error 없음" "CiGLBServer: /var/log/castis/glb_log/EventLog.log 'error|fail'" "이상없음" "$Success"
788 fi
789 fi
790 else
791 Make_Json_List Middle "" "CiGLBServer 동작 확인" "디렉터리 없음" "CiGLBServer: /var/log/castis/glb_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
792 fi
793
794 # L_ADS
795 if [ -d /var/log/castis/L_ads_log ]; then
796 LOG_FILES=$(ls /var/log/castis/L_ads_log/${MONTH}/${DAY}* 2>/dev/null)
797 if [ -z "$LOG_FILES" ]; then
798 Make_Json_List Middle "" "L_ADS 동작 확인" "LOG 파일 없음" "L_ADS: /var/log/castis/L_ads_log/EventLog.log" "Event 로그파일 여부 점검필요" "$Fail"
799 else
800 ADS_LOG=$(egrep -v "Infor" $LOG_FILES | egrep -ic "error|Fail")
801 if [ $ADS_LOG -ge $ADS_LIMIT ]; then
802 Make_Json_List Middle "" "L_ADS 동작 확인" "Fail 또는 Error 없음" "L_ADS: /var/log/castis/L_ads_log/EventLog.log 'error|fail'" "점검필요" "$Fail"
803 else
804 Make_Json_List Middle "" "L_ADS 동작 확인" "Fail 또는 Error 없음" "L_ADS: /var/log/castis/L_ads_log/EventLog.log 'error|fail'" "이상없음" "$Success"
805 fi
806 fi
807 else
808 Make_Json_List Middle "" "L_ADS 동작 확인" "디렉터리 없음" "L_ADS: /var/log/castis/L_ads_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
809 fi
810
811 # ADSController
812 if [ -d /var/log/castis/adscontroller_log ]; then
813 LOG_FILES=$(ls /var/log/castis/adscontroller_log/$MONTH/${DAY}* 2>/dev/null)
814 if [ -z "$LOG_FILES" ]; then
815 Make_Json_List Middle "" "ADSController 동작 확인" "LOG 파일 없음" "ADSController: /var/log/castis/adscontroller_log/EventLog.log" "Event 로그파일 여부 점검필요" "$Fail"
816 else
817 ADSCONTROLLER_LOG=$(egrep -v "Infor" $LOG_FILES | egrep -ic "error|Fail")
818 if [ $ADSCONTROLLER_LOG -ge $ADSCONTROLLER_LIMIT ]; then
819 Make_Json_List Middle "" "ADSController 동작 확인" "Fail 또는 Error 없음" "ADSController: /var/log/castis/adscontroller_log/EventLog.log 'error|fail'" "EventLog.log 점검필요" "$Fail"
820 else
821 Make_Json_List Middle "" "ADSController 동작 확인" "Fail 또는 Error 없음" "ADSController: /var/log/castis/adscontroller_log/EventLog.log 'error|fail'" "이상없음" "$Success"
822 fi
823 fi
824 else
825 Make_Json_List Middle "" "ADSController 동작 확인" "디렉터리 없음" "ADSController: /var/log/castis/adscontroller_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
826 fi
827
828 # ADSClient
829 if [ -d /var/log/castis/adc_log ]; then
830 LOG_FILES=$(ls /var/log/castis/adc_log/$MONTH/${DAY}* 2>/dev/null)
831 if [ -z "$LOG_FILES" ]; then
832 Make_Json_List Middle "" "ADSClient 동작 확인" "LOG 파일 없음" "ADSClient: /var/log/castis/adc_log/ADSClient.log " "ADSClient.log 로그파일 여부 점검필요" "$Fail"
833 else
834 ADC_LOG=$(egrep -v "Infor" $LOG_FILES | egrep -ic "error|Fail")
835 if [ $ADC_LOG -ge $ADC_LIMIT ]; then
836 Make_Json_List Middle "" "ADSClient 동작 확인" "Fail 또는 Error 없음" "ADSClient: /var/log/castis/adc_log/EADSClient.log 'error|fail'" "ADSClient.log 점검필요" "$Fail"
837 else
838 Make_Json_List Middle "" "ADSClient 동작 확인" "Fail 또는 Error 없음" "ADSClient: /var/log/castis/adc_log/ADSClient.log 'error|fail'" "이상없음" "$Success"
839 fi
840 fi
841 else
842 Make_Json_List Middle "" "ADSClient 동작 확인" "디렉터리 없음" "ADSClient: /var/log/castis/adc_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
843 fi
844
845 # LoadBalancer2
846 if [ -d /var/log/castis/lb_log ]; then
847 LOG_FILES="/var/log/castis/lb_log/LoadBalancer2.log"
848 if [ -z "$LOG_FILES" ]; then
849 Make_Json_List End "" "LoadBalancer2 동작 확인" "LOG 파일 없음" "LoadBalancer2: /var/log/castis/lb_log/LoadBalancer2.log" "LoadBalancer2.log 로그파일 여부 점검필요" "$Fail"
850 else
851 LB_CI_LOG=$(egrep -i "error|Fail" $LOG_FILES | grep -vc "LimitCacheContent list")
852 LB_EVENT_LOG=$(egrep -ic "error|Fail" /var/log/castis/lb_log/EventLog[$EVENTLOG_DAY].log 2>/dev/null || echo 0)
853
854 if [ $LB_CI_LOG -ge $LB_CI_LIMIT ]; then
855 Make_Json_List End "" "LoadBalancer2 동작 확인" "Fail 또는 Error 있음" "LoadBalancer2: /var/log/castis/lb_log/LoadBalancer2.log 'error|fail'" "LoadBalancer2.log 점검필요" "$Fail"
856 else
857 Make_Json_List End "" "LoadBalancer2 동작 확인" "Fail 또는 Error 없음" "LoadBalancer2: /var/log/castis/lb_log/LoadBalancer2.log 'error|fail'" "이상없음" "$Success"
858 fi
859 fi
860 else
861 Make_Json_List End "" "LoadBalancer2 동작 확인" "디렉터리 없음" "LoadBalancer2: /var/log/castis/lb_log 디렉터리 없음" "디렉터리 여부 점검필요" "$Fail"
862 fi
863 fi
864 fi
865
866 else
867 VOD_LIMIT=50
868 NOMEDIA_RESET_LOG_LIMIT=200000
869
870 if [ -e "/var/log/castis/vod_log/EventLog[$EVENTLOG_DAY].log" ]; then
871 EVENT_VOD_NOMEDIA_RESET_LOG=$(grep "No Media" $(ls -ltr /var/log/castis/vod_log/${MONTH}/${DAY}* | awk '{ print $NF }') | grep ted | awk -F '[' '{ split($2,arr,"]"); sum+=arr[1] } END{print sum}')
872 EVENT_VOD_ERR_LOG=$(egrep -i "Error|Fail|Invalid File.*mpg" /var/log/castis/vod_log/EventLog[$EVENTLOG_DAY].log | egrep -v "OnHTTPGet Fail|Invalid URL. SETUP Fail|RTSP Message Parsing Error|Invalid|AsyncIO Error" | wc -l)
873 else
874 EVENT_VOD_NOMEDIA_RESET_LOG=0
875 EVENT_VOD_ERR_LOG=0
876 fi
877 i=0
878
879 if [ $EVENT_VOD_ERR_LOG -ge $VOD_LIMIT ]; then
880 Service_Streaming_Status_Array[$i]="VOD ERROR로그 $VOD_LIMIT건 이상 발생"
881 ((i++))
882 fi
883
884 if [ $EVENT_VOD_NOMEDIA_RESET_LOG -ge $NOMEDIA_RESET_LOG_LIMIT ]; then
885 Service_Streaming_Status_Array[$i]="VOD No Media로그 $EVENT_VOD_NOMEDIA_RESET_LOG건 이상 발생"
886 fi 2>/dev/null
887
888 if [ ${#Service_Streaming_Status_Array[@]} -ge 1 ]; then
889 Make_Json_List End "" "CIHVODServer 동작 확인" "Fail 또는 Error 없음" "'No Media|error|fail'" "${Service_Streaming_Status_Array[@]}" "$Fail"
890 else
891 Make_Json_List End "" "CIHVODServer 동작 확인" "Fail 또는 Error 없음" "'No Media|error|fail'" "이상없음" "$Success"
892 fi
893
894 fi
895
896}
897
898#local functions end
899case $1 in
900\? | -h)
901 f_Usage
902 exit
903 ;;
904esac
905
906#Json start
907
908case $2 in
909LSM | ADC)
910 HW_Check
911 Network_Check
912 OS_Check $2
913 Cluster_Check
914 Service_Solution_Status_Check $2 $?
915
916 hw_result=$(HW_Check)
917 network_result=$(Network_Check)
918 os_result=$(OS_Check $2)
919 cluster_result=$(Cluster_Check)
920 service_solution_result=$(Service_Solution_Status_Check $2 $?)
921
922 all_results="$hw_result\n$network_result\n$os_result\n$cluster_result\n$service_solution_result"
923 ;;
924VOD)
925 HW_Check
926 Network_Check
927 OS_Check $2
928 Service_Solution_Status_Check $2
929
930 hw_result=$(HW_Check)
931 network_result=$(Network_Check)
932 os_result=$(OS_Check $2)
933 service_result=$(Service_Solution_Status_Check $2)
934
935 all_results="$hw_result\n$network_result\n$os_result\n$service_result"
936 ;;
937
938esac
939
940# 결과 중 "점검필요", "불량", "이상 발생" 텍스트가 있어야 수집
941if echo -e "$all_results" | grep -E -q "점검필요|불량|이상 발생"; then
942 echo -e "\n[점검필요 항목]"
943 echo -e "$all_results" | grep -E -q "점검필요|불량|이상 발생"
944 echo -e "$all_results" | awk '/점검 내용/ {content=$0} /상태:/ && /점검필요/ {print content; print $0; print ""}'
945else
946 echo -e "\n모든 항목이 이상없음 상태입니다."
947fi
948
949
950}}}