Решил ещё прикрутить syslog-сбор. Включил syslog в netxms, перегрузил. Включил tcpdump пакеты видно что идут на 514 по udp. Но в Syslog Browser-е я почему-то не вижу ни одного пришедшего евента. В чем может быть проблема?
Может я че-то где-то не настроил???
			
			
			
				A v logah servera nichego net pro oshibki pri starte (naprimer chto ne udalos' sdelat' bind na port 514)? I esche - mozno li prislat' neskol'ko obrazcov soobschenij - esli server ih prinimaet to edinstvennaja prichina po kotoroj oni mogut ne pojavljatsja v loge eto oshibka pri parsinge.
			
			
			
				Ошибок при старте нет. Порт байндится замечательно. По нетстату его видно.
Образцы какого рода сообщений? Тех что я ловлю в tcpdump или же те, что на оборудовании в логах?
Если на оборудовании, то вот:
Nov  9 10:14:32.955: %SYS-5-CONFIG_I: Configured from console by ets on vty0 (IP ADDRESS)
Nov  9 10:18:17.149: %SYS-5-CONFIG_I: Configured from console by ets on vty0 (IP ADDRESS)
Nov  9 10:42:49.899: %SYS-5-CONFIG_I: Configured from console by ets on vty0 (IP ADDRESS)
Nov  9 10:43:23.736: ISDN Dc1/0 SC Q931: TX -> CONNECT pd = 8  callref = 0xCF63
Nov  9 10:43:23.760: ISDN Dc1/0 SC Q931: RX <- CONNECT_ACK pd = 8  callref = 0x4F63
Nov  9 10:43:23.892: ISDN Dc1/0 SC Q931: RX <- DISCONNECT pd = 8  callref = 0x4F66
			
			
			
				Esli po setke soobschenija prihodjat tochno takie-ze, to pohoze ponjatno. NetXMS server ne rasschitivaet poluchit' timestamp v vide hh:mm:ss.xxx, shitaet chto timestamp plohoj i otbrasivaet soobschenie. A eto standartnij variant kstati? Ja vrode po RFC delal parsing... No v ljubom sluchae dobavlju obrabotku takogo varianta timestamp'a.
			
			
			
				Такой таймстамп возвращает оборудование под названием Cisco :) Не думаю я что они работают не по RFC. Во всяком случае продукт под название SolarWinds видит такой таймстамп нормально и обрабатывает его.
			
			
			
				Citata iz RFC3164 (The BSD syslog Protocol), napisana chelovekom iz Cisco:
Quote
The HEADER contains two fields called the TIMESTAMP and the HOSTNAME.
   The TIMESTAMP will immediately follow the trailing ">" from the PRI
   part and single space characters MUST follow each of the TIMESTAMP
   and HOSTNAME fields.  HOSTNAME will contain the hostname, as it knows
   itself.  If it does not have a hostname, then it will contain its own
   IP address.  If a device has multiple IP addresses, it has usually
   been seen to use the IP address from which the message is
   transmitted.  An alternative to this behavior has also been seen.  In
   that case, a device may be configured to send all messages using a
   single source IP address regardless of the interface from which the
   message is sent.  This will provide a single consistent HOSTNAME for
   all messages sent from a device.
   The TIMESTAMP field is the local time and is in the format of "Mmm dd
   hh:mm:ss" (without the quote marks) where:
         Mmm is the English language abbreviation for the month of the
         year with the first character in uppercase and the other two
         characters in lowercase.  The following are the only acceptable
         values:
         Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
         dd is the day of the month.  If the day of the month is less
         than 10, then it MUST be represented as a space and then the
         number.  For example, the 7th day of August would be
         represented as "Aug  7", with two spaces between the "g" and
         the "7".
         hh:mm:ss is the local time.  The hour (hh) is represented in a
         24-hour format.  Valid entries are between 00 and 23,
         inclusive.  The minute (mm) and second (ss) entries are between
         00 and 59 inclusive.
   A single space character MUST follow the TIMESTAMP field.
