SaltStack Config는 모니터링 및 진단에 사용할 수 있는 여러 시스템 메트릭을 제공합니다. 이러한 메트릭은 SaltStack Config 사용자 인터페이스 대시보드의 그래픽 형태와 /metrics http 끝점을 사용한 시스템이 읽을 수 있는 형태로 제공됩니다.

대시보드를 사용하여 SaltStack Config 사용자 인터페이스에서 보고서를 시각화하는 방법에 대한 자세한 내용은 대시보드 보고서를 참조하십시오.

시스템이 읽을 수 있는 메트릭

SaltStack Config는 시스템 메트릭을 OpenMetrics 텍스트 기반 형식으로 내보냅니다. 이 형식은 Prometheus와 기타 모니터링 및 경고 도구에서 직접 사용할 수 있습니다.

SaltStack Config 메트릭 구성

시스템 메트릭 수집을 위한 구성은 /etc/raas/raas 구성 파일에서 다음과 같은 설정으로 구성됩니다. 기본값은 다음과 같습니다.

# System metrics settings
metrics:
  enabled: true                         # If True, enable the collection of system metrics
  prometheus: false                     # If True, enable the Prometheus endpoint at /metrics
  prometheus_username:                  # Static username for retrieving /metrics
  prometheus_password:                  # Static password for retrieving /metrics
  snapshot_interval: 60                 # How often to record snapshot metrics, in seconds
  max_query_timedelta: 86400            # Maximum timedelta for a single call to get_system_metrics, in seconds
  keep: 30                              # How long to retain metrics data, in days

다음 설정은 시스템이 읽을 수 있는 시스템 메트릭의 처리를 제어합니다.

  • 메트릭 수집을 사용하지 않도록 설정하려면 enabled:false를 설정합니다. 이렇게 하면 SaltStack Config 기본 제공 대시보드도 사용하지 않도록 설정됩니다.
  • /metrics http 끝점에서 시스템이 읽을 수 있는 메트릭을 내보낼 수 있도록 설정하려면 prometheus:true를 설정합니다. 이 설정은 SaltStack Config 기본 제공 대시보드에 영향을 주지 않습니다.
  • /metrics http 끝점에 대한 액세스는 prometheus_usernameprometheus_password에 구성된 자격 증명을 사용하여 http 기본 인증을 통해 제어됩니다. 이러한 설정의 값이 비어있지 않아야 /metrics 끝점을 사용하도록 설정할 수 있습니다. 이러한 자격 증명은 /etc/raas/raas 구성 파일에만 저장되고, 어떠한 SaltStack Config 계정과도 연결되지 않으며 /metrics http 끝점에 액세스하는 것 외에는 SaltStack Config에 인증하는 데 사용할 수 없습니다.

위에 표시된 다른 설정은 SaltStack Config 기본 제공 대시보드와 관련이 있으며 시스템이 읽을 수 있는 시스템 메트릭에 대한 보고 또는 수집에 영향을 주지 않습니다. 특히 snapshot_interval 설정은 대시보드에 표시하기 위해 메트릭이 기록되는 빈도(초)를 결정하며, keep 설정은 메트릭 데이터가 트리밍되기 전에 데이터베이스에 보관되는 기간(일)을 결정합니다.

/metrics http 끝점은 SaltStack Config에서 시스템이 읽을 수 있는 메트릭 데이터를 수집하는 데 권장되는 방법이지만 API(RaaS)를 사용하여 기본 제공 대시보드에 제공되는 데이터를 검색할 수 있습니다. stats.get_system_metrics() API 호출을 사용하면 메트릭 이름, 소스 및 날짜 범위별로 메트릭 데이터를 쿼리할 수 있습니다. 구성 항목 max_query_timedelta는 단일 API 호출에서 SaltStack Config가 반환할 데이터의 양을 제한합니다. 더 긴 시간 범위의 메트릭 데이터를 확보하려면 시작 날짜와 종료 날짜가 다른 여러 API 호출 수행합니다.

Salt 마스터 메트릭 구성

일부 메트릭의 가용성은 SaltStack Config에 연결된 Salt 마스터의 구성에 따라 다릅니다.

  • Salt 이벤트 및 작업 반환에 대한 메트릭은 sseapi returner가 Salt 마스터에 구성된 경우에만 정확합니다. sse_pgjsonb(direct-to-database) returner를 통해서는 메트릭 수집이 제대로 작동하지 않습니다.
  • SaltStack Config는 구성에 master_stats:true가 설정되어 있는 Salt 마스터로부터 하위 수준의 함수 런타임 정보를 수집합니다. 이 옵션은 기본적으로 사용하지 않도록 설정되어 있습니다. 자세한 내용은 Salt 설명서에서 master_stats를 참조하십시오.
  • Salt 작업 상태에 대한 메트릭은 Salt 마스터 플러그인에서 작업 완료 엔진을 사용하도록 설정한 경우에만 정확합니다.
    engines:
       -jobcompletion:{}

    이 엔진은 Salt 마스터플러그인 기본 구성에서 사용하도록 설정됩니다.

