:reason =>"您的配置出了问题。" GeoIP.dat Mutate Logstash

时间:2016-11-16 09:52:39

标签: elasticsearch logstash kibana

我有logstash的以下配置。 这一部分有三个部分是我们用于它们在这里所有应用程序的通用日志。 第二部分是应用程序统计信息,其中我们有一个特定的记录器,它将被配置为推送应用程序统计信息 第三,我们有客户端事件发生时的点击统计信息,我们可能希望将其推送到更新地址的logstash。 所有3个都是基于udp的,我们还使用log4net将日志发送到logstash。 基本安装没有GeoIP.dat文件,因此从https://dev.maxmind.com/geoip/legacy/geolite/下载了文件 已将文件放在/ opt / logstash / GeoIPDataFile中,对文件和文件夹具有777权限。 第二件事是我有一个国家名称,我需要一种方式来显示每个国家/地区有多少用户在过去24小时内查看该应用程序。 因此,我们还会在应用程序的配置文件中捕获国家/地区名称。 现在我需要一种方法来让地理坐标在kibana中使用tilemap。 我究竟做错了什么。 如果我采取geoIP {source - => "国家" logstash部分工作正常。 当我检查 / opt / logstash / bin / logstash -t -f /etc/logstash/conf.d/logstash.conf 我收到的配置文件是好的。我要去哪里? 任何帮助都会很棒。    输入{   udp {     port => 5001     type => generallog   }   udp {     port => 5003     type => applicationstats   }  udp {     port => 5002     type => clickstats   } } 过滤器{   if [type] ==" generallog" {   grok {       remove_field =>信息       match => {message => "(?m)%{TIMESTAMP_ISO8601:sourcetimestamp} \ [%{NUMBER:threadid} \]%{LOGLEVEL:loglevel} + - %{IPORHOST:requesthost} - %{WORD:applicationname} - %{WORD: envname} - %{GREEDYDATA:logmessage}" }       }     if!(" _grokparsefailure" in [tags]){       变异{         replace => ["消息" ,"%{logmessage}" ]         replace => ["主持人" ,"%{requesthost}" ]     add_tag => " generalLog"       }      }   }   if [type] ==" applicationstats" {     grok {       remove_field =>信息       match => {message => "(?m)%{TIMESTAMP_ISO8601:sourceTimestamp} \ [%{NUMBER:threadid} \]%{LOGLEVEL:loglevel} - %{WORD:envName} \ |%{IPORHOST:actualHostMachine} \ |%{WORD :的applicationName} \ |%{NUMBER:EMPID} \ |%{WORD:regionCode} \ |%{DATA:国家} \ |%{DATA:applicationName的} \ |%{NUMBER:staffapplicationId} \ |%{WORD:了ApplicationEvent }" }       }      geoip {       source => "国家"       target => " geoip的"       database => " /opt/logstash/GeoIPDataFile/GeoIP.dat"       add_field => [" [geoip] [coordinates]","%{[geoip] [经度]}" ]       add_field => [" [geoip] [coordinates]","%{[geoip] [latitude]}" ]     }     变异{       convert => [" [geoip] [coordinates]"," float"]     }     if!(" _grokparsefailure" in [tags]){       变异{     add_tag => " applicationstats"         add_tag => [" eventFor _%{applicationName}" ]       }      }    }   if [type] ==" clickstats" {     grok {       remove_field =>信息       match => {message => "(?m)%{TIMESTAMP_ISO8601:sourceTimestamp} \ [%{NUMBER:threadid} \]%{LOGLEVEL:loglevel} - %{IPORHOST:remoteIP} \ |%{IPORHOST:fqdnHost} \ |%{IPORHOST :actualHostMachine} \ |%{WORD:applicationName的} \ |%{WORD:ENVNAME} \ |(%{NUMBER:clickId的})\ |(%{DATA:clickName})?\ |%{DATA:clickEvent} \ |%{WORD:域名} \\%{WORD:用户名}" }       }     if!(" _grokparsefailure" in [tags]){       变异{         add_tag => " clicksStats"         add_tag => [" eventFor _%{clickName}" ]           }        }    } } 输出{ if [type] ==" applicationstats" {     elasticsearch {        hosts => "本地主机:9200"        index => " applicationstats - %{+ YYYY-MM-DD}"        template => " /opt/logstash/templates/udp-applicationstats.json"        template_name => " applicationstats"        template_overwrite =>真正           }   } 否则如果[type] ==" clickstats" {     elasticsearch {        hosts => "本地主机:9200"        index => " clickstats - %{+ YYYY-MM-DD}"        template => " /opt/logstash/templates/udp-clickstats.json"        template_name => " clickstats"        template_overwrite =>真正           }   } 如果[type] ==" generallog" {     elasticsearch {        hosts => "本地主机:9200"        index => " generallog - %{+ YYYY-MM-DD}"        template => " /opt/logstash/templates/udp-generallog.json"        template_name => " generallog"        template_overwrite =>真正           }   } 其他{     elasticsearch {        hosts => "本地主机:9200"        index => " logstash - %{+ YYYY-MM-DD}"         }    } }

1 个答案:

答案 0 :(得分:0)

根据错误消息,您尝试做的突变可能是错误的。您可以更改mutate,如下所示:

    mutate {
        convert => { "geoip" => "float" }
        convert => { "coordinates" => "float" }
      }

我猜您已将mutate作为数组,并且它是hash类型的原点。尝试单独转换这两个值。您database的{​​{1}} geoip路径似乎没问题。这是你在问题中提到的整个错误吗?如果可能的话,如果没有用整个错误更新问题。

有关详细说明,请参阅here