Logstash Gelf - Multiple sources - logstash

I am trying to use gelf input plugin for some ESB logs with GELF Layout (just started ELK Stack for logging). I am successful in getting the logs through a configured port. As there are around 100 apps (will keep adding) and some are WebServices which keeps spitting logs is it ok to have all logs through a single port as would that create any performance problem or missing some logs? Like LS - File beat has that backpressure-sensitive protocol, is there something like this in gelf Input plugin?
input {
gelf{
host => "testelkstacksrvr1"
port => 9090
}
}

You should use GELF over TCP. NXLog can also do this and flow-control will prevent logs getting dropped.

Related

Fluentd-logstash integration

I am using in fluentd out-http plugin to integrate with logstash, but I am getting the following error:
failed to emit fluentd's log event tag="fluent.info"
event={"type"=>"syslog", "plugin_id"=>"object:3f923544ab40",
"message"=>"shutting down input type=\"syslog\"
plugin_id=\"object:3f923544ab40\""} error_class=ArgumentError
error=#
Can anyone help me to solve this issue?
If you want to send data from fluentd to logstash you can do it using TCP.
This open-source plugin will enable you to send TCP data (even secured SSL/TLS) directly to logstash TCP input (no need to use the fluentd codec).
more details on this answer, good luck.

Is it possible to specify a unique file for incoming Syslog events?

I am using a propriety device which sends syslog events to a server. By default, these messages are ending up in /var/log/syslog. I am unable to configure a different file target on the device.
Is there a way to configure syslog so that external events are kept in a separate file?
I have a centralized syslog server running rsyslogd, which should be default in Ubuntu as well. Apart from saving all syslog messages to MySQL, i have the following configuration to store them to individual files by hostname:
if $fromhost-ip != "127.0.0.1" then {
$template remotelog,"/var/log/remote/%hostname%.log"
*.* ?remotelog
stop
}
This is written in RainerScript, which should be included in your rsyslogd version since Ubuntu 14.04. Just paste it to your rsyslogd.conf file.

Logs and ELK stack on separate servers, how to display the logs?

I have logs on one server and ELK stack -- ElasticSearch, Kibana, Logstash -- on another. I want to display the logs, which are on the 1st server, in Kibana, which is on the 2nd one.
How can I do that? Is logstash capable of retrieving logs over the internet from a remote server?
Your best bet is to use Filebeat on server one and send the logs to the logstash server.
https://www.elastic.co/products/beats/filebeat
Logstash can't access remote file, you'll have to use a shipper, like beaver, using udp or tcp transport:
Beaver documentation.

logstash plugin for jenkins

I am attempting to use logstash pluin for jenkins https://wiki.jenkins-ci.org/display/JENKINS/Logstash+Plugin and have it configured to work with elasticsearch. Seems I do not know why my logs from jenkins are not being forwarded I have logstash runnning on port 6379 and looking for fetch and sort a trace.log
In which port is your elastic search running? You need to configure the host and port of the elastic search in your Jenkins instance. For example http::9200. in general you could access the logs of the Jenkins in Elastic search under port 9200.
What do your logstash config files look like; in particular your input block? Is 6379 the port you have logstash running on? I think you may want to try specifying elasticsearch host & port info here. Even though it's a logstash plugin, it seems to be skipping logstash all together and sends it straight to the indexer (in your case elasticsearch).

Outputting UDP From Logstash

I have some logs that I want to use logstash to collate . It will be the logstash agent as a shipper on the source servers going to a central logging server . I want to use UDP from the shipper to the central log so I can be totally isolated should the logger fail ( I dont want the 70 odd production servers affected in any way ) . The only way I can see of using udp for the transport is to output using syslog format . Does anyone know of a way I can output UDP natively from logstash ? ( The docs hint at it but I must be missing something on the TCP side ?)
My understanding is that the typical approach would be to use something a bit more lightweight (rsyslog, or even Lumberjack) running on the remote machine, that is sending data to your central logstash server.
It sounds like you want logstash agents (forwarders) to be running on each server and sending the data to the broker. This blog post (also linked as an example below), gives a nice explanation of why they chose not to use logstash forwarders on their remote servers - they eat too much RAM
I use a setup where rsyslog sends UDP data to logstash directly. I've also used a setup where rsyslog was the receiving log server, and aggregated the logs into separate logfiles (based on server hostname) and then logstash read from those files.
For some example configs see the following:
Logstash with Lumberjack and ES
Logstash with rsyslog and ES
I suggest the rsyslog approach, as the chances that rsyslog is already running on your server is higher than Lumberjack. Also there is quite a bit more documentation on rsyslog than Lumberjack. Start off simple, and add more complexity later on, if you feel the need.
You can output UDP natively using the UDP output plugin
http://logstash.net/docs/1.2.1/outputs/udp
By setting the codec field, you can choose whatever output format you like (e.g. JSON)

Resources