Ad Widget

Collapse

Мониторинг размера файла с изменяемым им

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • yaya
    Junior Member
    • Jun 2009
    • 3

    #1

    Мониторинг размера файла с изменяемым им

    Здравствуйте. Есть необходимость мониторить размер лог-файла. Получаю данные с помощью ключа vfs.file.size[file], все работает, но проблема в том, что имя файла ежедневно меняется. Сам файл именуется в зависимости от текущей даты по шаблону xxxx-xx-xx-filename.log
    Подскажите, можно ли как-то указать шаблон по которому забикс будет находить этот файл?
  • gescheit
    Senior Member
    • Jul 2007
    • 156

    #2
    В проверке можно использовать пользовательский макрос, который можно менять(через апи) каждый день на текущую дату.

    Comment

    • dotneft
      Senior Member
      • Nov 2008
      • 699

      #3
      ммм... не могу быть уверенным, но может попробовать симлинк?

      Comment

      • flashvoid
        Junior Member
        • Jan 2010
        • 10

        #4
        Симлинк придется пересоздавать каждый день. Макрос хороший вариант для одного хоста но неработает на большой конфигурации. Например когда много хостов находятся в разных часовых поясах.

        Я для себя сделал скрипт который возвращает размер самого нового фаила в каталоге по маске. Совсем простой но работает хорошо. Если интересно в пн выложу.

        Comment

        • McSim
          Junior Member
          • Aug 2011
          • 8

          #5
          Тот же вопрос, в смысле, что есть файлы формата YYMMDDT0.LOG.
          Подскажите, пожалуйста, с примером, как такие файлы зацепить в инструкции вида: {SERV:vfs.file.time[c:\110919t0.log].delta(1200)}=0?

          Comment

          • McSim
            Junior Member
            • Aug 2011
            • 8

            #6
            Разобрался.

            Привожу пример, если кому-то понадобится...
            На сервере (Windows) где следим за файлом и установлен агент.
            В файле zabbix_agentd.conf добавляем строчки:
            Code:
            UnsafeUserParameters=1
            UserParameter=tcpfosslog,c:\windows\system32\cscript.exe //nologo "c:\program files\zabbix\date.vbs"
            Содержимое файла date.vbs:
            Code:
            Dim FSO                
            Dim fi
            Dim Date1
            Dim wshShell           
            Date1=date
              Set wshShell = CreateObject("WScript.Shell")
              set FSO = CreateObject("Scripting.FileSystemObject")
              set fi= FSO.getfile("с:\"&mid(Date1,9,2)&mid(Date1,4,2)&mid(Date1,1,2)&"t0.log")
              if datediff("n",fi.DateLastModified,now)>25 then
            	wscript.echo 0
              else
            	wscript.echo 1
              end if
              Set fi         = Nothing
              Set FSO        = Nothing
              Set wshShell   = Nothing
            Создаем тригер вроде:
            Code:
            {SCR2006:tcpfosslog.last(0)}=0
            Который срабатывет, если файл не менялся больше 25 минут.

            Comment

            • SergeniuS
              Member
              • Jan 2012
              • 68

              #7
              Originally posted by McSim
              Разобрался.
              Привожу пример, если кому-то понадобится...
              ...
              Который срабатывет, если файл не менялся больше 25 минут.
              Позволил себе небольшую модификацию VBS скрипта. Для унификации в качестве аргументов ему передаётся имя файла и количество минут.

              Выходные значения аналогичны - 0 и 1;

              Code:
              Dim FSO                
              Dim fi
              Dim Date1
              Dim wshShell           
              
              
              Set objArgs = WScript.Arguments
              
              if WScript.Arguments.Count = 0 then
                  WScript.Echo "Missing parameters"
              end if
              
              Date1=date
                Set wshShell = CreateObject("WScript.Shell")
                set FSO = CreateObject("Scripting.FileSystemObject")
                set fi= FSO.getfile(Wscript.Arguments(0))
                if datediff("n",fi.DateLastModified,now)> (Cint(Wscript.Arguments(1))) then
              	wscript.echo 0
                else
              	wscript.echo 1
                end if
                Set fi         = Nothing
                Set FSO        = Nothing
                Set wshShell   = Nothing
              В файле zabbix_agentd.conf строчка будет такой:
              Code:
              UnsafeUserParameters=1
              UserParameter=tcpfosslog[*],c:\windows\system32\cscript.exe //nologo "c:\program files\zabbix\date.vbs" "$1" "$2"
              Триггер видоизменится так:
              Code:
              {SCR2006:tcpfosslog[с:\somefilename.txt,25].last(0)}=0}

              Comment

              Working...