20141220 clrh etw

24

Upload: -

Post on 16-Jul-2015

814 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: 20141220 clrh etw
Page 3: 20141220 clrh etw

Webサーバーのバックエンドで動くサービスの監視をしたい

• 障害時の調査用のログ• パフォーマンス監視用の数値

Page 4: 20141220 clrh etw

ログ転送用のサービス• 転送先はGoogle BigQuery

• SLAB (Semantic Logging Application Block) を利用

• Out-of-Process モードでw3wpとは独立

• いわゆるWindowsサービスとして稼働

Page 5: 20141220 clrh etw

- SQL like な問い合わせ (敷居低い)C#er には LINQ to BigQuery

- 高速フルスキャン (レベルを上げて物理で殴る)「1TB のデータを1秒でフルスキャンしたいなら、

5000台のディスクを並列スキャンしたらいいじゃない」

- ほぼリアルタイムなStreaming Insert

Page 6: 20141220 clrh etw

SLABPatterns & Practices 提供のライブラリ

ETWを利用した高速なログ収集・転送機能

構造化ロギング

他に選択肢ないの…?Fluetnd はWindowsなので

logstash とかあるにはあるけど… (.NETがいい)

Page 7: 20141220 clrh etw

AWS CloudWatch SDK

ETW with Channel + パフォーマンスカウンタ

Page 8: 20141220 clrh etw
Page 9: 20141220 clrh etw
Page 10: 20141220 clrh etw
Page 11: 20141220 clrh etw
Page 12: 20141220 clrh etw

http://blogs.msdn.com/b/jpwdkblog/archive/2011/12/27/event-tracing-for-windows-etw.aspx

Page 13: 20141220 clrh etw

EventSoource

http://tech.tanaka733.net/entry/debugging-IIS-Custom-Http-Module-with-EventSource

[Event(1, Level = EventLevel.Informational,Message = "Debug: {0}", Version = 1)]

public void Debug(string message){

WriteEvent(1, message);}

Page 14: 20141220 clrh etw
Page 15: 20141220 clrh etw

Microsoft.Diagnostics.Tracing.EventSource

http://aerie.hatenablog.jp/entry/2014/09/09/165448

Page 16: 20141220 clrh etw
Page 17: 20141220 clrh etw
Page 18: 20141220 clrh etw

パフォーマンス監視

Page 19: 20141220 clrh etw

http://msdn.microsoft.com/ja-jp/library/cc437982%28v=vs.71%29.aspx

Page 20: 20141220 clrh etw

# Create Collection$objCCDC = New-Object System.Diagnostics.CounterCreationDataCollection0..($counterName.count -1) `| %{

$objCCD = New-Object System.Diagnostics.CounterCreationData$objCCD.CounterName = $counterName[$_]$objCCD.CounterType = $counterType[$_]$objCCD.CounterHelp = $counterHelp[$_]$objCCDC.Add($objCCD) > $null

}$objCCDC | Format-Table -AutoSize | Out-String | %{[Console]::WriteLine($_)}

# Perfmon Execute[System.Diagnostics.PerformanceCounterCategory]::Create($categoryName, $categoryHelp, $categoryType, $objCCDC)

https://gist.github.com/tanaka-takayoshi/6a603d659a0a104ea0f1

Page 21: 20141220 clrh etw

static void Write(long count, long time){

var retryCounter = new PerformanceCounter(categoryName,

countCounterName, "sample", false);var elaspedCounter =

new PerformanceCounter(categoryName, timeCounterName, "sample", false);

retryCounter.RawValue = count;elaspedCounter.RawValue = time;

}

Page 22: 20141220 clrh etw
Page 23: 20141220 clrh etw
Page 24: 20141220 clrh etw