Consul 에이전트 구성 파일의 텔레메트리 매개변수

Consul 에이전트 구성 파일의 텔레메트리 매개변수 (Telemetry parameters for Consul agent configuration files)

이 페이지는 Consul 에이전트 구성 파일의 텔레메트리 매개변수에 대한 참조 정보를 제공해요.

출처: 문서

본문

이 페이지는 Consul 에이전트 구성 파일의 텔레메트리 매개변수에 대한 참조 정보를 제공합니다.

텔레메트리 매개변수 (Telemetry parameters)

telemetry Consul이 런타임 텔레메트리를 보내는 위치를 구성하는 중첩 객체이며 다음 키를 포함합니다:

circonus_api_token 검사를 만들고/관리하는 데 사용되는 유효한 API 토큰입니다. 제공하면 메트릭 관리가 활성화됩니다.

circonus_api_app API 토큰과 연결된 유효한 앱 이름입니다. 기본값은 "consul"입니다.

circonus_api_url Circonus API에 접촉하는 데 사용할 기본 URL입니다. 기본값은 "https://api.circonus.com/v2"입니다.

circonus_submission_interval 메트릭을 Circonus에 제출하는 간격입니다. 기본값은 "10s"(10초)입니다.

circonus_submission_url 이전에 만든 HTTPTrap 검사의 Check API 객체의 check.config.submission_url 필드입니다.

circonus_check_id 이전에 만든 HTTPTrap 검사의 Check ID(check bundle 아님)입니다. Check API 객체의 check._cid 필드의 숫자 부분입니다.

circonus_check_force_metric_activation 이미 존재하지만 현재 활성화되지 않은 메트릭을 강제로 활성화합니다. 검사 관리가 활성화되면 기본 동작은 새 메트릭을 만날 때 추가하는 것입니다. 메트릭이 이미 검사에 존재하면 활성화되지 않습니다. 이 설정은 해당 동작을 재정의합니다. 기본값은 false입니다.

circonus_check_instance_id 이 인스턴스에서 오는 메트릭을 고유하게 식별합니다. 인프라 내에서 이동하는 일시적 또는 임시 인스턴스와 함께 메트릭 연속성을 유지하는 데 사용할 수 있습니다. 기본값은 hostname:application name(예: "host123:consul")입니다.

circonus_check_search_tag 인스턴스 ID와 결합될 때 제출 URL이나 Check ID가 제공되지 않을 때 검색 결과를 좁히는 데 도움이 되는 특수 태그입니다. 기본값은 service:application name(예: "service:consul")입니다.

circonus_check_display_name 검사를 만들 때 지정할 이름입니다. 이 이름은 Circonus UI Checks 목록에 표시됩니다. Consul 0.7.2 이상에서 사용할 수 있습니다.

circonus_check_tags 검사를 만들 때 추가할 쉼표로 구분된 추가 태그 목록입니다. Consul 0.7.2 이상에서 사용할 수 있습니다.

circonus_broker_id 새 검사를 만들 때 사용할 특정 Circonus Broker의 ID입니다. Broker API 객체의 broker._cid 필드의 숫자 부분입니다. 메트릭 관리가 활성화되고 제출 URL이나 Check ID가 제공되지 않으면 Instance ID와 Search Tag를 사용하여 기존 검사를 검색하려고 시도합니다. 없으면 새 HTTPTrap 검사가 만들어집니다. 기본적으로 사용되지 않으며 무작위 Enterprise Broker가 선택되거나 기본 Circonus Public Broker가 선택됩니다.

circonus_broker_select_tag Broker ID가 제공되지 않을 때 Circonus Broker를 선택하는 데 사용되는 특수 태그입니다. 가장 좋은 용도는 이 특정 인스턴스가 실행 중인 위치를 기반으로(예: 특정 지리적 위치 또는 데이터센터, dc:sfo) 어떤 브로커를 사용해야 하는지에 대한 힌트로 사용하는 것입니다. 기본적으로 비어 있으며 사용되지 않습니다.

disable_hostname gauge 유형 메트릭에 머신의 호스트 이름을 앞에 붙이는 것을 중지하려면 true로 설정합니다. 기본값은 false입니다.

