자동 라이선스 이용 보고
자동 라이선스 이용 보고 (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 명령을 실행해 검사할 수 있어요.