Я использую 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 и создайте сценарий оболочки, который анализирует ваш файл.