Re: [Freeipa-users] Logging: IPA to Rsyslog to Logstash

2015-01-05 Thread Martin Kosek
Thanks, I just changed it to follow Mediawiki syntax and renamed it to

http://www.freeipa.org/page/Howto/Centralised_Logging_with_Logstash/ElasticSearch/Kibana

to keep current Howto structure. Please feel free encouraged to fill up any
more details as you go with your adventures that the community may profit from!

Thanks,
Martin

On 01/05/2015 12:49 PM, Innes, Duncan wrote:
> Sure - efforts so far at:
> 
> http://www.freeipa.org/page/Centralised_Logging_with_Logstash/ElasticSea
> rch/Kibana
> 
> Hope it helps.
> 
> Cheers
> Duncan
> 
>> -Original Message-
>> From: freeipa-users-boun...@redhat.com
> [mailto:freeipa-users-boun...@redhat.com] On Behalf Of Petr Spacek
>> Sent: 05 January 2015 08:22
>> To: freeipa-users@redhat.com
>> Subject: Re: [Freeipa-users] Logging: IPA to Rsyslog to Logstash
>>
>> Hello Duncan,
>>
>> thank you for doing this!
>>
>> Could you transform this post to
>> http://www.freeipa.org/page/HowTos#Working_with_FreeIPA article,
> please? I think that other people could use that too.
>>
>> Thank you very much.
>> Petr^2 Spacek
> 
> This message has been checked for viruses and spam by the Virgin Money email 
> scanning system powered by Messagelabs.
> 
> This e-mail is intended to be confidential to the recipient. If you receive a 
> copy in error, please inform the sender and then delete this message.
> 
> Virgin Money plc - Registered in England and Wales (Company no. 6952311). 
> Registered office - Jubilee House, Gosforth, Newcastle upon Tyne NE3 4PL. 
> Virgin Money plc is authorised by the Prudential Regulation Authority and 
> regulated by the Financial Conduct Authority and the Prudential Regulation 
> Authority.
> 
> The following companies also trade as Virgin Money. They are both authorised 
> and regulated by the Financial Conduct Authority, are registered in England 
> and Wales and have their registered office at Jubilee House, Gosforth, 
> Newcastle upon Tyne NE3 4PL: Virgin Money Personal Financial Service Limited 
> (Company no. 3072766) and Virgin Money Unit Trust Managers Limited (Company 
> no. 3000482).
> 
> For further details of Virgin Money group companies please visit our website 
> at virginmoney.com
> 

-- 
Manage your subscription for the Freeipa-users mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-users
Go To http://freeipa.org for more info on the project


Re: [Freeipa-users] Logging: IPA to Rsyslog to Logstash

2015-01-05 Thread Innes, Duncan
Sure - efforts so far at:

http://www.freeipa.org/page/Centralised_Logging_with_Logstash/ElasticSea
rch/Kibana

Hope it helps.

Cheers
Duncan

> -Original Message-
> From: freeipa-users-boun...@redhat.com
[mailto:freeipa-users-boun...@redhat.com] On Behalf Of Petr Spacek
> Sent: 05 January 2015 08:22
> To: freeipa-users@redhat.com
> Subject: Re: [Freeipa-users] Logging: IPA to Rsyslog to Logstash
> 
> Hello Duncan,
> 
> thank you for doing this!
> 
> Could you transform this post to
> http://www.freeipa.org/page/HowTos#Working_with_FreeIPA article,
please? I think that other people could use that too.
> 
> Thank you very much.
> Petr^2 Spacek

This message has been checked for viruses and spam by the Virgin Money email 
scanning system powered by Messagelabs.

This e-mail is intended to be confidential to the recipient. If you receive a 
copy in error, please inform the sender and then delete this message.

Virgin Money plc - Registered in England and Wales (Company no. 6952311). 
Registered office - Jubilee House, Gosforth, Newcastle upon Tyne NE3 4PL. 
Virgin Money plc is authorised by the Prudential Regulation Authority and 
regulated by the Financial Conduct Authority and the Prudential Regulation 
Authority.

The following companies also trade as Virgin Money. They are both authorised 
and regulated by the Financial Conduct Authority, are registered in England and 
Wales and have their registered office at Jubilee House, Gosforth, Newcastle 
upon Tyne NE3 4PL: Virgin Money Personal Financial Service Limited (Company no. 
3072766) and Virgin Money Unit Trust Managers Limited (Company no. 3000482).

For further details of Virgin Money group companies please visit our website at 
virginmoney.com

-- 
Manage your subscription for the Freeipa-users mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-users
Go To http://freeipa.org for more info on the project


