라이선스 사용량 자동 보고

라이선스 사용량 자동 보고 (License Utilization Reporting)

Consul Enterprise에서 자동 라이선스 사용량 보고를 활성화하고, 필요시 수동으로 보고서를 제출하는 방법을 설명하는 문서예요.

출처: 문서

본문

이 주제는 Consul Enterprise에서 자동 라이선스 사용량 보고를 활성화하는 방법을 설명해요. 이 기능은 라이선스 사용량 데이터를 자동으로 HashiCorp로 보내서 직접 수집하고 보고할 필요가 없게 해줘요. 에어갭(air-gapped) 네트워크처럼 자동 보고에 보안 제한이 있다면 보고서를 만들어 수동으로 제출하는 방식을 선택할 수도 있어요.

소개 (Introduction)

자동 보고는 계약에 정의된 대로 라이선스 사용량을 검증하는 데 필요한 최소한의 데이터를 공유해요. 이 데이터는 주로 계산된 메트릭으로 구성되며, 개인 식별 정보(PII)나 기타 민감한 정보는 절대 포함하지 않아요. 자동 보고는 안전한 단방향 HTTPS API를 통해 데이터를 HashiCorp와 공유하고, 보고서를 제출할 때마다 제품 로그에 감사(auditable) 기록을 남겨요. 이 프로세스는 GDPR을 준수해요.

요구 사항 (Requirements)

자동 라이선스 사용량 보고는 네트워크 인터페이스가 없는 시스템인 에어갭 설치를 지원하지 않아요.

다음 버전의 Consul Enterprise가 자동 라이선스 사용량 보고를 지원해요:

  • Consul Enterprise v1.16.0 이상.
  • Consul Enterprise v1.15.4 이상의 패치 릴리스.
  • Consul Enterprise v1.14.8 이상의 패치 릴리스.
  • Consul Enterprise v1.13.9 이상의 패치 릴리스.

지원되는 릴리스를 Consul Versions 페이지에서 다운로드하세요.

자동 보고 활성화 (Enable automated reporting)

자동 보고를 활성화하기 전에 아웃바운드 네트워크 트래픽이 올바르게 구성되어 있는지 확인하고 엔터프라이즈 제품을 이를 지원하는 버전으로 업그레이드하세요. 설치가 에어갭이거나 네트워크 설정이 마련되지 않았다면 자동 보고는 동작하지 않아요.

자동 보고를 활성화하려면 다음 단계를 완료해요:

  1. 포트 443에서 아웃바운드 HTTPS 트래픽 허용
  2. 제품 로그 확인

포트 443에서 아웃바운드 HTTPS 트래픽 허용 (Allow outbound HTTPS traffic on port 443)

네트워크가 https://reporting.hashicorp.services의 포트 443으로 HTTPS 이그레스(egress)를 허용하는지 확인하고, 다음 IP 주소를 허용 목록에 추가해요:

  • 100.20.70.12
  • 35.166.5.222

제품 로그 확인 (Check product logs)

자동 라이선스 사용량 보고는 대략 24시간 내에 데이터 전송을 시작해요. 데이터가 성공적으로 전송되었는지 제품 로그에서 기록을 확인해요.

[DEBUG] beginning snapshot export
[DEBUG] creating payload
[DEBUG] marshalling payload to json
[DEBUG] generating authentication headers
[DEBUG] creating request
[DEBUG] sending request
[DEBUG] performing request: method=POST url=https://reporting.hashicorp.services
[DEBUG] recording audit record
[INFO]  reporting: Report sent: auditRecord={"payload":{"payload_version":"1","license_id":"d2cdd857-4202-5a45-70a6-e4b531050c34","product":"consul","product_version":"1.16.0-dev+ent","export_timestamp":"2023-05-26T20:09:13.753921087Z","snapshots":[{"snapshot_version":1,"snapshot_id":"0001J724F90F4XWQDSAA76ZQWA","process_id":"01H1CTJPC1S8H7Q45MKTJ689ZW","timestamp":"2023-05-26T20:09:13.753513962Z","schema_version":"1.0.0","service":"consul","metrics":{"consul.billable.nodes":{"key":"consul.billable.nodes","kind":"counter","mode":"write","value":2},"consul.billable.service_instances":{"key":"consul.billable.service_instances","kind":"counter","mode":"write","value":2}}}],"metadata":{}}}
[DEBUG] completed recording audit record
[DEBUG] export finished successfully"

