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

Zabbix не обновляет значение из файла ни с помощью log [], ни с помощью элемента vfs.file.regexp []

Я использую Zabbix 2.2.
У меня очень специфическая среда, в которой я должен сгенерировать нужные данные в файл с помощью скрипта, затем загрузить этот файл на ftp с хоста и загрузить его на сервер Zabbix с ftp.
После загрузки файла я проверяю его с помощью элементов log [] и vfs.file.regexp [].

Я использую эти предметы, как показано ниже:

log[/path/to/file.txt,"C.*\s([0-9]+\.[0-9])$",Windows-1250,,"all",\1]
vfs.file.regexp[/path/to/file.txt,"C.*\s([0-9]+\.[0-9])$",Windows-1250,,,\1]

Строка, которую я разбираю, выглядит следующим образом:

                C:      8195Mb  5879Mb  2316Mb  28.2

Значение, которое я хочу извлечь, составляет 28,2 в конце файла.

Проблема, которую я сейчас пытаюсь решить, заключается в том, что при обновлении файла (загрузка с хоста на ftp, затем загрузка с ftp на сервер Zabbix) значение не обновляется.

Я пробовал только log [] при запуске, но подозреваю, что log [] рассматривает файл как настоящий файл журнала и не проверяет те же строки (хотя, согласно документации, он должен иметь значение «все»), поэтому Я также добавил элемент vfs.file.regexp [].

Журнал [] получил значение в прошлом, но не обновляется.
Vfs.file.regexp [] пока не получил никакого значения.
file.txt несколько раз перезагружался и перезагружался, и ситуация не меняется.
Кажется, что log [] читает только новые строки в файле, он не проверяет уже перехваченные строки на предмет изменений.

Файл zabbix_agentd.log не сообщает о каких-либо проблемах с доступом к файлу или с построением регулярного выражения (он сообщал "неподдерживаемый" для ключа log [], когда я что-то настроил неправильно).

Я использую уровень ведения журнала отладки для агента - я не нашел интересной информации об этой проблеме.

Я понятия не имею, что я делаю неправильно или чего не знаю о том, как Zabbix выполняет эти проверки. Я вижу два решения для этого: добавление дополнительных строк в файл вместо создания нового или создание новых файлов и проверка их с помощью logrt [], но это не удовлетворяет мои желания.
Любая помощь приветствуется.
Конечно, я предоставлю дополнительную информацию, если потребуется - пока я не знаю, что еще может быть полезно.

Журнал элементов [] предназначен для файлов, размер которых увеличивается построчно, поэтому правильным подходом в вашем случае было бы придерживаться vfs.file.regexp [].

С vfs.file.regexp [] вы все делаете правильно, за исключением того, что в Zabbix есть ошибка (сообщается как ZBX-8248), что предотвращает совпадение символа «$» в регулярных выражениях с окончанием строки Windows.

Так что, тем временем, чтобы он работал, вы должны опустить "$" в регулярном выражении.

Я не пробовал использовать функцию журнала Zabbix, но предполагаю, что файл журнала открывается один раз во время запуска агента Zabbix, а затем остается открытым. Это означает, что даже если вы перезаписываете свой файл, старый дескриптор файла все еще остается открытым, и Zabbix считывает данные оттуда.

Если это так, я предлагаю вам два решения:

1) Каким-то образом отправить сигнал HUP Zabbix агенту (чтобы он повторно открывал файлы для чтения)

или

2) Используйте External script в Zabbix и создайте сценарий оболочки, который анализирует ваш файл.