web-dev-qa-db-ja.com

statsdのニスから仮想ホスト名を正規化する

セットアップ

VarnishからLogstashを使用して統計を収集しています。これはstatsdをインクリメントするように構成されています。 )サーバーログの仮想ホストと結果コードに基づくカウンター。また、カーボングラファイトウィスパーアーカイブを作成しています。

varnishncsaからログを読み取っています。これは、vhostを追加し、標準ログに処理を要求するように構成されています。

VARNISHNCSA_LOG_FORMAT="%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\" %{Host}i %{Varnish:hitmiss}x"

私のlogstashシッパー構成は次のようになります。

input {
  file {
    path => "/var/log/varnish/varnishncsa.log"
    type => varnish
  }
}

filter {
  grok {
    type => varnish
    pattern => "%{COMBINEDAPACHELOG} %{NOTSPACE:vhost} %{Word:varnish_handling}"
    pattern => "%{COMBINEDAPACHELOG}"
  }

  mutate {
    rename => [ 'response', 'status' ]
  }
}

output {
  statsd {
    type => varnish
    Host => "my-statsd-Host"
    port => 8125
    sender => "%{@fields.vhost}"
    increment => "varnish.response.%{@fields.status}"
    increment => "varnish.handling.%{@fields.varnish_handling}"
  }
}

問題

ユーザーのブラウザに入力されたドメインのバリエーションにより、carbonによって何百もの個別のカウンタが作成されています。だから、例えば、私は持っています

www_mywebsite_com
WWW_MyWebsite_Com
www_mywebsite_net    <-- an alias
...etc...

明らかに、これらは私のグラフでは見落とされています。グラフは、仮想ホストの正規名で統計を見るだけです。

私が欲しいのは、いくつかの正規化プロセスが事前に行われることです。 「生の」ドメインを取得して「実際の」仮想ホスト名を吐き出すスクリプトを書くことはできますが、それを統合する方法がわかりません。 logstash config、statsd、またはcarbonに配置しますか? Carbonのストレージアグリゲーション機能で何かできますか?

更新:キャッシュの前でカーボンのアグリゲーターデーモンを実行し、rewrite-rules.confにルールを追加することで、最悪のケースを回避しました。ただし、そのファイルのドキュメントはほとんどなく、すべてを小文字に分解するなど、これ以上強力なことはできません。

1
Flup

ミューテートフィルターを使用してフィールドを小文字にすることができます。

filter {
  mutate {
    lowercase => [ "fieldname" ]
  }
}

Logstash 1.1.13 Docs

乾杯、1月

2
Jan M.