disable_per_tenancy_usage_metrics 사용량 메트릭에서 테넌시 라벨을 제외하려면 true로 설정합니다. 이는 admin 파티션 또는 namespace가 많은 클러스터에서 CPU 사용률을 크게 줄입니다.

dogstatsd_addr host:port 형식으로 DogStatsD 인스턴스의 주소를 제공합니다. DogStatsD는 프로토콜 호환 statsd의 변형으로, 태그와 이벤트 정보로 메트릭을 꾸밀 수 있는 추가 기능이 있습니다. 제공하면 Consul은 집계를 위해 다양한 텔레메트리 정보를 해당 인스턴스로 보냅니다. 런타임 정보를 캡처하는 데 사용할 수 있습니다.

dogstatsd_tags DogStatsD로 전송되는 모든 텔레메트리 패킷에 추가될 전역 태그 목록을 제공합니다. 각 문자열이 "my_tag_name:my_tag_value"처럼 보이는 문자열 목록입니다.

enable_host_metrics 시스템 리소스에 대한 호스트 메트릭 보고를 활성화합니다. 기본값은 false입니다.

filter_default 필터에 의해 지정되지 않은 메트릭을 허용할지 여부를 제어합니다. 기본값은 true이며 필터가 제공되지 않으면 모든 메트릭을 허용합니다. 필터 없이 false로 설정하면 메트릭이 전송되지 않습니다.

metrics_prefix 모든 텔레메트리 데이터를 쓰는 동안 사용되는 접두사입니다. 기본값은 "consul"입니다. Consul 1.0에서 추가되었습니다. 이전 Consul 버전에서는 같은 구조에서 statsite_prefix 구성 옵션을 사용합니다. 이 접두사가 statsite뿐만 아니라 모든 텔레메트리 제공자에 적용되었기 때문에 Consul 1.0에서 이름이 바뀌었습니다.

prefix_filter 다음 형식으로 접두사별로 메트릭을 허용하거나 차단하는 필터 규칙 목록입니다:

앞에 붙은 "+ "는 주어진 접두사의 메트릭을 활성화하고 "- "는 차단합니다. 두 규칙 사이에 겹침이 있으면 더 구체적인 규칙이 우선합니다. 동일한 접두사가 여러 번 나열되면 차단이 우선합니다.

자세한 내용은 prefix filter 예제를 참조하세요.

prometheus_retention_time 값이 0s(기본값)보다 크면 Prometheus로 메트릭 내보내기를 활성화합니다. 지속 시간을 기간 의미론으로 표현할 수 있습니다. 지정된 기간 동안 모든 카운터를 집계하며, 이는 Consul의 메모리 사용량에 영향을 줄 수 있습니다.

prometheus_retention_time의 좋은 값은 Prometheus 스크래핑 간격의 최소 2배이지만, 몇 일과 같은 매우 높은 보존 시간도 넣을 수 있습니다(예: 31일 보존을 활성화하려면 744h).

Prometheus 메트릭은 /v1/agent/metrics?format=prometheus 엔드포인트로 가져옵니다. 형식은 Prometheus와 기본적으로 호환됩니다. 이 모드에서 실행할 때 호스트 이름으로 접두사가 붙은 메트릭을 피하기 위해 disable_hostname 옵션도 활성화하는 것을 권장합니다.

Consul은 기본 Prometheus 경로를 사용하지 않으므로 다음 예제처럼 Prometheus가 메트릭을 스크래핑하도록 구성해야 합니다.

metrics_path: '/v1/agent/metrics'
params:
  format: ['prometheus']

메트릭 경로에 ?format=prometheus를 사용하는 것은 작동하지 않습니다. ?가 이스케이프되므로 형식을 매개변수로 지정해야 합니다. 자세한 내용은 Prometheus 구성 문서를 참조하세요.

statsd_address host:port 형식으로 statsd 인스턴스의 주소를 제공합니다. 제공하면 Consul은 집계를 위해 다양한 텔레메트리 정보를 해당 인스턴스로 보냅니다. 런타임 정보를 캡처하는 데 사용할 수 있습니다. UDP 패킷만 보내며 statsd 또는 statsite와 함께 사용할 수 있습니다.

