Как фильтр уже собрал информацию в elasticsearch5.2 в Ubuntu 16.04

Добрый вечер. У меня есть следующий стек ELK:

Клиенты с логическим битом (Windows 2003, 2008 2012 и Linux Ubuntu 16.04) logstash (FreeBSD 11.0) elasticsearch5.2 / kibana / nginx 10 (Ubuntu 16.04)

Проблема в том, что при его настройке я создал индекс с именем logstash, следуя руководству, и смешал его с журналами событий Windows, Linux Syslogs и журналами доступа Squid (наиболее важными для менеджеров).

Проблема в том, что мне нужно отображать в журналах Squid визуализации Kibana, собирающую информацию, такую ​​как большинство просматриваемых доменов, время, проведенное в Интернете на пользователя, и т. д. Я читал отзывы в Интернете и все говорят, что должны фильтр с помощью grok в logstash перед отправкой файлов в elasticsarch.

Но мне нужна информация, которая уже есть, когда я ищу в обнаружении в kibana. но отфильтрована из общего индекса logstash *.

Любые источники света, я глубоко признателен.

Заранее спасибо.

Мои конфигурации ELK следующие:

Logstash:

input {

        file {
                type => "syslog"
                # path => [ "/var/log/*.log", "/var/log/messages", "/var/log/syslog" ]
                path => "/var/log/messages"
                start_position => "beginning"
        }


       beats {

               port => 5044
       }




}

filter {
# An filter may change the regular expression used to match a record or a field,
# alter the value of parsed fields, add or remove fields, etc.
#
#       if [type] == "syslog" {
#               grok {
#                       match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} (%{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}|%{GREEDYDATA:
syslog_message})" }
#                       add_field => [ "received_at", "%{@timestamp}" ]
#                       add_field => [ "received_from", "%{@source_host}" ]
#               }
#
#               if !("_grokparsefailure" in [tags]) {
#                       mutate {
#                               replace => [ "@source_host", "%{syslog_hostname}" ]
#                               replace => [ "@message", "%{syslog_message}" ]
#                       }
#               }
#               mutate {
#                       remove_field => [ "syslog_hostname", "syslog_message" ]
#               }
#               date {
#                       match => [ "syslog_timestamp","MMM  d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601" ]
#               }
#               syslog_pri { }
#       }
}

output {
        # Emit events to stdout for easy debugging of what is going through
        # logstash.
        # stdout { codec => rubydebug }

        # This will use elasticsearch to store your logs.
        elasticsearch {
                        hosts => [ "172.19.160.24:9200" ]
                       # manage_template => false
                       # index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
                       # document_type => "%{[@metadata][type]}"manage_template => false
                      }
       }

=============================================== ========================

Кибана:

================== ================================================== ===

server.port: 5601
server.host: "127.0.0.1"
server.name: "kibana-xxxxxx"
elasticsearch.url: "http://172.19.160.24:9200"
elasticsearch.preserveHost: true
kibana.index: ".kibana"
kibana.defaultAppId: "discover

============================================== =========================== Elasticseacrch:

============================================= ==========================

cluster.name: dnc-srv-logcollector
node.name: node-1-sm
node.attr.rack: r1
network.host: 172.19.160.24
http.port: 9200
index.codec: best_compression

===================== ================================================== ==

0
задан 7 April 2017 в 03:34
1 ответ

Если вы хотите представить журналы Squid, вам повезло, так как они используют logstash.

file {
  path => [ '/var/log/squid/access.log' ]
  type => "squid"
}

Это позволяет вам создавать информационные панели с

type:"squid"

в качестве одного из поисковые запросы, которые будут фильтровать все до журналов Squid.

Но это только начало. Вы можете упростить поиск за счет более прямого индексирования записей Squid. Один из стилей вывода журнала squid имитирует стиль журнала доступа Apache. Таким образом, вы можете использовать блок filter {} .

if [type] == 'squid {
  grok {
    match => {
      message => [
        "%{IPORHOST:clientip} %{HTTPDUSER:ident} %{HTTPDUSER:auth} \[%{NUMBER:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{WORD:squid_result}"
      ]
    }
  }
}

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

0
ответ дан 5 December 2019 в 08:22

Теги

Похожие вопросы