처음으로 이 연구를 시작했습니다 mcelog
(이전에 활성화하고 syslog 출력을 본 적이 있지만 기본값이 아닌 작업을 시도하는 것은 이번이 처음입니다). 트리거를 작성하는 방법에 대한 정보를 찾고 있습니다. 구체적으로 mcelog
어떤 유형의 이벤트에 반응할 수 있는지, 실행할 스크립트를 어떻게 결정하는지 등을 찾고 있습니다 . 예제 트리거에서 얻을 수 있는 가장 좋은 점은 스크립트를 호출하기 전에 여러 환경 변수를 설정한다는 것입니다. 그러면 트리거 디렉터리(RHEL에 있음)의 모든 항목을 실행 /etc/mcelog
하고 스크립트에서 원하는 작업을 결정하도록 합니까?
MCE 이벤트처럼 보이는 이름을 가진 다른 트리거 스크립트를 본 적이 있습니다. 이것은 규칙인가요, 아니면 특별한 기능인가요? /etc/mcelog/joel.sh
내 Gmail 계정으로 기본 이메일을 보내는 트리거를 만들었습니다 . 며칠 전, 스크립트를 수동으로 실행하지 않고 스크립트로부터 이메일을 받았기 때문에 트리거가 발생한 것 같습니다. env
출력을 mailx
명령 으로 파이프할 생각은 없었기 때문에 어떤 하드웨어 이벤트가 스크립트 실행을 촉발했는지, 왜 스크립트로 실행하기로 선택했는지 joel.sh
알 수 없습니다 .mcelog
joel.sh
mcelog
기본적으로 저는 트리거 시스템이 무엇인지, 그리고 이를 사용하여 하드웨어 상태를 모니터링하는 방법에 대한 기본 방향을 제시할 수 있는 답변을 찾고 있습니다 . 일단 익숙해지면 더 발전된 내용을 알아낼 수 있을 것이라고 확신합니다.
답변1
샘플 구성 파일을 보면 mcelog.conf
처리할 수 있는 트리거 유형이 전부는 아니더라도 대부분 포함되어 있는 것처럼 보입니다.
DIMM
[dimm]
#
# execute these triggers when the rate of corrected or uncorrected
# errors per DIMM exceeds the threshold
# Note when the hardware does not report DIMMs this might also
# be per channel
# The default of 10/24h is reasonable for server quality·
# DDR3 DIMMs as of 2009/10
#uc-error-trigger = dimm-error-trigger
uc-error-threshold = 1 / 24h
#ce-error-trigger = dimm-error-trigger
ce-error-threshold = 10 / 24h
소켓
[socket]
# Threshold and trigger for uncorrected memory errors on a socket
# mem-uc-error-trigger = socket-memory-error-trigger
mem-uc-error-threshold = 100 / 24h
# Threshold and trigger for corrected memory errors on a socket
mem-ce-error-trigger = socket-memory-error-trigger
mem-ce-error-threshold = 100 / 24h
은닉처
[cache]
# Processing of cache error thresholds reported by Intel CPUs
cache-threshold-trigger = cache-error-trigger
페이지
[page]
# Memory error accouting per 4K memory page
# Threshold for the correct memory errors trigger script
memory-ce-threshold = 10 / 24h
# Trigger script for corrected errors
# memory-ce-trigger = page-error-trigger
방아쇠
이 섹션에서는 트리거를 제어할 수 있습니다.
[trigger]
# Maximum number of running triggers
children-max = 2
# execute triggers in this directory
directory = /etc/mcelog
트리거 예
가지다몇 가지 예시 트리거mcelog github 페이지에서.
예시 트리거 스크립트 dimm-error-triggers
:
#!/bin/sh
# This shell script can be executed by mcelog in daemon mode when a DIMM
# exceeds a pre-configured error threshold
#
# environment:
# THRESHOLD human readable threshold status
# MESSAGE Human readable consolidated error message
# TOTALCOUNT total count of errors for current DIMM of CE/UC depending on
# what triggered the event
# LOCATION Consolidated location as a single string
# DMI_LOCATION DIMM location from DMI/SMBIOS if available
# DMI_NAME DIMM identifier from DMI/SMBIOS if available
# DIMM DIMM number reported by hardware
# CHANNEL Channel number reported by hardware
# SOCKETID Socket ID of CPU that includes the memory controller with the DIMM
# CECOUNT Total corrected error count for DIMM
# UCCOUNT Total uncorrected error count for DIMM
# LASTEVENT Time stamp of event that triggered threshold (in time_t format, seconds)
# THRESHOLD_COUNT Total umber of events in current threshold time period of specific type
#
# note: will run as mcelog configured user
# this can be changed in mcelog.conf
logger -s -p daemon.err -t mcelog "$MESSAGE"
logger -s -p daemon.err -t mcelog "Location: $LOCATION"
[ -x ./dimm-error-trigger.local ] && . ./dimm-error-trigger.local
exit 0