Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
themeEmacs
using Akka.ActorMonitoring;
using Akka.Monitoring.ApplicationInsights;
using Akka.Monitoring.ApplicationInsightsDatadog;
using Akka.Monitoring.PerformanceCounters;
using Akka.Monitoring.Prometheus;

switch (appConfig.MonitorTool)
{
    var MonitorTool = Environment.GetEnvironmentVariable("MonitorTool");
var MonitorToolCon = Environment.GetEnvironmentVariable("MonitorToolCon");

switch (MonitorTool)
{
	case "win":
        		var win = ActorMonitoringExtension.RegisterMonitor(actorSystem,
            			new ActorPerformanceCountersMonitor(
                				new CustomMetrics
                {
                    				{
					Counters = { "akka.custom.metric1", "akkacore.message" },
                    					Gauges = { "akka.messageboxsize" },
                    					Timers = { "akka.handlertime" }
                				}));
        		break;
    	case "azure":
        		var azure = ActorMonitoringExtension.RegisterMonitor(actorSystem, new ActorAppInsightsMonitor(appConfig.MonitorToolApiKeyMonitorToolCon));
        		break;
    	case "prometheus": 
        
		// prometheusMonotor 를 사용하기위해서, MerticServer를 켠다...(수집형 모니터)
        		// http://localhost:10250/metrics
        		metricServer = new MetricServer(10250);
        		metricServer.Start();
        		var prometheus = ActorMonitoringExtension.RegisterMonitor(actorSystem, new ActorPrometheusMonitor(actorSystem));
		break;
	case "datadog":
		var statsdConfig = new StatsdConfig
		{
			StatsdServerName = MonitorToolCon
		};
		var dataDog = ActorMonitoringExtension.
			RegisterMonitor(actorSystem, new ActorDatadogMonitor(statsdConfig));
		break;
}

대표적인 매트릭스 기반 모니터링 시스템인, 윈도우 성능 프로파일러 / 애져 AppInsight / Promethes / Promethes  DataDog 3가지 모두 연동가능합니다연동가능하며 

다양한 연동 라이브러리는 누겟에 지속적으로 추가됩니다.

  • 윈도우 성능 프로파일러 : 로컬에서 극단적인 퍼포먼스 검증시 활용( 물론 개발장비가 윈도우여야함)
  • Azure AppinSight : 성능 프로파일을 Azure 클라우드 데시보드로 통합하고자 할때
  • Phomethes : 오픈 진영의 성능 프로파일러 데시보드와 연동을 할때 ( Grafana , DataDog등과 연동이 가능해집니다.)

...

모니터링 시스템이 일반적으로 10초주기로 증분값을 수집하기 때문에, 이벤트마다 매번 메모리값을(IncrementCount) 증가할 필요는 없습니다.

조금더 고서능을 고성능을 위해 특정 시간이내에 집계된 카운팅을 증가하겠다고 하면 

...

수집대상을 결정하는것이 아니기 때문에 유연하게 추가가 가능합니다.

로컬 1PC측정시 유용합니다.



클라우드 기반의 매트릭스 기반 솔류션을 사용한다고 해도 ,성능 매트릭스에대한  기본 컨셉은 동일합니다.

...

Info

모니터링을 위해 도메인 기능이 포함된, 기존 코드를 액터 모델로 전환할 필요가 없으며 

액터는 대용량 처리 메시지를 충분히 커버함으로 실시간  측정및/모니터링 용도로 액터를 기존코드에 간단하게 추가할수 있습니다.

MonitorActor.Tell(value);  와같이 이벤트가 발생하는 시점에서 단순하게 Tell을 하는것만으로 고성능 비동기 처리가 가능하기 때문입니다.

데시보드로 측정하기

윈도우 성능 프러파일러

표: 시간별로 메시지처리가 증가함에따라 CPU변화량을 같이 비교할수 있습니다. (메시징 배율 0.0001,10000을곱하면 메시지수) 

표:TPS와 유실이 없는지 실시간으로 확인이 가능합니다.

...

표 : 분산처리된 실시간 메시징의 합계를 구하기

Data Dog

Image Added



윈도우 성능 프로파일러가 주로 단일장비 스케일업을 위해 튜닝할때 사용된다라고 하면

...