Re: [Freeipa-users] Logging: IPA to Rsyslog to Logstash

2015-01-05 Thread Innes, Duncan
 
-Original Message-
> From: freeipa-users-boun...@redhat.com
[mailto:freeipa-users-boun...@redhat.com] On Behalf Of Dmitri Pal
> Sent: 20 December 2014 03:37
> To: freeipa-users@redhat.com
> Subject: Re: [Freeipa-users] Logging: IPA to Rsyslog to Logstash
> 
> On 12/19/2014 11:35 AM, Innes, Duncan wrote:
> 
> >
> > Is it feasible to alter the timestamp resolution that dirsrv uses?  
> > This would help separate log lines properly.
> 
> Please file a 389 RFE.
> 

Done: https://fedorahosted.org/389/ticket/47982

> 
> --
> Thank you,
> Dmitri Pal
> 
> Sr. Engineering Manager IdM portfolio
> Red Hat, Inc.
> 
> --

This message has been checked for viruses and spam by the Virgin Money email 
scanning system powered by Messagelabs.

This e-mail is intended to be confidential to the recipient. If you receive a 
copy in error, please inform the sender and then delete this message.

Virgin Money plc - Registered in England and Wales (Company no. 6952311). 
Registered office - Jubilee House, Gosforth, Newcastle upon Tyne NE3 4PL. 
Virgin Money plc is authorised by the Prudential Regulation Authority and 
regulated by the Financial Conduct Authority and the Prudential Regulation 
Authority.

The following companies also trade as Virgin Money. They are both authorised 
and regulated by the Financial Conduct Authority, are registered in England and 
Wales and have their registered office at Jubilee House, Gosforth, Newcastle 
upon Tyne NE3 4PL: Virgin Money Personal Financial Service Limited (Company no. 
3072766) and Virgin Money Unit Trust Managers Limited (Company no. 3000482).

For further details of Virgin Money group companies please visit our website at 
virginmoney.com

-- 
Manage your subscription for the Freeipa-users mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-users
Go To http://freeipa.org for more info on the project


Re: [Freeipa-users] Logging: IPA to Rsyslog to Logstash

2015-01-05 Thread Petr Spacek
Hello Duncan,

thank you for doing this!

Could you transform this post to
http://www.freeipa.org/page/HowTos#Working_with_FreeIPA article, please? I
think that other people could use that too.

Thank you very much.
Petr^2 Spacek

