Добрый вечер. У меня есть стек ELK:
Клиенты с logbeat (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, собирающую информацию, такую как большинство просматриваемых доменов, время, проведенное в Интернете на пользователя, и т. Д. Я прочитал tuts в Интернете и все говорят, что перед отправка файлов в elasticsarch.
Но мне нужна информация, которая уже есть, когда я ищу в обнаружении в kibana. Но отфильтрована из общего индекса logstash *.
Любые огни на этом, я очень ценю это.
Так много всего заранее.
Мои конфигурации ELK следующие:
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
================================================== =======================
Если вы хотите представить журналы 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}"
]
}
}
}
Это позволит вам создать информационную панель, используя terms
смотреть на request
, что даст вам более надежный список наиболее посещаемых сайтов.