отправка данных из logtsash в эластичный поиск - PullRequest
0 голосов
/ 12 октября 2019

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

input{
  file{
    path =>"C:\Elastic\GOOG.csv"
    start_position =>"beginning"
  }
}

filter{
  csv{
    columns => 
    ["date_of_record","open","high","low","close","volume","adj_close"]
    separator => ","
  }
  date {
    match => ["date_of_record","yyyy-MM-dd"]
  }
  mutate {
    convert => ["open","float"]
    convert => ["high","float"]
    convert => ["low","float"]
    convert => ["close","float"]
    convert => ["volume","integer"]
    convert => ["adj_close","float"]
  }
}

output{
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "CSVGOGO"
  }
}

Logstash Журналы:

c:\Elastic>.\logstash-7.0.0\bin\logstash -f .\gogo.conf
        Sending Logstash logs to c:/Elastic/logstash-7.0.0/logs which is now configured via log4j2.properties
        [2019-10-12T20:13:24,602][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
        [2019-10-12T20:13:24,831][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"7.0.0"}
        [2019-10-12T20:14:42,358][INFO ][logstash.outputs.elasticsearch] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://localhost:9200/]}}
        [2019-10-12T20:14:43,392][WARN ][logstash.outputs.elasticsearch] Restored connection to ES instance {:url=>"http://localhost:9200/"}
        [2019-10-12T20:14:43,868][INFO ][logstash.outputs.elasticsearch] ES Output version determined {:es_version=>7}
        [2019-10-12T20:14:43,882][WARN ][logstash.outputs.elasticsearch] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7}
        [2019-10-12T20:14:43,961][INFO ][logstash.outputs.elasticsearch] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["//localhost:9200"]}
        [2019-10-12T20:14:43,971][INFO ][logstash.outputs.elasticsearch] Using default mapping template
        [2019-10-12T20:14:44,124][INFO ][logstash.javapipeline    ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>500, :thread=>"#<Thread:0x22517e24 run>"}
        [2019-10-12T20:14:44,604][INFO ][logstash.outputs.elasticsearch] Attempting to install template {:manage_template=>{"index_patterns"=>"logstash-*", "version"=>60001, "settings"=>{"index.refresh_interval"=>"5s", "number_of_shards"=>1, "index.lifecycle.name"=>"logstash-policy", "index.lifecycle.rollover_alias"=>"logstash"}, "mappings"=>{"dynamic_templates"=>[{"message_field"=>{"path_match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false, "fields"=>{"keyword"=>{"type"=>"keyword", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date"}, "@version"=>{"type"=>"keyword"}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"half_float"}, "longitude"=>{"type"=>"half_float"}}}}}}}
        [2019-10-12T20:14:48,863][INFO ][logstash.inputs.file     ] No sincedb_path set, generating one based on the "path" setting {:sincedb_path=>"c:/Elastic/logstash-7.0.0/data/plugins/inputs/file/.sincedb_1eb0c3bd994c60a8564bc344e0f91452", :path=>["C:\\Elastic\\GOOG.csv"]}
        [2019-10-12T20:14:48,976][INFO ][logstash.javapipeline    ] Pipeline started {"pipeline.id"=>"main"}
        [2019-10-12T20:14:49,319][INFO ][filewatch.observingtail  ] START, creating Discoverer, Watch with file and sincedb collections
        [2019-10-12T20:14:49,331][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
        [2019-10-12T20:14:52,244][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Для ELK-стека - для проверки, передаются ли данные в ES и установлена ​​ли кибана, выполните следующую процедуру

Объяснение ->

1.option - Добавить стандартный вывод в конвейер logstash, чтобы показать, что происходит.

stdout { codec => rubydebug }

2.mandatory - Добавить sincedb_path => "/ dev /null "в конвейере ввода / файла. Logstash имеет интересный компонент или функцию, называемую sincedb. Logstash отслеживает, где он последний раз читал файл перед тем, как он упал или остановился.

3. Обязательное - имя индекса должно быть в нижнем регистре (csvgogo)

4.опционально / обязательно - document_type => "csvfile", есливы не добавите, тогда по умолчанию будет 'logs'

Таким образом, ваш конвейер вывода logstash может выглядеть следующим образом: -

input{
  file{
    path =>"C:\Elastic\GOOG.csv"
    start_position =>"beginning"
    sincedb_path => "/dev/null"
  }
}

filter{
  csv{
    columns => ["date_of_record","open","high","low","close","volume","adj_close"]
    separator => ","
  }
  date {
    match => ["date_of_record","yyyy-MM-dd"]
  }
  mutate {
    convert => ["open","float"]
    convert => ["high","float"]
    convert => ["low","float"]
    convert => ["close","float"]
    convert => ["volume","integer"]
    convert => ["adj_close","float"]
  }
}
output{
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "csvgogo"
    document_type => "csvfile"  #default 'logs'
  }
}

1.try с помощью инструмента разработчика kibana ('http://localhost:5601/app/kibana') опция для запуска запроса-

GET /csvgogo/_search
{
  "query": {
    "match_all": {}
  }
}

2.try с браузером Chrome- 'http://localhost:9200/csvgogo/_search?pretty' где' csvgogo '- это имя вашего индекса ES, которое покажет вам необработанные данные в самом браузереиз упругого поиска.

0 голосов
/ 13 октября 2019

Данные будут передаваться в ES, только если поток данных проходил через считыватель и процессор правильно.

Ввод: попытайтесь убедиться, что файл правильно прочитан фильтром ввода. Фильтр: попробуйте написать процессор ruby, который печатает, какие данные, если получены от ввода. Вывод: Выведите вывод в консоль, чтобы убедиться, что он соответствует вашим ожиданиям.

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

...