On 19.12.2014 17:35, Innes, Duncan wrote:
> Earlier this year I said I'd feed back how my IPA to Rsyslog to Logstash
> experiments went.
> 
> They went badly.  And I didn't get much time.  Today, however, I managed
> to get over my imaginary finishing line:
> 
> All systems are RHEL 6.6.
> 
> Rsyslog (rsyslog7-7.4.10) is configured to import logs from some dirsrv
> files:
> 
> # cat /etc/rsyslog.d/dirsrv.conf 
> module(load="imfile" PollingInterval="2")
> 
> input(type="imfile"
>   File="/var/log/dirsrv/slapd-EXAMPLE-COM/access"
>   Tag="dirsrv"
>   StateFile="statedirsrv"
>   Facility="local0")
> 
> input(type="imfile"
>   File="/var/log/dirsrv/slapd-EXAMPLE-COM/errors"
>   Tag="dirsrv"
>   StateFile="statedirsrverr"
>   Severity="error"
>   Facility="local0")
> 
> #
> 
> This pulls in those log entries on a regular basis.  Rsyslog8 allows you
> to use inotify for file changes, but that's not available to me.
> 
> Rsyslog is then also configured to push all logs to my Logstash servers:
> 
> # cat /etc/rsyslog.d/logstash.conf 
> template(name="ls_json" type="list" option.json="on")
> { constant(value="{")
> constant(value="\"@timestamp\":\"") property(name="timegenerated"
> dateFormat="rfc3339")
> constant(value="\",\"@version\":\"1")
> constant(value="\",\"message\":\"") property(name="msg")
> constant(value="\",\"host\":\"") property(name="hostname")
> constant(value="\",\"my_environment\":\"dev")
> constant(value="\",\"my_project\":\"Infrastructure")
> constant(value="\",\"my_use\":\"IPA")
> constant(value="\",\"logsource\":\"") property(name="fromhost")
> constant(value="\",\"severity_label\":\"")
> property(name="syslogseverity-text")
> constant(value="\",\"severity\":\"") property(name="syslogseverity")
> constant(value="\",\"facility_label\":\"")
> property(name="syslogfacility-text")
> constant(value="\",\"facility\":\"") property(name="syslogfacility")
> constant(value="\",\"program\":\"") property(name="programname")
> constant(value="\",\"pid\":\"") property(name="procid")
> constant(value="\",\"rawmsg\":\"") property(name="rawmsg")
> constant(value="\",\"syslogtag\":\"") property(name="syslogtag")
> constant(value="\"}\n")
> }
> 
> *.* @@logstash01.example.com:5500;ls_json
> $ActionExecOnlyWhenPreviousIsSuspended on
> & @@logstash02.example.com:5500;ls_json
> & /var/log/localbuffer
> $ActionExecOnlyWhenPreviousIsSuspended off
> 
> [root@lvdlvldap02 ~]#
> 
> Which pushes all logs to my logstash servers in JSON format.  Failover
> is built in by using 2 logstash servers.
> The client needs to have SELinux managed to allow rsyslog to write to
> port 5500:
> 
> # semanage port -a -t syslogd_port_t -p tcp 5500
> # semanage port -l | grep 5500
> 
> The Logstash servers are then configured to listen on this port and do
> some simple groking, before sending everything to the ElasticSearch
> cluster:
> 
> # cat /etc/logstash/conf.d/syslog.conf 
> input {
>   tcp {
> type => syslogjson
> port => 5500
> codec => "json"
>   }
> }
> 
> filter {
>   # This replaces the host field (UDP source) with the host that
> generated the message (sysloghost)
>   if [sysloghost] {
> mutate {
>   replace => [ "host", "%{sysloghost}" ]
>   remove_field => "sysloghost" # prune the field after successfully
> replacing "host"
> }
>   }
>   if [type] == "syslogjson" {
> grok {
>   patterns_dir => "/opt/logstash/patterns"
>   match => { "message" => "%{VIRGINFW}" }
>   match => { "message" => "%{AUDITAVC}" }
>   match => { "message" => "%{COMMONAPACHELOG}" }
>   tag_on_failure => []
> }
>   }
> 
>   # This filter populates the @timestamp field with the timestamp that's
> in the actual message
>   # dirsrv logs are currently pulled in every 2 minutes, so @timestamp
> is wrong
>   if [syslogtag] == "dirsrv" {
> mutate {
>   remove_field => [ 'rawmsg' ]
> }
> grok {
>   match => [ "message", "%{HTTPDATE:log_timestamp}" ]
> }
> date {
>   match => [ "log_timestamp", "dd/MMM/YYY:HH:mm:ss Z"]
>   locale => "en"
>   remove_field => [ "log_timestamp" ]
> }
>   }
> }
> 
> output {
>   elasticsearch {
> protocol => node
> node_name => "Indexer01"
>   }
> }
> #
> 
> It works well for the most part.  I'm not performing any groking of the
> actual message line as yet to pull out various bits of data into their
> own separate fields, but at least I'm managing to log the access and
> errors from multiple IPA servers.
> 
> The @timestamp field ends up with the timestamp from the actual message
> line, so it's only down to second accuracy.  This means that multiple
> log lines on the same second lose their ordering when viewed in the
> Logstash/Kibana interface.  But the impo

Re: [Freeipa-users] Logging: IPA to Rsyslog to Logstash

2014-12-19 Thread Dmitri Pal

On 12/19/2014 11:35 AM, Innes, Duncan wrote:

Earlier this year I said I'd feed back how my IPA to Rsyslog to Logstash
experiments went.

They went badly.  And I didn't get much time.  Today, however, I managed
to get over my imaginary finishing line:

All systems are RHEL 6.6.

Rsyslog (rsyslog7-7.4.10) is configured to import logs from some dirsrv
files:

# cat /etc/rsyslog.d/dirsrv.conf
module(load="imfile" PollingInterval="2")

input(type="imfile"
   File="/var/log/dirsrv/slapd-EXAMPLE-COM/access"
   Tag="dirsrv"
   StateFile="statedirsrv"
   Facility="local0")

input(type="imfile"
   File="/var/log/dirsrv/slapd-EXAMPLE-COM/errors"
   Tag="dirsrv"
   StateFile="statedirsrverr"
   Severity="error"
   Facility="local0")

#

This pulls in those log entries on a regular basis.  Rsyslog8 allows you
to use inotify for file changes, but that's not available to me.

Rsyslog is then also configured to push all logs to my Logstash servers:

# cat /etc/rsyslog.d/logstash.conf
template(name="ls_json" type="list" option.json="on")
{ constant(value="{")
constant(value="\"@timestamp\":\"") property(name="timegenerated"
dateFormat="rfc3339")
constant(value="\",\"@version\":\"1")
constant(value="\",\"message\":\"") property(name="msg")
constant(value="\",\"host\":\"") property(name="hostname")
constant(value="\",\"my_environment\":\"dev")
constant(value="\",\"my_project\":\"Infrastructure")
constant(value="\",\"my_use\":\"IPA")
constant(value="\",\"logsource\":\"") property(name="fromhost")
constant(value="\",\"severity_label\":\"")
property(name="syslogseverity-text")
constant(value="\",\"severity\":\"") property(name="syslogseverity")
constant(value="\",\"facility_label\":\"")
property(name="syslogfacility-text")
constant(value="\",\"facility\":\"") property(name="syslogfacility")
constant(value="\",\"program\":\"") property(name="programname")
constant(value="\",\"pid\":\"") property(name="procid")
constant(value="\",\"rawmsg\":\"") property(name="rawmsg")
constant(value="\",\"syslogtag\":\"") property(name="syslogtag")
constant(value="\"}\n")
}

*.* @@logstash01.example.com:5500;ls_json
$ActionExecOnlyWhenPreviousIsSuspended on
& @@logstash02.example.com:5500;ls_json
& /var/log/localbuffer
$ActionExecOnlyWhenPreviousIsSuspended off

[root@lvdlvldap02 ~]#

Which pushes all logs to my logstash servers in JSON format.  Failover
is built in by using 2 logstash servers.
The client needs to have SELinux managed to allow rsyslog to write to
port 5500:

# semanage port -a -t syslogd_port_t -p tcp 5500
# semanage port -l | grep 5500

The Logstash servers are then configured to listen on this port and do
some simple groking, before sending everything to the ElasticSearch
cluster:

# cat /etc/logstash/conf.d/syslog.conf
input {
   tcp {
 type => syslogjson
 port => 5500
 codec => "json"
   }
}

filter {
   # This replaces the host field (UDP source) with the host that
generated the message (sysloghost)
   if [sysloghost] {
 mutate {
   replace => [ "host", "%{sysloghost}" ]
   remove_field => "sysloghost" # prune the field after successfully
replacing "host"
 }
   }
   if [type] == "syslogjson" {
 grok {
   patterns_dir => "/opt/logstash/patterns"
   match => { "message" => "%{VIRGINFW}" }
   match => { "message" => "%{AUDITAVC}" }
   match => { "message" => "%{COMMONAPACHELOG}" }
   tag_on_failure => []
 }
   }

   # This filter populates the @timestamp field with the timestamp that's
in the actual message
   # dirsrv logs are currently pulled in every 2 minutes, so @timestamp
is wrong
   if [syslogtag] == "dirsrv" {
 mutate {
   remove_field => [ 'rawmsg' ]
 }
 grok {
   match => [ "message", "%{HTTPDATE:log_timestamp}" ]
 }
 date {
   match => [ "log_timestamp", "dd/MMM/YYY:HH:mm:ss Z"]
   locale => "en"
   remove_field => [ "log_timestamp" ]
 }
   }
}

output {
   elasticsearch {
 protocol => node
 node_name => "Indexer01"
   }
}
#

It works well for the most part.  I'm not performing any groking of the
actual message line as yet to pull out various bits of data into their
own separate fields, but at least I'm managing to log the access and
errors from multiple IPA servers.

The @timestamp field ends up with the timestamp from the actual message
line, so it's only down to second accuracy.  This means that multiple
log lines on the same second lose their ordering when viewed in the
Logstash/Kibana interface.  But the important thing at this point is
that they're now held centrally.

Is it feasible to alter the timestamp resolution that dirsrv uses?  This
would help separate log lines properly.


Please file a 389 RFE.



Cheers & Merry Festive Holiday thing

Duncan

This message has been checked for viruses and spam by the Virgin Money email 
scanning system powered by Messagelabs.

This e-mail is intended to be confidential to the recipient. If you receive a 
copy in error, pleas

[Freeipa-users] Logging: IPA to Rsyslog to Logstash

2014-12-19 Thread Innes, Duncan
Earlier this year I said I'd feed back how my IPA to Rsyslog to Logstash
experiments went.

They went badly.  And I didn't get much time.  Today, however, I managed
to get over my imaginary finishing line:

All systems are RHEL 6.6.

Rsyslog (rsyslog7-7.4.10) is configured to import logs from some dirsrv
files:

# cat /etc/rsyslog.d/dirsrv.conf 
module(load="imfile" PollingInterval="2")

input(type="imfile"
  File="/var/log/dirsrv/slapd-EXAMPLE-COM/access"
  Tag="dirsrv"
  StateFile="statedirsrv"
  Facility="local0")