Ni slova pro vozmoznost' takogo formata.
			
				Понимаю но факт остается фактом :(((
Вот не с железки, а с SolarWinds лог:
MsgID   Active  IP      Hostname        DateTime        Facility        Priority        Message
1302754 Да      MY_IP   myhostname    2007-10-10 15:19:01     184     6       15512: Oct 10 11:19:20.614: %SEC-6-IPACCESSLOGP: list 170
denied tcp IP_A(41928) -> MY_IP(22), 1 packet
Т.е. судя по тому что я вижу, они не парсят пакет.. А превращают его в обычный string и бросают в лог.
			
			
			
				Aga, a mi parsim (v osnovnom dlja togo chtobi svjazat' s ob'ektom node), bol'she intellekta - bol'she problem :) Zaregistriroval v bugtracker'e kak issue #199, budu ispravljat'.
			
			
			
				Это все понятно. Значится ждем-с :)
			
			
			
				Есть какие-то продвижения по данному вопросу?
			
			
			
				Пока нет, всю неделю не до того было... На выходных займусь.
			
			
			
				Vrode ispravil. Esli zamenit' prilozennij fail v src/server/core i peresobrat', to dolzno rabotat'.
			
			
			
				Угу.. Можно включать в следующий релиз. Тему можно закрывать.
P.S.>Осталось разобраться как теперь работать с этим :))) Но это уже другая тема :)
			
			
			
				Поторопился с закрытием :)
Вопросы:
-Можно ли как-то настроить events-ы по приходу Notice, Information, Error сообщений от Syslog-а?
-Просматривать за прошлый месяц,день,час. Имеется в виду фильтр примерно такой же как на графиках.
			
			
			
				Пока нельзя. В планах уже давно, но никак руки не доходят...
			
			
			
				Дополнение:
Возможно ли внести понятие размер шрифта, а также возможно редактировать столбцы для вывода? К примеру выводить только 4 столбца: Time, Severity, Hostname, Message. К примеру Facility, Tag мне не нужны.
			
			
			
				Будут какие-то ответы?
			
			
			
				Я принял к сведению :) Конечно, все возможно, и со временем обязательно будет.
			
			
			
				Сорри, что поднимаю тему вновь, но честно говоря не совсем понятно как в 0.2.23 отлавливать события пришедшие по Syslog. Можно какой-нить мини-мануальчик хотя бы?
Спасибо заранее.
P.S.> Предыдущие запросы мои по этому вопросу остались.
			
			
			
				Quote from: Alex on November 19, 2008, 12:45:48 PM
Сорри, что поднимаю тему вновь, но честно говоря не совсем понятно как в 0.2.23 отлавливать события пришедшие по Syslog. Можно какой-нить мини-мануальчик хотя бы?
Надо через Control Panel -> Syslog Parser написать XML, где описывается, какие записи в syslog превращать в события. Формат этого XML'a описан здесь: https://www.netxms.org/forum/index.php/topic,483.0.html (https://www.netxms.org/forum/index.php/topic,483.0.html). Можно указывать или код, или имя события. Потом делается обработка событий как обычно через event processing policy.
			
 
			
			
				Что-то почта не отправляется :(
			
			
			
				Пробовал прописать и в другом регистре поисковую строку, не помогает.
			
			
			
				UP!  ??? ::)
			
			
			
				Как-то я пропустил этот пост, прошу прощения :) А релиз 0.2.23 так-же себя ведет? Еслт да, пришли пожалуйста оригинальную строку из syslog'a, которая должна создавать событие.
			
			
			
				Виктор, скорее всего я что-то где-то не так делаю. Можете дать хотя бы краткую инструкцию где что и как прописывать?
			
			
			
				Да, ошибка в XML. Я сам тоже почему-то не сразу заметил, хотя несколько раз в этот скриншот смотрел :( Пропущен уровень <rules> - правильный XML должен выглядеть так:
<parser>
   <rules>
      <rule>
          <match>error</match>
          <event>SYSLOG_ERROR</event>
      </rule>
   </rules>
</parser>
			
			
			
				Кстати, в релизе появилась возможность делать контексты для правил (проверка match только если какое-то другое правило уже выполнилось) - если это интересно, я напишу как настраивать.
			
			
			
				Разумеется интересно  ::)
			
			
			
				Quote from: Victor Kirhenshtein on December 15, 2008, 03:50:18 PM
