Назад | Перейти на главную страницу

Умный плагин Munin постоянно сообщает об ошибке в прошлом из-за кода выхода.

Мой хостинг-провайдер вставил жесткий диск в мой сервер, который, похоже, имел какую-то ошибку в прошлом, но полная автономная интеллектуальная проверка показала, что на данный момент все в порядке. На сервере есть RAID1, так что я могу смириться с этой ситуацией.

Проблема в том, что (согласно справочной странице) smartctl устанавливает бит номер 6, если в прошлом была ошибка, поэтому теперь, когда все в порядке, код выхода - это число 64.

Умный плагин по умолчанию настроен на порог 0, и хотя я знаю, что могу установить порог до 64, я бы пропустил гораздо более важный бит 3 «диск выходит из строя».

Есть ли способ установить порог таким образом, чтобы munin выполнял побитовое сравнение значения?

В конце концов я прибег к исправлению умного плагина. В зависимости от вашей версии есть такой код:

        if exit_status!=None :
            # smartctl exit code is a bitmask, check man page.
            num_exit_status=int(exit_status/256)

замените это на это

        if exit_status!=None :
            # smartctl exit code is a bitmask, check man page.
            num_exit_status=int(exit_status/256)
            # filter out bit 6
            num_exit_status &= 191
            if num_exit_status<=2 :
                exit_status=None

        if exit_status!=None :

Самая интересная часть - это строка, в которой выполняется поразрядная операция с 191: это 0x11011111 в двоичном формате, поэтому при выполнении операции И с текущим значением он просто установит бит № 6 в 0, оставляя другие значения нетронутыми.

Следовательно, значение 64 (как у меня) будет отображаться как 0, а значение 8 останется на 8. Но также, что очень важно, значение 72 (бит 6 установлен как всегда, а бит 3 установлен, потому что диск выходит из строя. ) он также сообщит 8.

Единственный способ избежать этой проблемы, не изменяя исходники munin, - это избегать использования -a вариант с smartctl, например используйте что-то подобное в /etc/munin/plugin-conf.d/munin-node:

[smart_sda]
env.smartargs -H -i -c -A -l selftest -l selective

(т.е. все параметры, обычно включенные в -a Кроме для -l error).