Конфигурирование Logstash после установки

Note

Предполагается что установка осуществлялась в соответствии с базовым руководством производителя.

Изменения вносятся в единственный файл /etc/logstash/conf.d/base.conf:

  • Секция input:
1
2
3
4
5
6
7
input {
  beats {
    type=> "fromFileBeat"
    port => 5044 # Либо любой желаемый порт
    client_inactivity_timeout => 360
  }
}
  • Секция filter:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
filter {
  if [fields][log_type] == "robot" {
    grok {
      match => {
        "message" => "%{TIMESTAMP_ISO8601:syslog_timestamp}%{SPACE}%{WORD:syslog_level}%{SPACE}%{HOSTNAME:syslog_hostname}%{SPACE}%{NOTSPACE:syslog_source}%{SPACE}%{NOTSPACE:syslog_pid}%{SPACE}%{GREEDYDATA:json_part}"
      }
    }    
    mutate {
      add_field => {
        "[robot_log][message]" => "%{message}"	
        "[robot_log][creation_date_time]" => "%{syslog_timestamp}"
        "[robot_log][level]" => "%{syslog_level}"
        "[robot_log][hostname]" => "%{syslog_hostname}"
        "[robot_log][source]" => "%{syslog_source}"
        "[robot_log][pid]" => "%{syslog_pid}"
      }
    }
    json {
      source => "json_part"
      target => "[robot_log][json]"
    }
    mutate {
      remove_field => ["syslog_timestamp","syslog_level","syslog_hostname","syslog_source","syslog_pid","message","json_part"]
    }
  }
  if [fields][log_type] == "application" {
    grok{
      match => {
        "message" => "%{CISCOTIMESTAMP:timestamp}%{SPACE}%{HOSTNAME:hostname}%{SPACE}%{NOTSPACE:debug_level}%{SPACE}%{GREEDYDATA:json_part}"
      }
    }
    json{
      source => "json_part"
      target => "json_payload"
    }
    mutate {
      remove_field => ["json_part","message"]
      gsub => ["debug_level","<",""]
      gsub => ["debug_level",">",""]
    }
  }
}
  • Секция output:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
output {
  if [fields][log_type] == "robot" {
    elasticsearch {
      hosts => ["<указываем IP:порт или fqdn:порт elastic>"]
      index => "robot-logs-%{+YYYY.MM.dd}"
    }
  }
  if [fields][log_type] == "application" {
    elasticsearch {
      hosts => ["<указываем IP:порт или fqdn:порт elastic>"]
      index => "application-logs-%{+YYYY.MM.dd}"
    }
  }
}

Note

В зависимости от режима развертывания в секции hosts указывается либо ip/fqdn:port сервера elastic либо входная точка координатора кластера