Fluentd Elasticsearch Kibana记录动态索引GEOPOINT映射

时间:2019-02-11 06:11:08

标签: elasticsearch kibana fluentd geopoints

我正在使用EFK日志堆栈,并设法设置了流利的过滤器和匹配配置,以便在Kibana中收集的tomcat访问日志中存在所有必填字段:IP,纬度,经度,城市,国家/地区代码等

我有curl -XPUT -H "Content-Type: application/json" --data @fluentd_mapping.json http://$host/fluentd/fluentd/_mapping,但它只影响流利的索引。不是动态创建的每日日志索引<foo>.access.logs.*

所以我的问题是如何应用映射,以便geo_point类型对每日日志索引有效?谢谢。

我重新启动了ES容器curl -XPUT,下面的mapping.json由流利的索引而不是每日日志索引获取:

{
    "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 个答案:

答案 0 :(得分:1)

为清楚起见,请指定fluentd_mapping.json的内容,但索引似乎具有不同的名称模式,这就是映射未应用于所有索引的原因。

您应该使用elasticsearch模板来配置geoip映射。在模板中,查看描述索引匹配条件的“ index_patterns”。 https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html

一旦index_patterns正则表达式将匹配您需要的所有索引(包括访问日志索引),然后进行GEOIP映射,其余所有将按预期应用。