2016-07-28 1 views
0

J'utilise logstash 2.3.4métriques de minuterie Logstash ne fonctionne pas

Je reçois qui sont essentiellement lignes journaux apache avec un petit score à la fin (l'apprentissage de la machine à creux calculée, grâce à Spark). Voici ce que une ligne ressemble à:

hackazon.lc:80 192.168.100.133 - - [28/Jul/2016:11:07:46 +0200] "GET/HTTP/1.1" 200 10442 "http://192.168.100.123/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36" pred:0.0859964494393 

Comme vous pouvez le voir la première partie est un journal apache standard et la fin est pred:0.0859964494393.

Les journaux sont traités par ELK pour la visualisation, et je veux également avoir des métriques sur le score appelé pred. Par conséquent, j'ai utilisé l'option timer de metrics. Voici mon fichier de configuration logstash:

input { 
    file { 
     path => '/home/spark/LogStash/*' 
     start_position => "beginning" 
    } 
} 

filter { 
    grok { 
     match => { "message" => "%{COMBINEDAPACHELOG} pred:%{NUMBER:pred_score}"} 
    } 

    if "_grokparsefailure" in [tags] { 
     drop { } 
    } 

    mutate { 
    convert => {"pred_score" => "float"} 
    } 

    geoip { 

     source => "clientip" 
    } 

    metrics { 
     timer => ["pred_score" , "%{duration}"] 
    } 

} 

output { 
# elasticsearch { } 
    stdout { codec => rubydebug } 
# riemann{ 
# map_fields => true 
# } 
} 

Je pensais obtenir une sortie avec la moyenne, hache, etc ... du score pred. Cependant j'ai seulement quelques 0, excepté le compte et les taux.

Voici une des sorties de la minuterie:

{ 
     "@version" => "1", 
    "@timestamp" => "2016-07-28T09:11:39.522Z", 
     "message" => "thamine-OptiPlex-755", 
    "pred_score" => { 
      "count" => 10, 
     "rate_1m" => 0.5533102865966679, 
     "rate_5m" => 1.2937302900528778, 
     "rate_15m" => 1.490591754983121, 
      "min" => 0.0, 
      "max" => 0.0, 
      "stddev" => 0.0, 
      "mean" => 0.0, 
       "p1" => 0.0, 
       "p5" => 0.0, 
      "p10" => 0.0, 
      "p90" => 0.0, 
      "p95" => 0.0, 
      "p99" => 0.0, 
      "p100" => 0.0 
    } 
} 

Savez-vous ce que je fais mal?

Merci d'avance!

Répondre

1

Votre motif de grok semble bon, mais dans votre script logstash %{duration} est inconnu. Ni COMBINEDAPACHELOG ni votre modèle a la variable duration.

Changer la configuration de votre minuterie pour:

timer => ["pred_score" , "%{pred_score}"] 

comme pred_score est la variable dans votre modèle