Да, ошибка в XML. Я сам тоже почему-то не сразу заметил, хотя несколько раз в этот скриншот смотрел :( Пропущен уровень <rules> - правильный XML должен выглядеть так:
<parser>
   <rules>
      <rule>
          <match>error</match>
          <event>SYSLOG_ERROR</event>
      </rule>
   </rules>
</parser>
Не помогает. В Syslog-е появляется запись о том, что пришло событие, а в EventLog и соответственно обрабатывать сообщение не хочет :(
			
 
			
			
				Только что проверил - работает. Но есть один баг - надо рестартить сервер чтобы новая конфигурация syslog-parser'a вступила в силу.
			
			
			
				Хм. Как-то странно.
Сделал правило для сбора статистики кто и когда конфигурил устройство. В правилах на match прописал слово Configured. В итоге как выполняю только эту команду, так получается следующая фигня. NetXMS просто валится, да еще и без объяснения причин. :(
			
			
			
				Da, esche odin bug :( Esli server na UNIX'e, to mozno zamenit' syslogd.cpp na prilozennij i peresobrat' - dolzno projti. Esli na Windows, to ja peresoberu binarnik i prishlju.
			
			
			
				У меня Linux, поэтому все заработало. ;D Супер. :o
Осталось только пара вопросов:
Вопрос, можно ли сделать так, чтоб правила Syslog Parser-а применялись без перезагрузки сервера? А то если я даже что-то поменяю, то после изменений (не добавления нового правила даже, а именно изменения существующего) приходится перегружать сервер. :(
и еще одно, если нет ни одного правила в syslog parser-е, то при запуске сервера в лог пишется:
[16-Dec-2008 07:38:09] Cannot initialize syslog parser: no element found at line 1
			
			
			
				Ja objazatel'no sdelaju, chtobi izmenenija vstupali v silu. Zapisal eto kak bug v bugtracker, tak cho nadejus' ne zabudu :)
Esli patch budet ne ochen' mashtabnij, to vilozu zdes' faili, kotorie neobhodimo budet pomenjat'.
Soobschenie pri pustom parsere - toze bug, no uze kosmeticheskij. Prosto pri sozdanii parsera ne delaetsja razlichij mezdu pustoj konfiguraciej (chto normal'no), i oshibkoj v xml'e.
			
			
			
				И хотел бы напомнить еще раз о том, что я писал в этой теме:
"-Просматривать за прошлый месяц,день,час. Имеется в виду фильтр примерно такой же как на графиках."
В принципе тогда можно будет закрыть тему Syslog-а раз и навсегда.. Ибо в принципе больше ничего не требуется от него  ::)
			
			
			
				Настроил пересылку логов на внутренний syslog сервер NetXMS, в консоле NetXMS видно что логи приходят, но парсинг не происходит, в не зависимости от значения severity, принимаются все логи что отправляются syslog серверу NetXMS. При этом и не срабатывает действие заложенное в конструкции парсера. В чём может быть загвоздка? Схожая конструкция для Windows Event Log работает.
Сам парсер syslog
<parser>
   <rules>
      <rule>
         <severity>15</severity>
         <match>(.*)</match>
         <event params="1">100004</event>
      </rule>
   </rules>
</parser>
в приложенном файле вид окна syslog. И по нему ещё один вопрос: нормально ли что в поле hostname отображается sys, а не действительный hostname машины
			
			
			
				Несколько вопросов: 
Событие с кодом 100004 существует?
Можно ли как-то увидеть оригинальное syslog сообщение?
Есть ли какие-нибудь ошибки в логе NetXMS сервера?
sys в поле hostname - это баг, исправил.
			
			
			
				Событие с кодом 100004 существует, и используется при парсинге Windows Event log. Оно работает.
ошибок в логе NetXMS сервера нет
Оригинальное сообщение Rsyslog:
Jul 14 13:35:58 sys-sv-11 mysqld: 100714 13:35:58 [Warning] Statement may not be safe to log in statement format. Statement: UPDATE smf_log_activity
Jul 14 13:35:58 sys-sv-11 mysqld: #011#011SET
Jul 14 13:35:58 sys-sv-11 mysqld: #011#011#011hits = hits + 1
Jul 14 13:35:58 sys-sv-11 mysqld: #011#011WHERE date = '2010-07-14'
Спасибо вам за программу, чем дальше узнаёшь её возможности тем больше понимаешь что всё логично и удобно.
			
			
			
				Ну так есть идеи по этой проблеме?
			
			
			
				Вроде разобрался. Источник проблем - именно неправильный парсинг имени хоста. Сервер пытается связать сообщение с объектом узла по имени, и не находит сооответствующий узел, поскольку имя хоста неправильное. На днях выйдет версия 1.0.4, там будут исправления.
			
			
			
				Только сейчас удалось проверить. Теперь поля Hostname и tag отображают корректную информацию. Но сама конструкция почему-то не срабатывает, письмо не отправляется. Было бы не плохо понять в чём загвоздка. что посоветуете?
			
			
			
				Недавно конструкция сработала, вот только не понятно как механизм работает внутри себя. Одни сообщения обрабатываются, другие нет. Пояснение в приложенном файле, может натолкнёт на решение (сработало то что выделено, а на следующее сообщение система уже не отреагировала)