Предыстория:Наладив обмен с другими серверами, столкнулся с тем, что бы автоматически информировать админов в случае, если данные перестали приходить. Все приборы с данного сервера получали префикс 98.
Так как основная база данных у меня хранится на этом сервере в mdb (BNC версии 1.0), то самым простым способом анализа показалось использовать grep для подсчета количества строк по приборам с префиксом 98 во всем файле (файлы poslog пишутся по дням), и сравнении данного количества с моментом предыдущего запуска. Если количество координат не увеличилось, значит проблема с приемом координат.
Решение:Написание скрипта на VBscript позволило решить все проблемы средствами только BNC-сервера, тем более что заготовки для подобного анализа были в других разных скриптах (подсчет количества строк по шаблону, отправка почты, работа с файлами и так далее).
Подробности: Логи пишутся через службу логирования, настройка для poslog вот такая.
Log Path=C:\BNComplex\Logs\PosLogs\%y%m%d.log
Т.е. в каталог C:\BNComplex\Logs\PosLogs\ попадают файлы с именем, типа 130619.log
потому строка запуска подсчета выглядит strtorun="tcpg.cmd """&BNPath&"\"&dtmYear&dtmMonth&dtmday&".log"""
путь же до каталога прописан в переменной BNPath="C:\BNComplex\Logs\PosLogs"
если у вас логи пишутся по дням, то строку нужно несколько модифицировать до:
strtorun="tcpg.cmd """&BNPath&"\"&dtmday&".log"""
или подобного
файл tcpg.cmd ссылается на программу grep, которую ищет по пути: "C:\BNComplex\Util\grep\grep\bin\grep.exe" - установите программу, и измените данный путь на тот, что используете вы.
В файле tcpg.cmd указывается шаблон поиска строк
set str=98.*
т.е. все строки, у которых первые символы 98, а прочие - любые другие ("точка звездочка" в переводе на русский означает - любой символ в любом количестве) Для подсчета просто строк можно использовать
set str=.*
Но тогда, если честно, узнать количество строк можно и другим способом - здесь же фильтр по определенному шаблону использован, а не все строки подряд.
В каталоге так же размещен файл lastrun.ini, который содержит информацию о моменте дате последнего запуска, и количестве найденных по шаблону строк.
Запускать скрипт count.vbs лучше от имени администратора, по расписанию, предоставив пользователю полные права на каталог скрипта (запись) и каталог хранения логов (чтение).
Недостатки: Нагрузка на файловую систему по чтению строк с лога - хоть grep и быстр, как черт, но если запускать слишком часто - получите приличную нагрузку.
Примечание: для случая, когда для хранения базы данных BNC (NIS Platform) использована платформа SQL можно сделать более быстрое по скорости решение...
|