statsite_address host:port 형식으로 statsite 인스턴스의 주소를 제공합니다. 제공하면 Consul은 집계를 위해 다양한 텔레메트리 정보를 해당 인스턴스로 스트리밍합니다. 런타임 정보를 캡처하는 데 사용할 수 있습니다. TCP를 통해 스트리밍하며 statsite에서만 사용할 수 있습니다.

인증서 만료 (Certificate expiration)

Consul은 Consul 인프라 전반의 인증서 상태를 모니터링하기 위한 인증서 만료 텔레메트리를 포함합니다. 다음 인증서를 모니터링할 수 있습니다:

  • CA Root 인증서: 기본 루트 CA 인증서
  • Agent TLS 인증서: 에이전트 통신용 서버 및 클라이언트 TLS 인증서
  • Intermediate/Signing CA 인증서: 리프 인증서 발급에 사용되는 활성 서명 인증서
  • Leaf 인증서: 다음을 포함한 서비스 인증서:
    • 서비스 메시 인증서
    • Mesh gateway 인증서
    • Ingress gateway 인증서
    • Terminating gateway 인증서
    • API gateway 인증서

에이전트 구성 파일의 telemetry 블록에서 에이전트에 대한 모니터링 동작을 정의합니다.

telemetry.certificate — 인증서 만료 모니터링용 구성 블록

  • enabled (bool: true) — 루트 CA, 서명 CA 및 agent TLS 인증서 만료 모니터링을 활성화합니다.
  • cache_duration (string: "5m") — 인증서 텔레메트리 소비자를 위한 런타임 텔레메트리 구성에 저장된 기간 값입니다. 유효한 시간 단위는 ns, us, ms, s, m, h입니다.
  • critical_threshold_days (int: 7) — 만료 전 며칠에 CRITICAL 심각도의 인증서 만료 및 갱신 실패 로그를 출력할지입니다.
  • warning_threshold_days (int: 30) — 만료 전 며칠에 WARNING 심각도의 인증서 만료 로그를 출력할지입니다.
  • info_threshold_days (int: 90) — 인증서 텔레메트리 소비자를 위한 런타임 텔레메트리 구성에 저장된 정수 값입니다.
  • exclude_auto_renewable (bool: false) — 인증서 텔레메트리 소비자를 위한 런타임 텔레메트리 구성에 저장된 부울 값입니다.

enabled 설정은 루트 CA, 서명 CA 및 agent TLS 만료 모니터링에 적용됩니다. 리프 인증서 만료 및 갱신 메트릭은 리프 인증서 관리자가 독립적으로 출력하지만, 경고 및 중요 임계값은 여전히 리프 갱신 실패 로그 심각도에 영향을 줍니다.

예제 (Examples)

다음 예제는 일반적인 에이전트 텔레메트리 구성 패턴을 보여줍니다.

접두사 필터 (Prefix filter)

이 예제는 consul.raft.apply와 consul.http.GET를 허용하지만 consul.http를 차단합니다.

HCL:

telemetry {
  prefix_filter = ["+consul.raft.apply", "-consul.http", "+consul.http.GET"]
}

JSON:

{
  "telemetry": {
    "prefix_filter": [
      "+consul.raft.apply",
      "-consul.http",
      "+consul.http.GET"
    ]
  }
}

인증서 만료 텔레메트리 (Certificate expiration telemetry)

이 예제는 인증서 만료 텔레메트리를 활성화하고 인증서 관련 모니터링 및 로그 출력에 사용되는 경고 및 중요 임계값을 설정합니다.

HCL:

telemetry {
  certificate {
    enabled = true
    cache_duration = "5m"
    critical_threshold_days = 7
    warning_threshold_days = 30
    info_threshold_days = 90
    exclude_auto_renewable = false
  }
}

JSON:

{
  "telemetry": {
    "certificate": {
      "enabled": true,
      "cache_duration": "5m",
      "critical_threshold_days": 7,
      "warning_threshold_days": 30,
      "info_threshold_days": 90,
      "exclude_auto_renewable": false
    }
  }
}

더 알아보기 (Learn more)