input(type="imfile"
  File="/var/log/dirsrv/slapd-EXAMPLE-COM/errors"
  Tag="dirsrv"
  StateFile="statedirsrverr"
  Severity="error"
  Facility="local0")

#

This pulls in those log entries on a regular basis.  Rsyslog8 allows you
to use inotify for file changes, but that's not available to me.

Rsyslog is then also configured to push all logs to my Logstash servers:

# cat /etc/rsyslog.d/logstash.conf 
template(name="ls_json" type="list" option.json="on")
{ constant(value="{")
constant(value="\"@timestamp\":\"") property(name="timegenerated"
dateFormat="rfc3339")
constant(value="\",\"@version\":\"1")
constant(value="\",\"message\":\"") property(name="msg")
constant(value="\",\"host\":\"") property(name="hostname")
constant(value="\",\"my_environment\":\"dev")
constant(value="\",\"my_project\":\"Infrastructure")
constant(value="\",\"my_use\":\"IPA")
constant(value="\",\"logsource\":\"") property(name="fromhost")
constant(value="\",\"severity_label\":\"")
property(name="syslogseverity-text")
constant(value="\",\"severity\":\"") property(name="syslogseverity")
constant(value="\",\"facility_label\":\"")
property(name="syslogfacility-text")
constant(value="\",\"facility\":\"") property(name="syslogfacility")
constant(value="\",\"program\":\"") property(name="programname")
constant(value="\",\"pid\":\"") property(name="procid")
constant(value="\",\"rawmsg\":\"") property(name="rawmsg")
constant(value="\",\"syslogtag\":\"") property(name="syslogtag")
constant(value="\"}\n")
}

*.* @@logstash01.example.com:5500;ls_json
$ActionExecOnlyWhenPreviousIsSuspended on
& @@logstash02.example.com:5500;ls_json
& /var/log/localbuffer
$ActionExecOnlyWhenPreviousIsSuspended off

[root@lvdlvldap02 ~]#

Which pushes all logs to my logstash servers in JSON format.  Failover
is built in by using 2 logstash servers.
The client needs to have SELinux managed to allow rsyslog to write to
port 5500:

# semanage port -a -t syslogd_port_t -p tcp 5500
# semanage port -l | grep 5500

The Logstash servers are then configured to listen on this port and do
some simple groking, before sending everything to the ElasticSearch
cluster:

# cat /etc/logstash/conf.d/syslog.conf 
input {
  tcp {
type => syslogjson
port => 5500
codec => "json"
  }
}

filter {
  # This replaces the host field (UDP source) with the host that
generated the message (sysloghost)
  if [sysloghost] {
mutate {
  replace => [ "host", "%{sysloghost}" ]
  remove_field => "sysloghost" # prune the field after successfully
replacing "host"
}
  }
  if [type] == "syslogjson" {
grok {
  patterns_dir => "/opt/logstash/patterns"
  match => { "message" => "%{VIRGINFW}" }
  match => { "message" => "%{AUDITAVC}" }
  match => { "message" => "%{COMMONAPACHELOG}" }
  tag_on_failure => []
}
  }

  # This filter populates the @timestamp field with the timestamp that's
in the actual message
  # dirsrv logs are currently pulled in every 2 minutes, so @timestamp
is wrong
  if [syslogtag] == "dirsrv" {
mutate {
  remove_field => [ 'rawmsg' ]
}
grok {
  match => [ "message", "%{HTTPDATE:log_timestamp}" ]
}
date {
  match => [ "log_timestamp", "dd/MMM/YYY:HH:mm:ss Z"]
  locale => "en"
  remove_field => [ "log_timestamp" ]
}
  }
}

output {
  elasticsearch {
protocol => node
node_name => "Indexer01"
  }
}
#

It works well for the most part.  I'm not performing any groking of the
actual message line as yet to pull out various bits of data into their
own separate fields, but at least I'm managing to log the access and
errors from multiple IPA servers.

The @timestamp field ends up with the timestamp from the actual message
line, so it's only down to second accuracy.  This means that multiple
log lines on the same second lose their ordering when viewed in the
Logstash/Kibana interface.  But the important thing at this point is
that they're now held centrally.

Is it feasible to alter the timestamp resolution that dirsrv uses?  This
would help separate log lines properly.

Cheers & Merry Festive Holiday thing

Duncan

This message has been checked for viruses and spam by the Virgin Money email 
scanning system powered by Messagelabs.

This e-mail is intended to be confidential to the recipient. If you receive a 
copy in error, please inform the sender and then delete this message.

Virgin Money plc - Registered in England and Wales (Company no. 69523