설치가 에어갭이거나 네트워크가 올바른 이그레스를 허용하지 않으면 로그에 오류가 표시돼요.

[DEBUG] reporting: beginning snapshot export
[DEBUG] reporting: creating payload
[DEBUG] reporting: marshalling payload to json
[DEBUG] reporting: generating authentication headers
[DEBUG] reporting: creating request
[DEBUG] reporting: sending request
[DEBUG] reporting: performing request: method=POST url=https://census.license.hashicorp.services
[DEBUG] reporting: error status code received: statusCode=403

이 경우 네트워크를 재구성해 이그레스를 허용하고, 대략 24시간 후 로그를 다시 확인해 자동 보고가 올바르게 동작하는지 확인해요.

옵트아웃 (Opt out)

설치가 에어갭이거나 동일한 라이선스 사용량 메트릭을 수동으로 수집하고 보고하려면 자동 보고를 옵트아웃할 수 있어요.

이 메트릭을 수동으로 보고하는 것은 시간이 많이 걸릴 수 있어요. 자동 보고를 옵트아웃한다고 해서 라이선스 사용량 메트릭 전송에서도 옵트아웃하는 것은 아니에요. 자동 보고를 옵트아웃한 고객은 여전히 라이선스 사용량 메트릭을 수동으로 수집해 HashiCorp로 보내야 해요.

데이터가 걱정되어 옵트아웃을 고려하고 있다면, 옵트아웃하기 전에 예시 페이로드를 검토할 것을 강력히 권장해요. 자동으로 보고되는 데이터 중 어떤 것에 우려가 있다면 계정 담당자에게 그 우려를 제기하세요.

자동 보고를 옵트아웃하는 방법은 두 가지가 있어요:

  • HCL 구성 (권장)
  • 환경 변수 (재시작 필요)

시스템 재시작이 필요 없으므로 제품의 구성 파일에서 옵트아웃할 것을 권장해요. configuration.hcl 또는 configuration.json 파일에 다음 블록을 추가하세요.

reporting {
    license {
        enabled = false
  }
}

환경 변수로 옵트아웃할 때 시스템은 자동 보고를 비활성화했음을 확인하는 시작 메시지를 제공해요. 자동 보고를 비활성화하려면 다음 환경 변수를 설정하세요:

$ export OPTOUT_LICENSE_REPORTING=true

환경 변수를 설정한 후 시스템을 재시작해 옵트아웃 프로세스를 완료해요.

$ consul reload

옵트아웃 후 대략 24시간 뒤 제품 로그를 확인해 시스템이 보고서를 보내려고 하지 않는지 확인하세요. 구성 파일과 환경 변수가 다르면 환경 변수 설정이 우선한다는 점을 유의하세요.

수동 라이선스 사용량 보고 (Manual license utilization reporting)

자동 라이선스 사용량 보고를 옵트아웃했더라도 라이선스 사용량 보고서를 만들어야 할 수 있어요.

이 보고서를 생성하려면 consul operator utilization CLI 명령을 사용해요.

이 명령은 보고서를 HashiCorp로 자동 보낼지 묻습니다. 에어갭 환경이거나 자동 보고를 활성화하도록 트래픽을 구성하지 않았다면 N을 선택해요.

$ consul operator utilization -output license-report.json 
Send usage report to HashiCorp? [y/N]:
Utilization bundle written to license-report.json

