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
にルールを追加することで、最悪のケースを回避しました。ただし、そのファイルのドキュメントはほとんどなく、すべてを小文字に分解するなど、これ以上強力なことはできません。
ミューテートフィルターを使用してフィールドを小文字にすることができます。
filter {
mutate {
lowercase => [ "fieldname" ]
}
}
乾杯、1月