Fluentd Elasticsearch Kibana logs динамический индекс отображения GEOPOINT
Я использую стек журналов EFK, и мне удалось настроить фильтр fluentd и сопоставить конфигурации так, чтобы журналы доступа tomcat собирали в Кибане все необходимые поля: IP, широта, долгота, город, код страны и т. Д.
я имею curl -XPUT -H "Content-Type: application/json" --data @fluentd_mapping.json http://$host/fluentd/fluentd/_mapping
но это влияет только на индекс fluentd. Не динамически создаваемый индекс ежедневного журнала <foo>.access.logs.*
Поэтому мой вопрос заключается в том, как применить сопоставление, чтобы тип geo_point был эффективен для индекса ежедневного журнала? Благодарю.
Я перезапустил контейнер ES, curl -XPUT
следующий файл mapping.json, который выбирается по индексу fluentd, но не по индексу ежедневного журнала:
{
"fluentd": {
"location_array": {
"type": "geo_point"
},
"location_properties": {
"type": "geo_point"
},
"location_string": {
"type": "geo_point"
},
}
}
Существующие шаблоны:
"dynamic_templates": [{
"kibana_index_template:.kibana": {
"dynamic_templates": [{
"security-index-template": {
"dynamic_templates": [{
"path_match": "result\\.(input(\\..+)*|(transform(\\..+)*)|(actions\\.transform(\\..+)*))\\.search\\.request\\.(body|template)",
"logstash-index-template": {
Существующие шаблоны индекса:
"index_patterns": [".monitoring-logstash-6-*"],
"index_patterns": [".monitoring-kibana-6-*"],
"index_patterns": [".ml-anomalies-*"],
"index_patterns": [".kibana"],
"index_patterns": [".ml-state"],
"index_patterns": [".watches*"],
"index_patterns": [".monitoring-beats-6-*"],
"index_patterns": [".monitoring-es-6-*"],
"index_patterns": [".security_audit_log*"],
"index_patterns": [".ml-meta"],
"index_patterns": [".security-*"],
"index_patterns": [".triggered_watches*"],
"index_patterns": [".watcher-history-9*"],
"index_patterns": [".monitoring-alerts-6"],
"index_patterns": [".ml-notifications"],
"index_patterns": [".logstash"],
Я добавил следующий шаблон, но безрезультатно:
"fluentd": {
"order": 0,
"index_patterns": ["myapp.access.logs*"],
"settings": {},
"mappings": {
"fluentd": {
"properties": {
"location_array": {
"type": "geo_point"
},
"location_properties": {
"type": "geo_point"
},
"location_string": {
"type": "geo_point"
}
}
}
},
"aliases": {}
},
Это не подхвачено myapp.access.logs-
1 ответ
Пожалуйста, для ясности укажите содержимое файла fluentd_mapping.json, но похоже, что индексы имеют разные шаблоны имен, и именно поэтому отображение не применяется ко всем индексам.
Вы должны использовать шаблон asticsearch для настройки отображения geoip. в шаблоне взгляните на "index_patterns", которые описывают условие соответствия индексов. https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html
как только регулярное выражение index_patterns совпадет со всеми нужными вам индексами (включая индекс журналов доступа), тогда отображение GEOIP и все остальные будут применены, как и ожидалось.