자동 라이선스 이용 보고

자동 라이선스 이용 보고 (Automated license utilization reporting)

엔터프라이즈: 이 기능은 노마드 엔터프라이즈를 필요로 해요.

이 페이지는 HashiCorp가 엔터프라이즈 제품 사용량과 라이선스 이용을 모니터링하기 위해 수집하는 데이터에 대한 정보를 제공해요. 자동 보고를 활성화하거나 옵트아웃하는 방법을 배우고, 샘플 페이로드와 로그를 검토해요.

출처: 문서

본문

소개

자동 보고는 직접 수집하고 보고할 필요 없이 제품 및 라이선스 이용 데이터를 HashiCorp로 보내요.

계약에서 정의한 대로 라이선스 이용을 검증하는 데 필요한 데이터를 공유해요. 상세한 제품 사용 메트릭은 기능 로드맵에도 정보를 제공해요. 이들은 계산된 메트릭으로 구성되며 개인 식별 정보(PII)나 다른 민감한 정보를 절대 포함하지 않아요. 전체 메트릭 목록을 검토해 확인할 수 있어요. 데이터에 대한 우려가 있으면 계정 관리자에게 알려 주세요.

자동 보고는 보안의 단방향 HTTPS API를 사용해 HashiCorp와 데이터를 공유하며, 보고서를 제출할 때마다 제품 로그에 감사 가능한 기록을 만들어요. 보고 프로세스는 GDPR을 준수하며 약 24시간마다 한 번 보고서를 제출해요.

자동 보고 활성화

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

1. 포트 443에서 아웃바운드 HTTPS 트래픽 허용

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

  • 100.20.70.12
  • 35.166.5.222

2. 업그레이드

라이선스 이용 보고를 지원하는 릴리스로 업그레이드해요. 이 릴리스에는 다음이 포함돼요:

  • Nomad v1.7.0 이상

3. 로그 확인

자동 라이선스 이용 보고는 약 24시간 내에 데이터 보내기를 시작해요. 데이터가 성공적으로 전송되었다는 기록이 제품 로그에 있는지 확인해 주세요.

로그 확인 방법 안내.

[DEBUG] core.reporting: beginning snapshot export
[DEBUG] core.reporting: creating payload
[DEBUG] core.reporting: marshalling payload to json
[DEBUG] core.reporting: generating authentication headers
[DEBUG] core.reporting: creating request
[DEBUG] core.reporting: sending request
[DEBUG] core.reporting: performing request: method=POST url=https://reporting.hashicorp.services
[DEBUG] core.reporting: recording audit record
[INFO]  reporting: Report sent: auditRecord={"payload":{"payload_version":"1","license_id":"d2cdd857-4202-5a45-70a6-e4b531050c34","product":"nomad","product_version":"1.6.0","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":"nomad","metrics":{"nomad.billable.nodes":{"key":"nomad.billable.nodes","kind":"counter","mode":"write","value":33}}}]}}
[DEBUG] completed recording audit record
[DEBUG] core.reporting: export finished successfully

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

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

이 경우 네트워크를 재구성해 이그레스를 허용하고 24시간 후에 다시 확인해 주세요.

옵트아웃

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

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

제품 사용 메트릭은 라이선스 이용 보고와 별개로 비활성화할 수 있어요. 따라서 자동 라이선스 보고에서 제품 사용 메트릭을 제외하거나, 오프라인 보고서에 제품 사용 메트릭을 포함할 수 있어요.

자동 보고를 옵트아웃하는 방법은 HCL 구성 또는 환경 변수 두 가지가 있어요.

HCL 구성의 경우 노마드 서버 에이전트 구성 파일에서 reporting 블록을 사용해요.

reporting {
  license {
    enabled = false
  }
}

reporting.license.enabled 옵션은 자동 보고를 켜고 끄는 옵션이에요. 노마드는 수동 보고를 위해 라이선스 이용 데이터를 여전히 수집해요.

자동 및 오프라인 보고 모두에서 상세 제품 사용 메트릭을 비활성화하려면 reporting.disable_product_usage_reporting 옵션을 사용해요.

reporting {
  disable_product_usage_reporting = true
}

대안으로 노마드 서버 에이전트 환경에서 다음 환경 변수를 사용할 수 있어요.

export OPTOUT_LICENSE_REPORTING=true
export OPTOUT_PRODUCT_USAGE_REPORTING=true

구성 파일과 환경 변수가 다르다면 환경 변수가 우선해요.

