2 votes

Graphite trace les incréments de Logstash en flottant.

J'essayais d'imiter ceci logstash.net/docs/1.1.0/tutorials/metrics-from-logs

J'ai la configuration suivante

nginx(app server) ==envoie l'incrément==>Etsy statsD=====>Graphite

Cette configuration fonctionne bien puisque le graphique est tracé correctement, mais pas de façon correcte. D'après la configuration ci-dessus, je comprends que la valeur de l'étape du graphique doit être un nombre entier, mais j'obtiens des nombres à virgule flottante sur l'axe Y (occurrences), comme le montre le graphique ci-joint, et je ne sais pas du tout comment interpréter ce graphique.

Configuration de l'agent Logstash

input {
  file {
    type => nginx_web
    path => ["/var/log/nginx/access.log"]
  }

filter {
 grok {
   type => nginx_web
   pattern => "%{IP:ClientIP} (?:%{HOST:ClientHost}|-) (?:%{USER:ClientUser}|-) \[%{GREEDYDATA:TimeStamp}\] \"(?:%{WORD:Verb} %{URIPATHPARAM:Request} HTTP/%{NUMBER:HTTPversion}|%{DATA:UnparsedRQ})\" %{NUMBER:Response} (?:%{NUMBER:Bytes}|0) (?:%{QUOTEDSTRING:HTTPReferrer|\"-\"}) %{QUOTEDSTRING:HTTPUserAgent}"
 }

output {

 statsd {
        type => "nginx_web"
        host => "X.X.X.X"
        increment => [
                        "nginx.response.%{Response}"
                     ]
    }
}

J'utilise l'API URL suivante pour générer ce graphique

render/?width=600&height=320&hideLegend=1&from=-60minutes&until=-0minutes&target=stats.logstash.*.nginx_web.response.*

enter image description here

Quelqu'un peut-il m'indiquer où aller pour résoudre mon problème ?

1voto

mike Points 1

Comme il s'agit d'une vieille question (au moment de cette réponse), je la pose ici à titre de référence pour quiconque se pose la même question.

Le livre de recettes de Logstash contient une entrée permettant de comprendre Graphite et la manière dont les données sont agrégées. Voir l'article aquí

Si vous utilisez une version plus récente de logstash, vous disposerez de l'option suivante statsd_count qui vous donnera le nombre d'incréments que Graphite a reçu, au lieu d'en faire la moyenne sur 10 secondes pour vous.

Selon le livre de recettes de logstash entrée En supposant que vous ayez 3 200 réponses dans un délai de 10 secondes, statsd produira quelque chose de semblable :

stats.logstash.101010_1.apache.site1.response.200 = 3 / 10 = 0.3 (number of responses with status 200 per second)

Cependant, dans le statsd_count vous verrez quelque chose du genre : stats_count.logstash.101010_1.apache.site1.response.200 = 3 (we have received 3 times status 200 for our period of 10 seconds)

0voto

DukeLion Points 3209

Les valeurs sur votre graphique ne sont pas entières, puisqu'il s'agit de valeurs moyennes.

statsd stocke les valeurs entières du compteur de réponse pour montrer un point sur le graphique, il réduit la valeur antérieure du compteur de la valeur postérieure et la divise par le temps du pas. (Compteur(t)-compteur(t-pas))/pas.

0 votes

Alors comment puis-je dessiner le graphique (comme ci-dessus) qui a du sens ?

0 votes

Le graphique basé sur le message du journal n'aura pas beaucoup de sens de toute façon, en raison de la mise en mémoire tampon du journal. Écrivez un plugin pour statsd qui récupère les valeurs du module stub_status de nginx, ou utilisez nginx-statsd

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X