2016-11-16 4 views
0

私は以下のlogstashの設定をしています。:理由=>「設定に何か問題があります。」 GeoIP.dat Mutate Logstash

ここには、ここに着陸するすべてのアプリケーションに使用する一般的なものが3つあります。

第二部は、ここで私たちはイベントは、私たちがしたいことがあり、クライアント側で発生したときに、これまで

は、我々が持っている第三は、クリックの統計であるアプリケーション統計を押すように構成され、特定のロガーを持っているアプリケーションの統計ですそれをUPアドレスのログ・スタッシュにプッシュします。

すべて3はudpベースで、log4netを使用してlogstashにログを送信します。

ベースはGeoIP.datファイルを持っていなかったので、インストールしたファイルとフォルダの777人の権限では/ opt/logstash/GeoIPDataFileにファイルを入れているhttps://dev.maxmind.com/geoip/legacy/geolite/

からダウンロードしたファイルを得ました。

私は国名を持っており、各国のユーザー数を示す方法が必要です。過去24時間にアプリケーションを表示しています。

そのような理由から、私たちは国名をアプリケーションのプロファイルにも取り込んでいます。

今、私は地理座標を取得して、キバナでタイルマップを使用する方法が必要です。

私は間違っています。

私がgeoIP {source - => "country"セクションを取ると、logstashは正常に動作します。

私は

/opt/logstash/bin/logstash -t -f /etc/logstash/conf.d/logstash.conf 

設定ファイルはokです確認してください、私が受け取るものです。どこに行くの?

助けがあれば助かります。

input { 
    udp { 
    port => 5001 
    type => generallog 
    } 
    udp { 
    port => 5003 
    type => applicationstats 
    } 
udp { 
    port => 5002 
    type => clickstats 
    } 

} 

filter { 
    if [type] == "generallog" { 

    grok { 
     remove_field => message 
     match => { message => "(?m)%{TIMESTAMP_ISO8601:sourcetimestamp} \[%{NUMBER:threadid}\] %{LOGLEVEL:loglevel} +- %{IPORHOST:requesthost} - %{WORD:applicationname} - %{WORD:envname} - %{GREEDYDATA:logmessage}" } 
     } 
    if !("_grokparsefailure" in [tags]) { 
     mutate { 
     replace => [ "message" , "%{logmessage}" ] 
     replace => [ "host" , "%{requesthost}" ] 
    add_tag => "generalLog" 
     } 
    } 
    } 

    if [type] == "applicationstats" { 
    grok { 
     remove_field => message 
     match => { message => "(?m)%{TIMESTAMP_ISO8601:sourceTimestamp} \[%{NUMBER:threadid}\] %{LOGLEVEL:loglevel} - %{WORD:envName}\|%{IPORHOST:actualHostMachine}\|%{WORD:applicationName}\|%{NUMBER:empId}\|%{WORD:regionCode}\|%{DATA:country}\|%{DATA:applicationName}\|%{NUMBER:staffapplicationId}\|%{WORD:applicationEvent}" } 
     } 

    geoip { 
     source => "country" 
     target => "geoip" 
     database => "/opt/logstash/GeoIPDataFile/GeoIP.dat" 
     add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] 
     add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] 
    } 
    mutate { 
     convert => [ "[geoip][coordinates]", "float"] 
    } 

    if !("_grokparsefailure" in [tags]) { 
     mutate { 
    add_tag => "applicationstats" 
     add_tag => [ "eventFor_%{applicationName}" ] 

     } 
    } 
    } 
    if [type] == "clickstats" { 
    grok { 
     remove_field => message 
     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:domainName}\\%{WORD:userName}" } 
     } 
    if !("_grokparsefailure" in [tags]) { 
     mutate { 
     add_tag => "clicksStats" 
     add_tag => [ "eventFor_%{clickName}" ] 

      } 
     } 
    } 
} 

output { 
if [type] == "applicationstats" { 
    elasticsearch { 
     hosts => "localhost:9200" 
     index => "applicationstats-%{+YYYY-MM-dd}" 
     template => "/opt/logstash/templates/udp-applicationstats.json" 
     template_name => "applicationstats" 
     template_overwrite => true 
      } 
    } 
else if [type] == "clickstats" { 
    elasticsearch { 
     hosts => "localhost:9200" 
     index => "clickstats-%{+YYYY-MM-dd}" 
     template => "/opt/logstash/templates/udp-clickstats.json" 
     template_name => "clickstats" 
     template_overwrite => true 
      } 
    } 

else if [type] == "generallog" { 
    elasticsearch { 
     hosts => "localhost:9200" 
     index => "generallog-%{+YYYY-MM-dd}" 
     template => "/opt/logstash/templates/udp-generallog.json" 
     template_name => "generallog" 
     template_overwrite => true 
      } 
    } 
else{ 
    elasticsearch { 
     hosts => "localhost:9200" 
     index => "logstash-%{+YYYY-MM-dd}" 
     } 
    } 
} 

答えて

0

エラーメッセージごとに、実行しようとしている突然変異が間違っている可能性があります。あなたは以下のようにあなたのmutateを変更してくださいでした:

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

を私はあなたが配列としてmutateを与えてくれたし、それが起源によってhashタイプだと思います。両方の値を個別に変換してみてください。 のgeoipのパスは、あなたのfilterに問題はないようです。それはあなたが質問で言及したエラー全体ですか?可能であれば、エラー全体で質問を更新してください。

hereを参照してください。

+0

これは、/ etcディレクトリのlogstash.logファイルで唯一のエラーです。 –

+0

私が言及した変更を試しましたか? – Kulasangar

+0

はいいいえ運行Kulasangar。同じエラーで失敗するようです。私が望むのは国ごとです。ユーザー数を表示するには円が必要です。 –

関連する問題