FoundationDB

Supported OS Mac OS Windows

통합 버전3.3.1

개요

이 점검은 Datadog Agent를 통해 FoundationDB를 모니터링합니다. FoundationDB 클러스터의 상태를 확인하는 것 외에도 다양한 메트릭을 수집하고, 필요시 FoundationDB 트랜잭션 로그도 수집합니다.

설정

점검 및 메트릭은 FoundationDB 클러스터 전체에 적용되며, 하나의 호스트에만 설치해야 합니다. 해당 호스트는 FoundationDB가 실행 중인 호스트일 필요는 없으며, FoundationDB에 접근 권한이 있는 호스트이면 됩니다.

설치

FoundationDB 점검은 Datadog Agent 패키지에 포함되어 있지만, FoundationDB 클라이언트가 설치되어 있어야 합니다.

설정

호스트

호스트에서 실행 중인 에이전트에 이 점검을 구성하는 방법:

메트릭 수집
  1. FoundationDB 메트릭 수집을 시작하려면 Agent 구성 디렉터리의 루트에서 conf.d/ 폴더에 있는 foundationdb.d/conf.yaml 파일을 편집하세요. 사용 가능한 모든 구성 옵션은 샘플 foundationdb.d/conf.yaml을 참고하세요.

  2. 확인할 클러스터는 기본 위치에서 클러스터 파일을 검색하여 결정합니다. 클러스터 파일이 다른 위치에 있는 경우, cluster_file 속성을 설정하세요. 체크 인스턴스당 하나의 클러스터만 모니터링할 수 있습니다.

  3. 클러스터가 TLS를 사용하도록 구성된 경우(https://www.foundationdb.org/), 구성에 추가 속성을 설정해야 합니다. 이 속성들은 해당 클러스터에 연결하기 위해 fdbcli에 제공된 TLS 관련 옵션 이름을 따릅니다.

  4. Agent를 다시 시작합니다.

로그 수집

FoundationDB는 기본적으로 XML 로그를 기록하지만, Datadog 통합은 JSON 로그를 예상합니다. 따라서 FoundationDB 구성을 변경해야 합니다.

  1. foundationdb.conf파일을 찾은 다음 fdbserver 섹션에서 json 값을 얻기 위해 키 trace_format을 추가하거나 변경합니다. 또한, logdir를 기록해 둡니다.

    [fdbserver]
    ...
    logdir = /var/log/foundationdb
    trace_format = json
    
  2. 변경 사항이 적용되도록 FoundationDB 서버를 재시작합니다. logdir에 있는 로그가 JSON으로 작성되었는지 확인합니다.

  3. datadog.yaml 파일에서 로그 수집이 활성화되어 있는지 확인합니다.

    logs_enabled: true
    
  4. foundationdb.d/conf.yaml 파일의 logs 섹션에서 주석 처리를 해제하고 경로를 FoundationDB 구성 파일에 있는 경로로 설정한 후 *.json을 추가합니다.

    logs:
      - type: file
        path: /var/log/foundationdb/*.json
        service: foundationdb
        source: foundationdb
    
  5. Datadog Agent가 디렉터리 목록을 조회하고 파일을 읽을 수 있는 권한을 가지고 있는지 확인하세요.

  6. Datadog Agent를 재시작합니다.

컨테이너화된 환경

컨테이너화된 환경의 경우 Autodiscovery 통합 템플릿에 아래 파라미터를 적용하는 방법이 안내되어 있습니다.

메트릭 수집
파라미터
<INTEGRATION_NAME>foundationdb
<INIT_CONFIG>비어 있음 또는 {}
<INSTANCE_CONFIG>{}
로그 수집

Datadog Agent에서는 로그 수집이 기본적으로 비활성화되어 있습니다. 이를 활성화하려면 Kubernetes 로그 수집을 참고하세요.

파라미터
<LOG_CONFIG>{"source": "foundationdb", "service": "<SERVICE_NAME>"}

검증

Agent 상태 하위 명령을 실행하고 Checks 섹션에서 foundationdb를 찾습니다.

수집한 데이터

Metrics

foundationdb.clients.connected
(gauge)
클라이언트 버전별로 태그되고 연결된 클라이언트 수
connection으로 표시됨
foundationdb.cluster_generation
(gauge)
foundationdb.coordinators
(gauge)
도달 가능성별로 태그된 코디네이터 수
instance로 표시됨
foundationdb.data.average_partition_size_bytes
(gauge)

byte로 표시됨
foundationdb.data.least_operating_space_bytes_log_server
(gauge)

byte로 표시됨
foundationdb.data.moving_data.in_flight_bytes
(gauge)

byte로 표시됨
foundationdb.data.moving_data.in_queue_bytes
(gauge)

byte로 표시됨
foundationdb.data.moving_data.total_written_bytes
(gauge)

byte로 표시됨
foundationdb.data.partitions_count
(gauge)
foundationdb.data.system_kv_size_bytes
(gauge)

byte로 표시됨
foundationdb.data.total_disk_used_bytes
(gauge)

byte로 표시됨
foundationdb.data.total_kv_size_bytes
(gauge)

byte로 표시됨
foundationdb.datacenter_lag.seconds
(gauge)

second로 표시됨
foundationdb.degraded_processes
(gauge)

process로 표시됨
foundationdb.excluded_machines
(gauge)

host로 표시됨
foundationdb.excluded_processes
(gauge)

process로 표시됨
foundationdb.fault_tolerance.max_zone_failures_without_losing_availability
(gauge)

location으로 표시됨
foundationdb.fault_tolerance.max_zone_failures_without_losing_data
(gauge)

location으로 표시됨
foundationdb.instances
(count)

instance로 표시됨
foundationdb.latency_probe.batch_priority_transaction_start_seconds
(gauge)
배치 우선순위 트랜잭션 시작 시간(초)
second로 표시됨
foundationdb.latency_probe.commit_seconds
(gauge)

second로 표시됨
foundationdb.latency_probe.immediate_priority_transaction_start_seconds
(gauge)

second로 표시됨
foundationdb.latency_probe.read_seconds
(gauge)

second로 표시됨
foundationdb.latency_probe.transaction_start_seconds
(gauge)

second로 표시됨
foundationdb.machines
(gauge)

host로 표시됨
foundationdb.maintenance_seconds_remaining
(gauge)

second로 표시됨
foundationdb.process.cpu.usage_cores
(gauge)

core로 표시됨
foundationdb.process.disk.busy
(gauge)

fraction으로 표시됨
foundationdb.process.disk.free_bytes
(gauge)

byte로 표시됨
foundationdb.process.disk.reads.hz
(gauge)

read로 표시됨
foundationdb.process.disk.total_bytes
(gauge)

byte로 표시됨
foundationdb.process.disk.writes.hz
(gauge)

write로 표시됨
foundationdb.process.memory.available_bytes
(gauge)

byte로 표시됨
foundationdb.process.memory.limit_bytes
(gauge)

byte로 표시됨
foundationdb.process.memory.unused_allocated_memory
(gauge)

byte로 표시됨
foundationdb.process.memory.used_bytes
(gauge)

byte로 표시됨
foundationdb.process.network.connection_errors.hz
(gauge)

error로 표시됨
foundationdb.process.network.connections_closed.hz
(gauge)

connection으로 표시됨
foundationdb.process.network.connections_established.hz
(gauge)

connection으로 표시됨
foundationdb.process.network.current_connections
(gauge)

connection으로 표시됨
foundationdb.process.network.megabits_received.hz
(gauge)
foundationdb.process.network.megabits_sent.hz
(gauge)
foundationdb.process.network.tls_policy_failures.hz
(gauge)

error로 표시됨
foundationdb.process.role.bytes_queried.counter
(count)

query로 표시됨
foundationdb.process.role.bytes_queried.hz
(gauge)

query로 표시됨
foundationdb.process.role.commit_latency_statistics.count
(count)

millisecond로 표시됨
foundationdb.process.role.commit_latency_statistics.max
(gauge)

millisecond로 표시됨
foundationdb.process.role.commit_latency_statistics.min
(gauge)

millisecond로 표시됨
foundationdb.process.role.commit_latency_statistics.p25
(gauge)

millisecond로 표시됨
foundationdb.process.role.commit_latency_statistics.p90
(gauge)

millisecond로 표시됨
foundationdb.process.role.commit_latency_statistics.p99
(gauge)

millisecond로 표시됨
foundationdb.process.role.data_lag.seconds
(gauge)

second로 표시됨
foundationdb.process.role.durability_lag.seconds
(gauge)

second로 표시됨
foundationdb.process.role.durable_bytes.counter
(count)

byte로 표시됨
foundationdb.process.role.durable_bytes.hz
(gauge)

byte로 표시됨
foundationdb.process.role.finished_queries.counter
(count)

query로 표시됨
foundationdb.process.role.finished_queries.hz
(gauge)

query로 표시됨
foundationdb.process.role.grv_latency_statistics.default.count
(count)

millisecond로 표시됨
foundationdb.process.role.grv_latency_statistics.default.max
(gauge)

millisecond로 표시됨
foundationdb.process.role.grv_latency_statistics.default.min
(gauge)

millisecond로 표시됨
foundationdb.process.role.grv_latency_statistics.default.p25
(gauge)

millisecond로 표시됨
foundationdb.process.role.grv_latency_statistics.default.p90
(gauge)

millisecond로 표시됨
foundationdb.process.role.grv_latency_statistics.default.p99
(gauge)

millisecond로 표시됨
foundationdb.process.role.input_bytes.counter
(count)

byte로 표시됨
foundationdb.process.role.input_bytes.hz
(gauge)

byte로 표시됨
foundationdb.process.role.keys_queried.counter
(count)

key로 표시됨
foundationdb.process.role.keys_queried.hz
(gauge)

key로 표시됨
foundationdb.process.role.kvstore_available_bytes
(gauge)

byte로 표시됨
foundationdb.process.role.kvstore_free_bytes
(gauge)

byte로 표시됨
foundationdb.process.role.kvstore_inline_keys
(gauge)

key로 표시됨
foundationdb.process.role.kvstore_total_bytes
(gauge)

byte로 표시됨
foundationdb.process.role.kvstore_total_nodes
(gauge)

byte로 표시됨
foundationdb.process.role.kvstore_total_size
(gauge)

byte로 표시됨
foundationdb.process.role.kvstore_used_bytes
(gauge)

byte로 표시됨
foundationdb.process.role.local_rate
(gauge)

unit으로 표시됨
foundationdb.process.role.low_priority_queries.counter
(count)

query로 표시됨
foundationdb.process.role.low_priority_queries.hz
(gauge)

query로 표시됨
foundationdb.process.role.mutation_bytes.counter
(count)

byte로 표시됨
foundationdb.process.role.mutation_bytes.hz
(gauge)

byte로 표시됨
foundationdb.process.role.mutations.counter
(count)

item으로 표시됨
foundationdb.process.role.mutations.hz
(gauge)

item으로 표시됨
foundationdb.process.role.query_queue_max
(gauge)

query로 표시됨
foundationdb.process.role.queue_disk_available_bytes
(gauge)

byte로 표시됨
foundationdb.process.role.queue_disk_total_bytes
(gauge)

byte로 표시됨
foundationdb.process.role.queue_length
(gauge)

item으로 표시됨
foundationdb.process.role.read_latency_statistics.count
(count)

millisecond로 표시됨
foundationdb.process.role.read_latency_statistics.max
(gauge)

millisecond로 표시됨
foundationdb.process.role.read_latency_statistics.min
(gauge)

millisecond로 표시됨
foundationdb.process.role.read_latency_statistics.p25
(gauge)

millisecond로 표시됨
foundationdb.process.role.read_latency_statistics.p90
(gauge)

millisecond로 표시됨
foundationdb.process.role.read_latency_statistics.p99
(gauge)

millisecond로 표시됨
foundationdb.process.role.stored_bytes
(gauge)

byte로 표시됨
foundationdb.process.role.total_queries.counter
(count)

query로 표시됨
foundationdb.process.role.total_queries.hz
(gauge)

query로 표시됨
foundationdb.processes
(gauge)

process로 표시됨
foundationdb.processes_per_role
(gauge)

process로 표시됨
foundationdb.processes_per_role.cluster_controller
(gauge)

process로 표시됨
foundationdb.processes_per_role.coordinator
(gauge)

process로 표시됨
foundationdb.processes_per_role.data_distributor
(gauge)

process로 표시됨
foundationdb.processes_per_role.log
(gauge)

process로 표시됨
foundationdb.processes_per_role.master
(gauge)

process로 표시됨
foundationdb.processes_per_role.proxy
(gauge)

process로 표시됨
foundationdb.processes_per_role.ratekeeper
(gauge)

process로 표시됨
foundationdb.processes_per_role.resolver
(gauge)

process로 표시됨
foundationdb.processes_per_role.storage
(gauge)

process로 표시됨
foundationdb.qos.batch_transactions_per_second_limit
(gauge)

transaction으로 표시됨
foundationdb.qos.released_transactions_per_second
(gauge)

transaction으로 표시됨
foundationdb.qos.transactions_per_second_limit
(gauge)

transaction으로 표시됨
foundationdb.qos.worst_queue_bytes_log_server
(gauge)

byte로 표시됨
foundationdb.qos.worst_queue_bytes_storage_server
(gauge)

byte로 표시됨
foundationdb.workload.bytes.read.counter
(count)

byte로 표시됨
foundationdb.workload.bytes.read.hz
(gauge)

byte로 표시됨
foundationdb.workload.bytes.written.counter
(count)

byte로 표시됨
foundationdb.workload.bytes.written.hz
(gauge)

byte로 표시됨
foundationdb.workload.keys.read.counter
(count)

key로 표시됨
foundationdb.workload.keys.read.hz
(gauge)

key로 표시됨
foundationdb.workload.operations.location_requests.counter
(count)

operation으로 표시됨
foundationdb.workload.operations.location_requests.hz
(gauge)

operation으로 표시됨
foundationdb.workload.operations.low_priority_reads.counter
(count)

operation으로 표시됨
foundationdb.workload.operations.low_priority_reads.hz
(gauge)

operation으로 표시됨
foundationdb.workload.operations.memory_errors.counter
(count)

operation으로 표시됨
foundationdb.workload.operations.memory_errors.hz
(gauge)

operation으로 표시됨
foundationdb.workload.operations.read_requests.counter
(count)

operation으로 표시됨
foundationdb.workload.operations.read_requests.hz
(gauge)

operation으로 표시됨
foundationdb.workload.operations.reads.counter
(count)

operation으로 표시됨
foundationdb.workload.operations.reads.hz
(gauge)

operation으로 표시됨
foundationdb.workload.operations.writes.counter
(count)

operation으로 표시됨
foundationdb.workload.operations.writes.hz
(gauge)

operation으로 표시됨
foundationdb.workload.transactions.committed.counter
(count)

transaction으로 표시됨
foundationdb.workload.transactions.committed.hz
(gauge)

transaction으로 표시됨
foundationdb.workload.transactions.conflicted.counter
(count)

transaction으로 표시됨
foundationdb.workload.transactions.conflicted.hz
(gauge)

transaction으로 표시됨
foundationdb.workload.transactions.rejected_for_queued_too_long.counter
(count)

transaction으로 표시됨
foundationdb.workload.transactions.rejected_for_queued_too_long.hz
(gauge)

transaction으로 표시됨
foundationdb.workload.transactions.started.counter
(count)

transaction으로 표시됨
foundationdb.workload.transactions.started.hz
(gauge)

transaction으로 표시됨
foundationdb.workload.transactions.started_batch_priority.counter
(count)

transaction으로 표시됨
foundationdb.workload.transactions.started_batch_priority.hz
(gauge)

transaction으로 표시됨
foundationdb.workload.transactions.started_default_priority.counter
(count)

transaction으로 표시됨
foundationdb.workload.transactions.started_default_priority.hz
(gauge)

transaction으로 표시됨
foundationdb.workload.transactions.started_immediate_priority.counter
(count)

transaction으로 표시됨
foundationdb.workload.transactions.started_immediate_priority.hz
(gauge)

transaction으로 표시됨

서비스 점검

foundationdb.check

클러스터 상태를 조회하는 동안 오류가 발생하면 critical을 반환하고, 프로세스 상태가 저하된 경우 warning을 반환하며, 그렇지 않으면 ok를 반환합니다.

Statuses: ok, warning, critical

이벤트

FoundationDB 점검은 이벤트를 포함하지 않습니다.

트러블슈팅

도움이 필요하세요? Datadog 지원 팀에 문의하세요.