День/вечер/ночь/утро, добрый!
Буду признателен, если сможете направить на путь истинный.
Настроил ELK+Kibana+Logstash
При этом ELK в кластере, отдельно стоит Kibana c ролью ELK Coordinating only, так же на этом же сервере стоит Logstah
Настроил базовый функционал по защите (логин / пароль), плюс настрорил авторизацию по сертам который описан в доке.
Настроил API key, для сбора Logstah.
При сборе логов с самого logstash проблем нет, они собираются, пытаюсь запихнуть файлы input output И filter, ловлю проблему, что ни чего не падает в индекс.
Лог logstash-plain
[2021-06-07T21:34:21,537][INFO ][logstash.outputs.elasticsearch][main] Using a default mapping template {:es_version=>7, :ecs_compatibility=>:disabled}
[2021-06-07T21:34:21,544][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[ ссылка удалена , ссылка удалена , ссылка удалена ]}}
[2021-06-07T21:34:21,579][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:21,585][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch version determined (7.13.1) {:es_version=>7}
[2021-06-07T21:34:21,585][WARN ][logstash.outputs.elasticsearch][main] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7}
[2021-06-07T21:34:21,663][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:21,745][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:21,796][INFO ][logstash.outputs.elasticsearch][main] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>[" ссылка удалена ", " ссылка удалена ", " ссылка удалена "]}
[2021-06-07T21:34:21,805][INFO ][logstash.outputs.elasticsearch][main] Using a default mapping template {:es_version=>7, :ecs_compatibility=>:disabled}
[2021-06-07T21:34:21,868][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[ ссылка удалена , ссылка удалена , ссылка удалена ]}}
[2021-06-07T21:34:21,908][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:21,914][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch version determined (7.13.1) {:es_version=>7}
[2021-06-07T21:34:21,915][WARN ][logstash.outputs.elasticsearch][main] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7}
[2021-06-07T21:34:22,009][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:22,084][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:22,140][INFO ][logstash.outputs.elasticsearch][main] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>[" ссылка удалена ", " ссылка удалена ", " ссылка удалена "]}
[2021-06-07T21:34:22,151][INFO ][logstash.outputs.elasticsearch][main] Using a default mapping template {:es_version=>7, :ecs_compatibility=>:disabled}
[2021-06-07T21:34:22,155][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[ ссылка удалена , ссылка удалена , ссылка удалена ]}}
[2021-06-07T21:34:22,243][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:22,259][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch version determined (7.13.1) {:es_version=>7}
[2021-06-07T21:34:22,259][WARN ][logstash.outputs.elasticsearch][main] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7}
[2021-06-07T21:34:22,336][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:22,411][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:22,464][INFO ][logstash.outputs.elasticsearch][main] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>[" ссылка удалена ", " ссылка удалена ", " ссылка удалена "]}
[2021-06-07T21:34:22,475][INFO ][logstash.outputs.elasticsearch][main] Using a default mapping template {:es_version=>7, :ecs_compatibility=>:disabled}
[2021-06-07T21:34:22,483][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[ ссылка удалена , ссылка удалена , ссылка удалена ]}}
[2021-06-07T21:34:22,517][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:22,523][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch version determined (7.13.1) {:es_version=>7}
[2021-06-07T21:34:22,524][WARN ][logstash.outputs.elasticsearch][main] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7}
[2021-06-07T21:34:22,608][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:22,688][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:22,737][INFO ][logstash.outputs.elasticsearch][main] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>[" ссылка удалена ", " ссылка удалена ", " ссылка удалена "]}
[2021-06-07T21:34:22,756][INFO ][logstash.outputs.elasticsearch][main] Using a default mapping template {:es_version=>7, :ecs_compatibility=>:disabled}
[2021-06-07T21:34:22,767][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[ ссылка удалена , ссылка удалена , ссылка удалена ]}}
[2021-06-07T21:34:22,913][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:22,919][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch version determined (7.13.1) {:es_version=>7}
[2021-06-07T21:34:22,920][WARN ][logstash.outputs.elasticsearch][main] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7}
[2021-06-07T21:34:23,053][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:23,172][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>" ссылка удалена "}
[2021-06-07T21:34:23,227][INFO ][logstash.outputs.elasticsearch][main] Using a default mapping template {:es_version=>7, :ecs_compatibility=>:disabled}
[2021-06-07T21:34:24,084][INFO ][logstash.javapipeline ][main] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>8, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>1000, "pipeline.sources"=>[" ссылка удалена ", " ссылка удалена ", " ссылка удалена "], :thread=>"#<Thread:0x3c9ac27b run>"}
[2021-06-07T21:34:27,682][INFO ][logstash.javapipeline ][main] Pipeline Java execution initialization time {"seconds"=>3.59}
[2021-06-07T21:34:27,810][INFO ][logstash.inputs.beats ][main] Starting input listener {:address=>"0.0.0.0:5044"}
[2021-06-07T21:34:27,842][INFO ][logstash.javapipeline ][main] Pipeline started {"pipeline.id"=>"main"}
[2021-06-07T21:34:27,921][INFO ][logstash.inputs.syslog ][main][2c584cbbadc06cca794731231fa558c2fee2546713ab8f162d7962fa3eb1a938] Starting syslog tcp listener {:address=>"0.0.0.0:5045"}
[2021-06-07T21:34:27,954][INFO ][logstash.inputs.syslog ][main][2c584cbbadc06cca794731231fa558c2fee2546713ab8f162d7962fa3eb1a938] Starting syslog udp listener {:address=>"0.0.0.0:5045"}
[2021-06-07T21:34:28,049][INFO ][org.logstash.beats.Server][main][b045a75a45b3461b60d26b83a47471747f20d6c245290a8708d6386bd67397cb] Starting server on port: 5044
[2021-06-07T21:34:28,062][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
Вот кусок output.conf
else if [type] == "zabbix_secure" {
elasticsearch {
hosts => [" ссылка удалена "," ссылка удалена "," ссылка удалена "]
index => "zabbix-secur-%{+YYYY.MM.dd}"
ssl => true
api_key => "${API_KEY}"
cacert => ' ссылка удалена '
}
}
else if [type] == "nginx_access" {
elasticsearch {
hosts => [" ссылка удалена "," ссылка удалена "," ссылка удалена "]
index => "nginx-%{+YYYY.MM.dd}"
ssl => true
api_key => "${API_KEY}"
cacert => ' ссылка удалена '
}
}
else if [type] == "nginx_error" {
elasticsearch {
hosts => [" ссылка удалена "," ссылка удалена "," ссылка удалена "]
index => "nginx-%{+YYYY.MM.dd}"
ssl => true
api_key => "${API_KEY}"
cacert => ' ссылка удалена '
}
}
else if "winsrv" in [tags] {
elasticsearch {
hosts => [" ссылка удалена "," ссылка удалена "," ссылка удалена "]
index => "winsrv-%{+YYYY.MM.dd}"
ssl => true
api_key => "${API_KEY}"
cacert => ' ссылка удалена '
}
}
else if "win1CSRV" in [tags] {
elasticsearch {
hosts => [" ссылка удалена "," ссылка удалена "," ссылка удалена "]
index => "win1CSRV-%{+YYYY.MM.dd}"
ssl => true
api_key => "${API_KEY}"
cacert => ' ссылка удалена '
И соответсвенно filter.conf
else if [type] == "zabbix_secure" {
grok {
match => { "message" => "%{IPORHOST:remote_ip} - %{DATA:user} \[%{HTTPDATE:access_time}\] \"%{WORD:http_method} %{DATA:url} HTTP/%{NUMBER:http_version}\" %{NUMBER:response_code} %{NUMBER:body_sent_bytes} \"%{DATA:referrer}\" \"%{DATA:agent}\"" }
}
}
else if [type] == "zabbix_agent" {
grok {
match => { "message" => "%{IPORHOST:remote_ip} - %{DATA:user} \[%{HTTPDATE:access_time}\] \"%{WORD:http_method} %{DATA:url} HTTP/%{NUMBER:http_version}\" %{NUMBER:response_code} %{NUMBER:body_sent_bytes} \"%{DATA:referrer}\" \"%{DATA:agent}\"" }
}
}
else if [type] == "zabbix_server" {
grok {
match => { "message" => "%{IPORHOST:remote_ip} - %{DATA:user} \[%{HTTPDATE:access_time}\] \"%{WORD:http_method} %{DATA:url} HTTP/%{NUMBER:http_version}\" %{NUMBER:response_code} %{NUMBER:body_sent_bytes} \"%{DATA:referrer}\" \"%{DATA:agent}\"" }
}
}
else if [type] == "winsrv" {
grok {
match => { "message" => "%{IPORHOST:remote_ip} - %{DATA:user} \[%{HTTPDATE:access_time}\] \"%{WORD:http_method} %{DATA:url} HTTP/%{NUMBER:http_version}\" %{NUMBER:response_code} %{NUMBER:body_sent_bytes} \"%{DATA:referrer}\" \"%{DATA:agent}\"" }
}
}
date {
match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
}
else if [type] == "win1CSRV" {
grok {
match => { "message" => "%{IPORHOST:remote_ip} - %{DATA:user} \[%{HTTPDATA:access_time}\] \"%{WORD:http_method} %{DATA:url} HTTP/%{NUMBER:http_version}\" %{NUMBER:response_code} %{NUMBER:body_sent_bytes} \"%{DATA:referrer}\" \"%{DATA:agent}\"" }
}
}
date {
match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
}
}
Данных очень много, которые надо собирать и раскладывать по полочкам, так как для отдельных людей есть отдельные доступы.
Вероятнее всего, что я само лично где-то накосячил, но к сожалению, пока не вижу где.
На вопрос, почему Апи ключами прописано? ответ простой, с ними проше, чем с логином и пролем.
Server Admin Авторский блог системного администратора