diff options
author | Tony Hutter <[email protected]> | 2018-03-06 15:41:52 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2018-03-06 15:41:52 -0800 |
commit | 639b18944a6a3483c02039621c02dac08a954a90 (patch) | |
tree | b50499c540b1da61c4fe677d0a4d0a8d7e42570f /cmd/zed | |
parent | d2160d053838e36df83e5fe3a9ca20abad588a4c (diff) |
Allow to limit zed's syslog chattiness
Some usage patterns like send/recv of replication streams can
produce a large number of events. In such a case, the current
all-syslog.sh zedlet will hold up to its name, and flood the
logs with mostly redundant information. Two mitigate this
situation, this changeset introduces to new variables
ZED_SYSLOG_SUBCLASS_INCLUDE and ZED_SYSLOG_SUBCLASS_EXCLUDE
to zed.rc that give more control over which event classes end
up in the syslog.
Reviewed-by: loli10K <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Giuseppe Di Natale <[email protected]>
Signed-off-by: Tony Hutter <[email protected]>
Signed-off-by: Daniel Kobras <[email protected]>
Closes #6886
Closes #7260
Diffstat (limited to 'cmd/zed')
-rwxr-xr-x | cmd/zed/zed.d/all-debug.sh | 2 | ||||
-rwxr-xr-x | cmd/zed/zed.d/all-syslog.sh | 2 | ||||
-rw-r--r-- | cmd/zed/zed.d/zed-functions.sh | 20 | ||||
-rw-r--r-- | cmd/zed/zed.d/zed.rc | 11 |
4 files changed, 35 insertions, 0 deletions
diff --git a/cmd/zed/zed.d/all-debug.sh b/cmd/zed/zed.d/all-debug.sh index 057e39b50..14b39caac 100755 --- a/cmd/zed/zed.d/all-debug.sh +++ b/cmd/zed/zed.d/all-debug.sh @@ -10,6 +10,8 @@ : "${ZED_DEBUG_LOG:="${TMPDIR:="/tmp"}/zed.debug.log"}" +zed_exit_if_ignoring_this_event + lockfile="$(basename -- "${ZED_DEBUG_LOG}").lock" umask 077 diff --git a/cmd/zed/zed.d/all-syslog.sh b/cmd/zed/zed.d/all-syslog.sh index 68d3cf360..cb9286500 100755 --- a/cmd/zed/zed.d/all-syslog.sh +++ b/cmd/zed/zed.d/all-syslog.sh @@ -5,6 +5,8 @@ [ -f "${ZED_ZEDLET_DIR}/zed.rc" ] && . "${ZED_ZEDLET_DIR}/zed.rc" . "${ZED_ZEDLET_DIR}/zed-functions.sh" +zed_exit_if_ignoring_this_event + zed_log_msg "eid=${ZEVENT_EID}" "class=${ZEVENT_SUBCLASS}" \ "${ZEVENT_POOL_GUID:+"pool_guid=${ZEVENT_POOL_GUID}"}" \ "${ZEVENT_VDEV_PATH:+"vdev_path=${ZEVENT_VDEV_PATH}"}" \ diff --git a/cmd/zed/zed.d/zed-functions.sh b/cmd/zed/zed.d/zed-functions.sh index ed6a95914..fb16e9d36 100644 --- a/cmd/zed/zed.d/zed-functions.sh +++ b/cmd/zed/zed.d/zed-functions.sh @@ -438,3 +438,23 @@ zed_guid_to_pool() $ZPOOL get -H -ovalue,name guid | awk '$1=='"$guid"' {print $2}' fi } + +# zed_exit_if_ignoring_this_event +# +# Exit the script if we should ignore this event, as determined by +# $ZED_SYSLOG_SUBCLASS_INCLUDE and $ZED_SYSLOG_SUBCLASS_EXCLUDE in zed.rc. +# This function assumes you've imported the normal zed variables. +zed_exit_if_ignoring_this_event() +{ + if [ -n "${ZED_SYSLOG_SUBCLASS_INCLUDE}" ]; then + eval "case ${ZEVENT_SUBCLASS} in + ${ZED_SYSLOG_SUBCLASS_INCLUDE});; + *) exit 0;; + esac" + elif [ -n "${ZED_SYSLOG_SUBCLASS_EXCLUDE}" ]; then + eval "case ${ZEVENT_SUBCLASS} in + ${ZED_SYSLOG_SUBCLASS_EXCLUDE}) exit 0;; + *);; + esac" + fi +} diff --git a/cmd/zed/zed.d/zed.rc b/cmd/zed/zed.d/zed.rc index 8b0e476d5..35a4d1275 100644 --- a/cmd/zed/zed.d/zed.rc +++ b/cmd/zed/zed.d/zed.rc @@ -100,3 +100,14 @@ ZED_USE_ENCLOSURE_LEDS=1 # #ZED_SYSLOG_TAG="zed" +## +# Which set of event subclasses to log +# By default, events from all subclasses are logged. +# If ZED_SYSLOG_SUBCLASS_INCLUDE is set, only subclasses +# matching the pattern are logged. Use the pipe symbol (|) +# or shell wildcards (*, ?) to match multiple subclasses. +# Otherwise, if ZED_SYSLOG_SUBCLASS_EXCLUDE is set, the +# matching subclasses are excluded from logging. +#ZED_SYSLOG_SUBCLASS_INCLUDE="checksum|scrub_*|vdev.*" +#ZED_SYSLOG_SUBCLASS_EXCLUDE="statechange|config_*|history_event" + |