Application Signals에서 사용자 지정 지표
애플리케이션 성능 및 가용성을 모니터링하기 위해 Application Signals는 사용자가 활성화한 후 검색된 애플리케이션에서 표준 지표(결함, 오류, 지연 시간) 및 런타임 지표를 수집합니다.
사용자 지정 지표는 애플리케이션 모니터링에 중요한 컨텍스트를 추가하고 문제 해결을 가속화하는 데 도움이 됩니다. 이를 사용하여 다음을 수행할 수 있습니다.
원격 분석 데이터 분석 사용자 지정
문제의 근본 원인 식별
정확한 비즈니스 및 운영에 대한 신속한 의사 결정
Application Signals를 사용하면 서비스에서 생성된 사용자 지정 지표를 보고 표준 및 런타임 지표와 연관시킬 수 있습니다. 예를 들어 애플리케이션은 요청 크기 및 캐시 누락 수에 대한 지표를 생성할 수 있습니다. 이러한 사용자 지정 지표는 성능 문제에 대한 보다 세분화된 통찰력을 제공하여 가용성 저하 및 지연 시간 스파이크를 더 빠르게 진단하고 해결하는 데 도움이 됩니다.
Application Signals에 대한 사용자 지정 지표 구성
OpenTelemetry 지표 및 스팬 지표라는 두 가지 방법을 사용하여 애플리케이션에서 사용자 지정 지표를 생성할 수 있습니다.
OpenTelemetry 지표
Application Signals에서 사용자 지정 OpenTelemetry 지표를 사용하려면 CloudWatch 에이전트 또는 OpenTelemetry Collector를 사용해야 합니다. 사용자 지정 OpenTelemetry 지표를 사용하면 OpenTelemetry 지표 SDK를 사용하여 애플리케이션 코드에서 직접 지표를 생성하고 내보낼 수 있습니다.
Application Signals에 서비스를 온보딩하세요.
에이전트 또는 수집기를 구성하세요.
CloudWatch 에이전트를 사용하는 경우
otlp
와 함께metrics_collected
를 구성해야 합니다. 예:cloudwatch-config.json
{ "traces": { "traces_collected": { "application_signals": {} } }, "logs": { "metrics_collected": { "application_signals": {}, "otlp": { "grpc_endpoint": "0.0.0.0:4317", "http_endpoint": "0.0.0.0:4318" } } } }
OpenTelemetry Collector를 사용하는 경우 지표 파이프라인을 구성합니다. OpenTelemetry Collector용 CloudWatch EMF Exporter
를 사용하고 지표 레이블에 대한 리소스 속성 을 활성화해야 합니다. 많은 지표 집계를 내보내지 않도록 dimension_rollup_option: NoDimensionRollup
을 구성하는 것이 좋습니다. 예를 들어config.yaml
을 참조하세요.receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: awsemf: region: $REGION namespace: $NAMESPACE log_group_name:$LOG_GROUP_NAME resource_to_telemetry_conversion: enabled: true dimension_rollup_option: "NoDimensionRollup" otlphttp/traces: compression: gzip traces_endpoint: https://xray.$REGION.amazonaws.com/v1/traces auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "$REGION" service: "logs" sigv4auth/traces: region: "$REGION" service: "xray" processors: batch: service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [awsemf] traces: receivers: [otlp] processors: [batch] exporters: [otlphttp/traces]
환경을 구성합니다. 동일한 서비스 이름의 서비스가 여러 개 있고 Application Signals 지표를 올바른 서비스 이름과 정확하게 연관시키려면 리소스 속성
deployment.environment.name
을 구성하는 것이 좋습니다. 이 리소스 속성은 일반적으로 환경 변수를 통해 구성됩니다.OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME,deployment.environment.name=$YOUR_ENV_NAME"
CloudWatch 에이전트 또는 OpenTelemetry Collector로 지표 내보내기를 구성하세요. 다음 접근 방법 중 하나를 사용할 수 있습니다.
(권장) 사용자 지정 내보내기 파이프라인 - 애플리케이션 코드에서 구성된 에이전트 또는 수집기 엔드포인트로 내보내는 전용 MeterProvider
를 생성합니다. 예: Resource resource = Resource.getDefault().toBuilder() .put(AttributeKey.stringKey("service.name"), serviceName) .put(AttributeKey.stringKey("deployment.environment.name"), environment) .build(); MetricExporter metricExporter = OtlpHttpMetricExporter.builder() .setEndpoint("http://localhost:4318/v1/metrics") .build(); MetricReader metricReader = PeriodicMetricReader.builder(metricExporter) .setInterval(Duration.ofSeconds(10)) .build() SdkMeterProvider meterProvider = SdkMeterProvider.builder() .setResource(resource) .registerMetricReader() .build(); Meter meter = meterProvider.get("myMeter");
에이전트 기반 내보내기 - 에이전트 환경 변수 OTEL_METRICS_EXPORTER
및 OTEL_EXPORTER_OTLP_METRICS_ENDPOINT 를 구성합니다. 예: OTEL_METRICS_EXPORTER=otlp OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://localhost:4318/v1/metrics
애플리케이션 코드에서 에이전트가 생성한 글로벌 MeterProvider를 사용합니다. 예:
Meter meter = GlobalOpenTelemetry.getMeter("myMeter");
애플리케이션 코드에서 OTEL 지표 SDK
를 사용하여 OTEL 지표를 추가합니다. 예를 들어 Python에서 OTEL 지표를 추가하는 방법: counter = meter.counterBuilder("myCounter").build(); counter.add(value); counter.add(value, Attributes.of(AttributeKey.stringKey("Operation"), "myOperation"));
작업 속성을 추가할 필요는 없지만 Application Signals 서비스 작업을 사용자 지정 OpenTelemetry 지표와 연관시키는 데 유용할 수 있습니다.
스팬 지표
사용자 지정 스팬 지표는 현재 트랜잭션 검색에서만 작동합니다. 사용자 지정 스팬 지표를 사용하면 다음을 수행할 수 있습니다.
지표 필터를 사용하여 지표 생성
애플리케이션 코드에 추가된 스팬 속성 처리
구현을 위해 OpenTelemetry 트레이스 SDK 사용
트랜잭션 검색을 사용하여 Application Signals 모니터링을 활성화하세요. 자세한 내용은 트랜잭션 검색 섹션을 참조하세요.
100% 지표 샘플링을 보장하려면 스팬의 100%를 엔드포인트로 보내는 것이 좋습니다.
OTEL 트레이스 SDK
를 사용하여 스팬 속성을 추가하세요. 두 가지 방법이 있습니다. [권장] 자동으로 생성된 스팬에 속성을 추가합니다. 예:
Span.current().setAttribute("myattribute", value);
수동으로 생성된 스팬에 속성을 추가합니다. 예:
Span span = tracer.spanBuilder("myspan").startSpan(); try (Scope scope = span.makeCurrent()) { span.setAttribute("myattribute", value); }
다음 값을 사용하여 지표 필터를 생성하세요. 지표 필터를 생성하는 방법에 대한 자세한 내용은 로그 그룹에 대한 지표 필터 생성을 참조하세요.
로그 그룹 – aws/spans
필터 패턴 - { $.attributes.['myattribute'] = * }
지표 이름 - myattribute(값이 정확히 일치해야 하며, 그렇지 않으면 스팬 상관관계가 작동하지 않음)
지표 값 - $.attributes.['myattribute']
차원 – 필드 이름: 서비스, 필드 값: $.attributes.['aws.local.service'], 필드 이름: Environment, 필드 값: $.attributes.['aws.local.environment'], 필드 이름: Operation, 필드 값: $.attributes.['aws.local.operation']
참고
수동으로 생성된 스팬에 속성을 추가하는 경우
aws.local.operation
에 스팬 데이터에 존재하지 않으므로Operation
을 설정할 수 없습니다.
Application Signals에서 사용자 지정 지표 보기
이제 Application Signals 콘솔에서 서비스 및 작업에 대한 사용자 지정 지표를 볼 수 있습니다.
서비스 목록에서 서비스를 선택하여 새 관련 지표 탭 확인
선택한 서비스에 대한 표준 지표, 런타임 지표 및 관련 지표 보기
목록에서 여러 지표 필터링 및 선택
선택한 지표를 그래프로 작성하여 상관관계와 문제의 근본 원인 식별
관련 지표에 대한 자세한 내용은 관련 지표 보기 섹션을 참조하세요.
FAQ
사용자 지정 지표에 대한 환경 구성을 추가하지 않으면 어떤 영향이 있나요?
Application Signals는 애플리케이션의 차이를 명확하게 구분하도록 deployment.environment.name
리소스 속성을 구성합니다. Application Signals는 이와 같은 명확한 구분을 통해서만 동일한 이름의 서로 다른 두 서비스에서 생성된 사용자 지정 지표를 올바른 서비스에 연관시킬 수 있습니다.
애플리케이션에 환경 구성을 추가하려면 OpenTelemetry 지표 섹션을 참조하세.
지표 필터에 제한이 있나요?
CloudWatch Logs 로그 그룹당 최대 100개의 지표 필터만 생성할 수 있습니다. 각 지표는 최대 3개의 차원을 정의할 수 있습니다. 여기 OpenTelemetry 지표에서 지표 필터에 대한 제한을 볼 수 있습니다.
지표 그래프가 지표 테이블에 표시되지 않는 이유는 무엇인가요?
솔루션은 지표 유형에 따라 다릅니다.
사용자 지정 지표 - 지표 구성을 확인하려면 Application Signals에 대한 사용자 지정 지표 구성 섹션 참조
표준 또는 런타임 지표 - Application Signals 설치 문제 해결 참조