web-dev-qa-db-ja.com

mcelogのトリガーの書き込み

初めてmcelogを調べ始めたところです(以前に有効にしてsyslog出力を確認しましたが、デフォルト以外のことをしようとするのはこれが初めてです)。トリガーの書き方についての情報を探しています。具体的には、mcelogがどのような種類のイベントに反応できるか、実行するスクリプトをどのように決定するかなどを探しています。トリガーの例から私が作成できる最善の方法は、スクリプトを呼び出す前に一連の環境変数を設定することです。それでは、トリガーディレクトリ(RHELでは/etc/mcelog)内のすべてを実行し、スクリプトに何を実行するかを決定させようとするだけですか?

MCEイベントのような名前のトリガースクリプトを見たことがありますが、その規則ですか、それとも特別な機能がありますか? /etc/mcelog/joel.shというトリガーを作成しました。これは、基本的なメールをGmailアカウントに送信するだけです。数日前、スクリプトを手動で実行せずにスクリプトから電子メールを受け取ったため、トリガーがオフになったようです。 env出力をjoel.shmailxコマンドにパイプすることを考えていなかったので、どのハードウェアイベントがスクリプトの実行をトリガーしたのか、なぜmcelogなのかわかりません。実行するスクリプトとしてjoel.shを選択しました。

基本的に、私はmcelogの基本的な方向性、トリガーシステム、およびハードウェアの状態を監視するためにそれを使用する方法を教えてくれる答えを探しています。ベアリングを手に入れたら、もっと高度なものを理解できると確信しています。

3
Bratchley

サンプルを見るmcelog.conf configファイルには、処理できるすべてではないにしてもほとんどのタイプのトリガーが含まれているように見えます。

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

サンプルトリガー

いくつかのサンプルトリガー ここのmceloggithubページにあります。

サンプルトリガースクリプト、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

参考文献

1
slm