Versions Compared

Key

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

어플리케이션에서 생성하는 정보를 분석하고,모니터링 하기 위해서 다음과 같은 방법을 가장 많이 사용합니다.

  • 로그를 적재한다. ( Nlog,Log4j등등 모듈)
  • 로그를 통합한다. ( 엘라서틱 로그 스태쉬)
  • 로그를 데시보드화하고 대시보드화하고 분석한다 ( 키바나등 )


하지만, 너무나 큰 대용량 처리횟수에대해 실시간성으로 모니터링을 하고 싶다고 하면

Matrix를 활용 합니다.  시간별 CPU변화량,네트워크 변화량 등에 일반적으로 사용되고 있으며

매 이벤트마다 로그를 기록하는 방식이아니고, 증분의 값을 주기적인 시간에 측정함으로 

대용량 실시간 카운팅을 측정하는데 효율적입니다.

...

Code Block
themeEmacs
using Akka.Monitoring;
using Akka.Monitoring.ApplicationInsights;
using Akka.Monitoring.Datadog;
using Akka.Monitoring.PerformanceCounters;
using Akka.Monitoring.Prometheus;

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.MonitorToolCon));
		break;
	case "prometheus":
		// prometheusMonotor 를 사용하기위해서, MerticServer를 켠다...(수집형 모니터,Agent탑재)
		// http://localhost:10250/metrics  - 여기서 제공되는 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;
}

...

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

...

여기서 설명되는 방식은,Azure AppInsight 뿐만아니라, 다양한 오픈 플랫폼 데시보드와도 대시보드와도 연동가능합니다. ( 매트릭스기반의 Grafana,DataDog등....)

...

Info

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

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

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

...

대시보드로 측정하기

윈도우 성능 프러파일러

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

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

...

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

통합된 수집가능한 데시보드툴에서는  대시보드툴에서는  각각의 인스턴스가 자신의 카운팅을 측정하여 보고하고, 통합 데시보드에서는 대시보드에서는 분산된 어플리케이션 객체에대한 총합을 측정할수 있습니다.

...