구성을 변경한 뒤 "Run an agent" 지침에 따라 노마드 서버를 다시 시작해 변경사항을 적용해요.

노마드 에이전트는 시작 시 설정을 확인하는 로그를 출력해요. 이 예시는 자동 보고는 활성화되어 있지만 제품 사용 메트릭은 없는 상태를 보여줘요.

[INFO]  nomad.reporting: reporting agent is enabled and configured
[DEBUG] nomad.reporting: product usage reporting disabled via agent configuration
[INFO]  nomad.reporting: product usage reporting is disabled; usage metrics data will not be collected

옵트아웃 후 약 24시간 뒤에 제품 로그를 확인해 시스템이 보고서를 보내려 하지 않는지, 또는 상세 사용 메트릭이 모두 0으로 보고되는지 확인할 수도 있어요.

전체 메트릭 목록

이 표는 우리가 수집하는 모든 메트릭을 나열해요.

제품 사용 메트릭이 비활성화되면 nomad.billable.* 메트릭만 수집돼요.

값은 미리 결정된 값에 대해 모두 정수예요. 독점 정보를 식별할 수 있는 문자열은 수집하지 않아요.

Metadata Key Use Cases Description
nomad.nonprod_server licensing 스냅샷이 비프로덕션 서버에서 왔음을 표시
Metrics Key Description
acl.auth.method.count ACL 인증 방법
acl.auth.method.jwt.count JWT 유형의 ACL 인증 방법
acl.auth.method.oidc.count OIDC 유형의 ACL 인증 방법
acl.policy.count ACL 정책
acl.role.count ACL 역할
acl.token.count ACL 토큰
alloc.count 모든 할당
alloc.status.complete.count 클라이언트 상태가 "complete"인 할당
alloc.status.failed.count 클라이언트 상태가 "failed"인 할당
alloc.status.lost.count 클라이언트 상태가 "lost"인 할당
alloc.status.pending.count 클라이언트 상태가 "pending"인 할당
alloc.status.running.count 클라이언트 상태가 "running"인 할당
alloc.status.unknown.count 클라이언트 상태가 "unknown"인 할당
alloc.task.count 할당의 모든 작업
alloc.task.running.count 할당의 실행 중인 작업
client.count 클러스터의 클라이언트 노드
client.device.gpu.amd.count "amd" gpu 장치 드라이버가 있는 클라이언트
client.device.gpu.nvidia.count "nvidia" gpu 장치 드라이버가 있는 클라이언트
client.device.gpu.other.count 알 수 없는 공급업체의 gpu 장치 드라이버가 있는 클라이언트
client.device.other.other.count 다른 장치 드라이버가 있는 클라이언트
client.device.usb.other.count 알 수 없는 공급업체의 usb 장치 드라이버가 있는 클라이언트
client.driver.docker.count "docker" 드라이버가 있는 클라이언트
client.driver.exec.count "exec" 드라이버가 있는 클라이언트
client.driver.exec2.count "exec2" 드라이버가 있는 클라이언트
client.driver.java.count "java" 드라이버가 있는 클라이언트
client.driver.nomad-driver-virt.count "nomad-driver-virt" 드라이버가 있는 클라이언트
client.driver.other.count 다른 드라이버가 있는 클라이언트
client.driver.pledge.count "pledge" 드라이버가 있는 클라이언트
client.driver.podman.count "podman" 드라이버가 있는 클라이언트
client.driver.qemu.count "qemu" 드라이버가 있는 클라이언트
client.driver.raw_exec.count "raw_exec" 드라이버가 있는 클라이언트
client.plugin.cni.unique.count 클라이언트 노드의 고유 CNI 플러그인
client.plugin.driver.unique.count 클라이언트 노드의 고유 작업 드라이버
client.plugin.host_volume.unique.count 클라이언트 노드의 고유 호스트 볼륨 플러그인
client.plugin.secret.unique.count 클라이언트 노드의 고유 시크릿 플러그인
client.resources.compute 총 클라이언트 컴퓨트
client.resources.core.count 총 클라이언트 CPU 코어
client.resources.memory 총 클라이언트 메모리(MB)
client.vault.enabled.count Vault가 활성화된 클라이언트
job.count 모든 작업
job.device.gpu.amd.count "amd" gpu 장치 드라이버가 있는 작업
job.device.gpu.nvidia.count "nvidia" gpu 장치 드라이버가 있는 작업
job.device.gpu.other.count 알 수 없는 공급업체의 gpu 장치 드라이버가 있는 작업
job.device.other.other.count 다른 장치 드라이버가 있는 작업
job.device.usb.other.count 알 수 없는 공급업체의 usb 장치 드라이버가 있는 작업
job.driver.docker.count 작업 명세에서 "docker" 드라이버를 사용하는 작업
job.driver.exec.count 작업 명세에서 "exec" 드라이버를 사용하는 작업
job.driver.exec2.count 작업 명세에서 "exec2" 드라이버를 사용하는 작업
job.driver.java.count 작업 명세에서 "java" 드라이버를 사용하는 작업
job.driver.nomad-driver-virt.count 작업 명세에서 "nomad-driver-virt" 드라이버를 사용하는 작업
job.driver.other.count 다른 드라이버를 사용하는 작업
job.driver.pledge.count 작업 명세에서 "pledge" 드라이버를 사용하는 작업
job.driver.podman.count 작업 명세에서 "podman" 드라이버를 사용하는 작업
job.driver.qemu.count 작업 명세에서 "qemu" 드라이버를 사용하는 작업
job.driver.raw_exec.count 작업 명세에서 "raw_exec" 드라이버를 사용하는 작업
job.group.count 작업의 태스크 그룹
job.network.cni.args.count 사용자 정의 CNI args가 있는 작업의 네트워크
job.network.mode.bridge.count "bridge" 모드의 작업 네트워크
job.network.mode.cni.count "cni" 모드의 작업 네트워크
job.network.mode.host.count "host" 모드의 작업 네트워크
job.network.mode.other.count 다른 모드의 작업 네트워크
job.parameterized.count 파라미터화된 작업
job.parameterized.dispatched.count 디스패치된 파라미터화된 작업
job.periodic.count 주기 작업
job.periodic.dispatched.count 디스패치된 주기 작업
job.service.consul.connect.count 작업의 Connect 서비스
job.service.consul.count 작업의 Consul 서비스
job.service.nomad.count 작업의 Nomad 제공자 서비스
job.task.identity.count identity가 활성화된 작업의 작업
job.task.template.count 템플릿이 있는 작업의 작업
job.task.vault.count Vault가 활성화된 작업의 작업
job.type.batch.count "batch" 유형의 작업
job.type.service.count "service" 유형의 작업
job.type.sysbatch.count "sysbatch" 유형의 작업
job.type.system.count "system" 유형의 작업
job.volume.csi.count 작업의 CSI 볼륨
job.volume.host.count 작업의 호스트 볼륨
job.volume.sticky.count 작업의 스티키 볼륨
namespace.count 네임스페이스
namespace.quotas.count 쿼터
node.cpu.arch.amd64.count "amd64" CPU 아키텍처의 클라이언트
node.cpu.arch.arm64.count "arm64" CPU 아키텍처의 클라이언트
node.cpu.arch.other.count 다른 CPU 아키텍처의 클라이언트
node.cpu.arch.s390x.count "s390x" CPU 아키텍처의 클라이언트
node.cpu.arch.unique.count 클라이언트 노드의 고유 CPU 아키텍처
node.kernel.name.aix.count "aix" 커널의 클라이언트
node.kernel.name.darwin.count "darwin" 커널의 클라이언트
node.kernel.name.freebsd.count "freebsd" 커널의 클라이언트
node.kernel.name.linux.count "linux" 커널의 클라이언트
node.kernel.name.other.count 다른 커널의 클라이언트
node.kernel.name.plan9.count "plan9" 커널의 클라이언트
node.kernel.name.solaris.count "solaris" 커널의 클라이언트
node.kernel.name.unique.count 클라이언트 노드의 고유 커널
node.os.name.alpine.count "alpine" 운영 체제의 클라이언트
node.os.name.amazon.count "amazon" 운영 체제의 클라이언트
node.os.name.arch.count "arch" 운영 체제의 클라이언트
node.os.name.centos.count "centos" 운영 체제의 클라이언트
node.os.name.cloudlinux.count "cloudlinux" 운영 체제의 클라이언트
node.os.name.coreos.count "coreos" 운영 체제의 클라이언트
node.os.name.darwin.count "darwin" 운영 체제의 클라이언트
node.os.name.debian.count "debian" 운영 체제의 클라이언트
node.os.name.fedora.count "fedora" 운영 체제의 클라이언트
node.os.name.gentoo.count "gentoo" 운영 체제의 클라이언트
node.os.name.opensuse.count "opensuse" 운영 체제의 클라이언트
node.os.name.oracle.count "oracle" 운영 체제의 클라이언트
node.os.name.other.count 다른 운영 체제의 클라이언트
node.os.name.raspbian.count "raspbian" 운영 체제의 클라이언트
node.os.name.redhat.count "redhat" 운영 체제의 클라이언트
node.os.name.suse.count "suse" 운영 체제의 클라이언트
node.os.name.ubuntu.count "ubuntu" 운영 체제의 클라이언트
node.os.name.unique.count 클라이언트 노드의 고유 운영 체제
node.os.name.windows.count "windows" 운영 체제의 클라이언트
node.pool.count 노드 풀
node.status.disconnected.count 상태가 "disconnected"인 클라이언트
node.status.down.count 상태가 "down"인 클라이언트
node.status.initializing.count 상태가 "initializing"인 클라이언트
node.status.ready.count 상태가 "ready"인 클라이언트
node.status.unknown.count 상태가 "unknown"인 클라이언트
nomad.billable.clients 클러스터의 클라이언트 노드 수
nomad.billable.cores.s390x 클러스터의 활성 클라이언트 s390x CPU 코어
nomad.billable.cores.total 클러스터의 활성 클라이언트 CPU 코어
plugin.csi.unique.count 고유 CSI 플러그인
policy.sentinel.count Sentinel 정책
sentinel.enforcement.advisory.count "advisory" 시행 수준의 Sentinel 정책
sentinel.enforcement.hard-mandatory.count "hard-mandatory" 시행 수준의 Sentinel 정책
sentinel.enforcement.soft-mandatory.count "soft-mandatory" 시행 수준의 Sentinel 정책
sentinel.scope.submit-csi-volume.count "submit-csi-volume" 범위의 Sentinel 정책
sentinel.scope.submit-host-volume.count "submit-host-volume" 범위의 Sentinel 정책
sentinel.scope.submit-job.count "submit-job" 범위의 Sentinel 정책
task.device.gpu.amd.count "amd" gpu 장치 드라이버의 작업
task.device.gpu.nvidia.count "nvidia" gpu 장치 드라이버의 작업
task.device.gpu.other.count 알 수 없는 공급업체의 gpu 장치 드라이버의 작업
task.device.other.other.count 다른 장치 드라이버의 작업
task.device.usb.other.count 알 수 없는 공급업체의 usb 장치 드라이버의 작업
task.driver.docker.count "docker" 드라이버의 할당된 작업
task.driver.exec.count "exec" 드라이버의 할당된 작업
task.driver.exec2.count "exec2" 드라이버의 할당된 작업
task.driver.java.count "java" 드라이버의 할당된 작업
task.driver.nomad-driver-virt.count "nomad-driver-virt" 드라이버의 할당된 작업
task.driver.other.count 다른 드라이버의 작업
task.driver.pledge.count "pledge" 드라이버의 할당된 작업
task.driver.podman.count "podman" 드라이버의 할당된 작업
task.driver.qemu.count "qemu" 드라이버의 할당된 작업
task.driver.raw_exec.count "raw_exec" 드라이버의 할당된 작업
variable.count 노마드 변수
variable.lock.count 노마드 변수 잠금
volume.csi.capacity 모든 CSI 볼륨의 용량(MB)
volume.csi.count "csi" 볼륨 수
volume.dhv.capacity 모든 동적 호스트 볼륨의 용량(MB)
volume.dhv.plugin.other.count 비표준 플러그인의 동적 호스트 볼륨
volume.dynamic.count "dynamic" 볼륨 수
volume.static.count "static" 볼륨 수

예시 페이로드

HashiCorp는 이용 데이터를 다음 JSON 형식으로 수집해요.

{
  "version": "2",
  "mode": "manual",
  "timestamp": "2025-09-26T17:20:41.189292719Z",
  "signature": "...",
  "checksum": ...,
  "snapshots": [
    {
      "snapshot_version": 2,
      "id": "0001MDDJT442VWX01R4K21A22D",
      "timestamp": "2025-09-26T13:20:04.598859749-04:00",
      "schema_version": "2.1.0",
      "product": "nomad",
      "process_id": "01K63GH92XVS1V95RM7509N303",
      "metrics": {
        ...
        "nomad.billable.clients": {
          "key": "nomad.billable.clients",
          "value": 25,
          "mode": "write"
        },
        ...
      },
      "product_version": "1.10.6",
      "license_id": "...",
      "checksum": ...,
      "metadata": {}
    }
  ]
}

전체 페이로드는 서버 로그에서, 또는 nomad operator utilization 명령을 실행해 검사할 수 있어요.

더 알아보기 (Learn more)