명령이 완료되면 보고서를 검토할 수 있어요.

license-report.json

{
  "version": "2",
  "mode": "manual",
  "timestamp": "2025-10-09T10:11:36.849310301Z",
  "signature": "f15e8bd08f1801bbfa4584ec4c2fbc78567ba3b7c8d7e970a30a5ad6d2a2ae14",
  "checksum": 550082486861627675,
  "snapshots": [
    {
      "snapshot_version": 2,
      "id": "0001MEEQV2BQ8E5V0Q4D4V0A35",
      "timestamp": "2025-10-09T07:08:18.339715794Z",
      "schema_version": "2.0.0",
      "product": "consul",
      "process_id": "01K6FXJDTFBQQP5B3RAXRFRB1K",
      "metrics": {
        "consul.billable.nodes": {
          "key": "consul.billable.nodes",
          "value": 7,
          "mode": "write"
        },
        "consul.billable.service_instances": {
          "key": "consul.billable.service_instances",
          "value": 4,
          "mode": "write"
        }
      },
      "product_version": "1.22.0-rc1+ent",
      "license_id": "642088be-c801-c34a-bb5c-e70d4feb18fe",
      "checksum": 5213090069640891750,
      "metadata": {
        "billing_start": "2021-09-30T00:00:00Z",
        "cluster_id": "dc1"
      }
    }
  ]
}

명령이 내보내는 스냅샷의 수는 에이전트 구성의 snapshot_retention_time 매개변수에 따라 달라져요. HashiCorp로의 자동 보고가 비활성화되어 있어도 Consul은 24시간마다 스냅샷을 생성해요.

전체 옵션 목록은 consul operator utilization CLI 문서를 참고하세요.

데이터 번들을 HashiCorp로 보내기 (Send the data bundle to HashiCorp)

  1. https://portal.cloud.hashicorp.com/license-utilization/reports/create로 이동해요.
  2. Choose files를 클릭하거나 파일을 컨테이너에 드래그 앤 드롭해요. 업로드가 성공하면 HCP 사용자 인터페이스는 파일 상태를 초록색 텍스트 Uploaded로 표시해요. 업로드가 실패하면 파일 상태는 빨간색 텍스트 Failed로 표시되고 오류 정보가 포함돼요.

업로드가 실패하면 파일 서명을 수정하지 않았는지 확인하세요. 오류가 지속되면 계정 담당자에게 연락해요.

예시 페이로드 (Example payloads)

HashiCorp는 다음 사용량 데이터를 JSON 페이로드로 수집해요.

exporter_version - 라이선스 내보내기 도구의 버전

{
  "version": "2",
  "mode": "manual",
  "timestamp": "2025-10-09T10:11:36.849310301Z",
  "signature": "f15e8bd08f1801bbfa4584ec4c2fbc78567ba3b7c8d7e970a30a5ad6d2a2ae14",
  "checksum": 550082486861627675,
  "snapshots": [
    {
      "snapshot_version": 2,
      "id": "0001MEEQV2BQ8E5V0Q4D4V0A35",
      "timestamp": "2025-10-09T07:08:18.339715794Z",
      "schema_version": "2.0.0",
      "product": "consul",
      "process_id": "01K6FXJDTFBQQP5B3RAXRFRB1K",
      "metrics": {
        "consul.billable.nodes": {
          "key": "consul.billable.nodes",
          "value": 7,
          "mode": "write"
        },
        "consul.billable.service_instances": {
          "key": "consul.billable.service_instances",
          "value": 4,
          "mode": "write"
        }
      },
      "product_version": "1.22.0-rc1+ent",
      "license_id": "642088be-c801-c34a-bb5c-e70d4feb18fe",
      "checksum": 5213090069640891750,
      "metadata": {
        "billing_start": "2021-09-30T00:00:00Z",
        "cluster_id": "dc1"
      }
    }
  ]
}

더 알아보기 (Learn more)