Systemd

Supported OS

개요

이 점검은 Systemd 및 Datadog Agent를 통해 관리하는 유닛을 모니터링합니다.

  • Systemd의 상태 추적
  • Systemd가 관리하는 유닛, 서비스, 소켓 모니터링

설정

설치

Systemd 점검은 Datadog Agent 패키지에 포함되어 있어 서버에 추가로 설치할 필요가 업습니다.

구성

호스트

호스트에서 실행 중인 에이전트에 대해 이 점검을 구성하려면:

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

  2. Agent를 재시작합니다.

컨테이너화

컨테이너화된 환경에서는 Systemd 데이터 검색에 필요한 소켓 /run/systemd/private이 포함된 /run/systemd/ 폴더를 마운트합니다. 예:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock:ro \
              -v /proc/:/host/proc/:ro \
              -v /sys/fs/cgroup/:/host/sys/fs/cgroup/:ro \
              -v /run/systemd/:/host/run/systemd/:ro \
              -e DD_API_KEY=<YOUR_API_KEY> \
              datadog/agent:latest

Helm

Helm 구성에서는 컨테이너 내 systemd 관련 파일과 디렉터리에 접근할 수 있도록 볼륨과 볼륨 마운트를 정의하여 Datadog Agent가 systemd 유닛(예: kubelet.service, ssh.service)을 모니터링하도록 설정할 수 있습니다. 예를 들면 다음과 같습니다.

datadog:
  #(...)
  confd:      
    # SystemD용 사용자 정의 구성 파일
    # 예: https://github.com/DataDog/datadog-agent/blob/main/cmd/agent/dist/conf.d/systemd.d/conf.yaml.example

    systemd.yaml: |-
      init_config:
      instances:
        - unit_names:
            - kubelet.service
            - ssh.service

agents:
  # SystemD 소켓용 Custom Mounts (/run/systemd/private)
  volumeMounts:
    - name: systemd
      mountPath: /host/run/systemd/ # 볼륨이 마운트될 컨테이너 내부의 경로

  volumes:
    - name: systemd
      hostPath:
        path: /run/systemd/ # 컨테이너에 마운트될 호스트 머신의 경로

검증

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

수집한 데이터

메트릭

systemd.service.cpu_time_consumed
(gauge)
The overall cpu consumed by the service in nanoseconds (CPUUsageNSec), requires Systemd configuration CPUAccounting to be enabled and Systemd version >= 220
Shown as nanosecond
systemd.service.memory_usage
(gauge)
The memory currently used by the service in bytes (MemoryCurrent), requires Systemd configuration MemoryAccounting to be enabled
Shown as byte
systemd.service.restart_count
(gauge)
The number of times the service has been restarted due to Restart= (NRestarts), requires Systemd version >= 235
Shown as time
systemd.service.task_count
(gauge)
The current number of tasks in the service (TasksCurrent), requires Systemd configuration TasksAccounting to be enabled
Shown as task
systemd.socket.connection_accepted_count
(gauge)
The number of accepted socket connections (NAccepted)
Shown as connection
systemd.socket.connection_count
(gauge)
The current number of socket connections (NConnections)
Shown as connection
systemd.socket.connection_refused_count
(gauge)
The total number of refused socket connections (NRefused), requires Systemd version >= 239
Shown as connection
systemd.unit.active
(gauge)
Whether the unit is currently in active state
systemd.unit.loaded
(gauge)
Whether the unit is currently in loaded state
systemd.unit.monitored
(gauge)
Indicates that the unit is monitored (the value is always 1)
systemd.unit.uptime
(gauge)
The unit uptime in seconds since it’s activation
Shown as second
systemd.units_by_state
(gauge)
Sum by state to count units
Shown as unit
systemd.units_loaded_count
(gauge)
The number of loaded units
Shown as unit
systemd.units_monitored_count
(gauge)
The number of monitored units
Shown as unit
systemd.units_total
(gauge)
The total number of units
Shown as unit

Some metrics are reported only if the respective configuration are enabled:

  • systemd.service.cpu_time_consumed requires Systemd configuration CPUAccounting to be enabled
  • systemd.service.memory_usage requires Systemd configuration MemoryAccounting to be enabled
  • systemd.service.task_count requires Systemd configuration TasksAccounting to be enabled

Some metrics are only available from specific version of Systemd:

  • systemd.service.cpu_time_consumed requires Systemd v220
  • systemd.service.restart_count requires Systemd v235
  • systemd.socket.connection_refused_count requires Systemd v239

일부 메트릭은 해당 구성이 활성화된 경우에만 보고됩니다.

  • systemd.service.cpu_time_consumed을 사용하려면 Systemd 구성 CPUAccounting을 활성화해야 합니다.
  • systemd.service.memory_usage를 사용하려면 Systemd 구성 MemoryAccounting을 활성화해야 합니다.
  • systemd.service.task_count를 사용하려면 Systemd 구성 TasksAccounting을 활성화해야 합니다.

일부 메트릭은 Systemd의 특정 버전에서만 사용할 수 있습니다.

  • systemd.service.cpu_time_consumed를 사용하려면 Systemd v220이 필요합니다.
  • systemd.service.restart_count를 사용하려면 Systemd v235가 필요합니다.
  • systemd.socket.connection_refused_count를 사용하려면 Systemd v239가 필요합니다.

이벤트

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

서비스 점검

systemd.can_connect

Returns OK if Systemd is reachable, CRITICAL otherwise.

Statuses: ok, critical

systemd.system.state

Returns OK if Systemd’s system state is running. Returns CRITICAL if the state is degraded, maintenance, or stopping. Returns UNKNOWN if the state is initializing, starting, or other.

Statuses: ok, critical, unknown

systemd.unit.state

Returns OK if the unit active state is active. Returns CRITICAL if the state is inactive, deactivating, or failed. Returns UNKNOWN if the state is activating or other.

Statuses: ok, critical, unknown

systemd.unit.substate

Returns OK CRITICAL or UNKNOWN based on the substate of the unit and the user-provided mapping in systemd.d/conf.yaml.

Statuses: ok, critical, unknown

트러블슈팅

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