SaltStack Config에 연결하도록 Prometheus 구성

각 API(RaaS) 서버 인스턴스에 대한 Prometheus 구성(일반적으로 prometheus.yml)에 scrape_configs 작업을 추가하면 Prometheus 서버가 SaltStack Config에서 메트릭을 스크레이핑하도록 설정할 수 있습니다.

scrape_configs:
  - job_name: 'sse'

    metrics_path: '/metrics'
    scheme: 'http'

    static_configs:
        - targets: ['localhost:8080']

    basic_auth:
      username: prometheus
      password: metrics

Prometheus 구성의 자격 증명은 위에서 언급한 /etc/raas/raas 구성 파일에 지정된 prometheus_usernameprometheus_password와 일치해야 합니다.

스크레이핑 대상 설정 및 기타 Prometheus 구성 항목에 대한 자세한 내용은 Prometheus 프로젝트 설명서를 참조하십시오.

참고: 문제가 되는 용어를 제거하려는 VMware 이니셔티브의 일환으로 Salt 마스터라는 용어는 SaltStack Config 및 관련 제품과 문서에서 더 나은 용어로 대체될 예정입니다. 용어 업데이트가 완전히 완료되기까지 몇 번의 릴리스 주기를 거칠 수 있습니다.

메트릭 설명

SaltStack Config가 내보내는 시스템이 읽을 수 있는 메트릭은 다음과 같은 몇 가지 범주로 나뉩니다.

범주 메트릭 이름 메트릭 유형 레이블 설명
Salt 마스터 하위 수준 메트릭 salt_event_size_bytes 히스토그램 master_id Salt 이벤트 크기(바이트)
salt_master_cmd_duration_seconds 히스토그램 master_id, cmd Salt 마스터 명령 지속 시간(초). Salt 마스터에 master_stats가 구성된 경우에만 보고됩니다.
         
Salt 마스터 플러그인 메트릭 raas_master_commands_processed 카운터 master_id 처리된 SSE 명령
raas_master_master_grains_pushed 카운터 master_id SaltStack Config에 푸시된 Salt 마스터 Grain 업데이트
raas_master_minion_keys_pushed 카운터 master_id SaltStack Config에 푸시된 미니언 키 상태 업데이트
raas_master_minion_cached_pushed 카운터 master_id SaltStack Config에 푸시된 미니언 캐시 업데이트
raas_master_masterfs_pushed 카운터 master_id SaltStack Config에 푸시된 MasterFS 업데이트
raas_master_sseapi_engine_iteration_seconds 히스토그램 master_id API(RaaS) 엔진 반복 지속 시간(초)
         
서버 메트릭 redis_commands_executed 카운터 redis_instance 실행된 Redis 명령(시스템 캐시)
redis_memory_bytes 측정기 redis_instance Redis 메모리 사용량(시스템 캐시)
celery_tasks_queued 카운터 raas_instance, task 대기열에 있는 셀러리 작업(백그라운드 작업)
celery_tasks_executed 카운터 raas_instance, task 실행된 셀러리 작업(백그라운드 작업)
celery_queue_length 측정기 raas_instance 셀러리 대기열 길이(대기 중인 백그라운드 작업)
raas_rpc_request_duration_seconds 히스토그램 raas_instance SSE RPC API 호출 지속 시간(초)
         
PostgreSQL 메트릭 postgres_connections 측정기 postgres_instance Postgres 연결
postgres_transactions 카운터 postgres_instance 커밋된 Postgres 트랜잭션
postgres_rows_read 카운터 postgres_instance 읽은 Postgres 행
postgres_rows_inserted 카운터 postgres_instance 삽입된 Postgres 행
postgres_rows_updated 카운터 postgres_instance 업데이트된 Postgres 행
postgres_rows_deleted 카운터 postgres_instance 삭제된 Postgres 행
         
시스템 메트릭 sse_jobs_in_progress 카운터 없음 진행 중인 SaltStack Config 작업
sse_jobs_complete_all_successful 카운터 없음 반환이 모두 성공한 완료된 SaltStack Config 작업
sse_jobs_complete_missing_returns 카운터 없음 반환이 하나 이상 누락된 완료된 SaltStack Config 작업
sse_jobs_complete_with_errors 카운터 없음 오류가 하나 이상 있는 완료된 SaltStack Config 작업
sse_masters 측정기 없음 SaltStack Config의 총 Salt 마스터
sse_minions 측정기 없음 SaltStack Config의 총 미니언
sse_minions_present 측정기 master_id 구성된 시간 제한 raas_presence_expiration 내에 있는 미니언
sse_minions_lost 측정기 master_id 시간 제한 내에 없는 미니언
sse_minions_unknown 측정기 master_id 알 수 없는 미니언(존재하지 않음)
sse_users_authenticated 측정기 없음 SaltStack Config에 인증된 사용자