День/вечер/ночь/утро, добрый!
Буду признателен, если сможете направить на путь истинный.
Настроил 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" ] } }
Данных очень много, которые надо собирать и раскладывать по полочкам, так как для отдельных людей есть отдельные доступы.
Вероятнее всего, что я само лично где-то накосячил, но к сожалению, пока не вижу где.
На вопрос, почему Апи ключами прописано? ответ простой, с ними проше, чем с логином и пролем.