2015-04-30 3 views
1

Я новичок в logstash, но я потратил довольно много времени, пытаясь добиться этого без успеха. Я отправляю свои журналы из нескольких приложений на другом сервере через udp для регистрации. Вот конфигурация logstash:Logstash udp вход не работает

input{ 
    udp{ 
    port => 5960 
    type => "log4net" 
    } 
} 
filter { 
    grok { 
    match => ["message", "(?m)%{TIMESTAMP_ISO8601:sourceTimestamp}\s*%{WORD:System}\s*%{LOGLEVEL:logLevel}\s*-\s*%{WORD:logger}\s*-\s*%{NOTSPACE:source}\s*%{NOTSPACE:action}\s*%{UUID:transactionId}\s*%{GREEDYDATA:message}"] 
    } 
} 
output { 
    elasticsearch { 
    protocol => "http" 
    host => "[mylocalip]" 
    port => "9200" 
    } 
    stdout { codec => rubydebug } 
} 

К сожалению, не зарегистрирован ни одно сообщение. Я проверил и убедился, что порт доступен, когда я запускаю logstash. Я также правильно настроил брандмауэр, чтобы разрешить сообщение udp через этот порт. Когда я tcpdump, я могу видеть сообщения udp. Кроме того, я попробовал другой метод ввода (журналы из nginx), и он работает нормально. Что я делаю неправильно?
ElasticSearch версия-1,4
Logstash версия - 1,5 (первоначально пытались также с 1.4)
ОС - CentOS 6.5
Java - OpenJDK Runtime Environment (RHEL-2.5.5.1.el6_6-x86_64 U79-b14)

+0

В вашем файле logstash.stdout появляется что-нибудь вообще? Есть ли ошибки или предупреждения в logstash.log или logstash.err? – Rumbles

+0

для лучшего отладки Я запускаю logstash в bash с командой bash logstash -f my.config. Файл конфигурации содержит верхнюю конфигурацию ... Я только получаю «Запуск Logstash завершен» в консоли - нет ошибки, после которой я не получаю никакого отладочного вывода (что я должен предположить) ... Ничего в файле .stdout или .err. – inniko

+0

Попробуйте включить -l /your-logfile.log, чтобы получить некоторые журналы, поступающие из LS, которые могут помочь вам найти проблему. – Rumbles

ответ

0

Скорее всего, вы пропустите маршрут к отправителю. Если это так, то произойдет следующее:

  1. Вы получаете пакет, который был отправлен на ваш IP-порт в logstash.
  2. Вы видите это в tcpdump, так как это сетевой уровень.
  3. Затем ядро ​​пытается достичь отправителя (даже для UDP).
  4. Если нет маршрута, он терпит неудачу и, следовательно, отбрасывает пакет UDP, и вы не видите его на уровне приложения.
0
  1. Проверьте журнал регистрации, чтобы узнать, на каком хосте он открывает порт. Значение по умолчанию: 0.0.0.0. Который не будет достигнут. Добавьте параметр «host» в определение udp.
  2. Используйте инструмент проверки портов (например, qryport на Windows), чтобы проверить, действительно ли прослушивается порт.