본문 바로가기
WIKI 기술 지식 베이스

권한 문제 (Permission Issues)

원문 보기 위키 갱신

Agent가 호스트에서 데이터를 수집하려면 특정 권한이 필요해요. 가장 흔한 권한 문제와 해결 방법을 알려드릴게요.

출처: 문서

본문

주어진 호스트에서 Datadog Agent를 실행할 때 Agent가 제대로 로깅하지 못하게 하는 몇 가지 권한 관련 문제가 발생할 수 있어요. 예를 들면:

IOError: [Errno 13] Permission denied: '/var/log/datadog/supervisord.log'

Agent의 로그 파일과 해당 파일이 들어 있는 디렉터리가 Datadog Agent 사용자인 dd-agent 소유인지 확인하세요. 그렇지 않으면 Agent가 해당 파일에 로그 항목을 쓸 수 없어요. Unix 시스템에서 파일 소유권 정보를 표시하는 명령어는 아래와 같아요:

ls -l /var/log/datadog/

total 52300
-rw-r--r-- 1 dd-agent dd-agent 5742334 Jul 31 11:49 collector.log
-rw-r--r-- 1 dd-agent dd-agent 10485467 Jul 28 02:45 collector.log.1
-rw-r--r-- 1 dd-agent dd-agent 1202067 Jul 31 11:48 dogstatsd.log
-rw-r--r-- 1 dd-agent dd-agent 10485678 Jul 28 07:04 dogstatsd.log.1
-rw-r--r-- 1 dd-agent dd-agent 4680625 Jul 31 11:48 forwarder.log
-rw-r--r-- 1 dd-agent dd-agent 10485638 Jul 28 07:09 forwarder.log.1
-rw-r--r-- 1 dd-agent dd-agent 1476 Jul 31 11:37 jmxfetch.log
-rw-r--r-- 1 dd-agent dd-agent 31916 Jul 31 11:37 supervisord.log
-rw-r--r-- 1 dd-agent dd-agent 110424 Jul 31 11:48 trace-agent.log
-rw-r--r-- 1 dd-agent dd-agent 10000072 Jul 28 08:29 trace-agent.log.1

이 파일들이 dd-agent 사용자 소유가 아니라면, 아래 명령어로 소유권을 변경한 뒤 Agent를 재시작하세요:

sudo chown -R dd-agent:dd-agent /var/log/datadog/

Agent 로그 위치에 대한 자세한 정보.

Agent 소켓 권한 문제

Agent를 시작할 때 다음과 같은 소켓 권한 문제가 나타날 수 있어요:

Starting Datadog Agent (using supervisord):Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)

언뜻 보면 Agent가 적절한 소켓에 연결하지 못하는 것처럼 보일 수 있는데, 이미 사용 중이라서요. 하지만 남아 있는 Agent 프로세스가 없다는 것을 다시 확인했고 적절한 포트를 Agent가 사용할 수 있다고 확인해도 위 오류가 계속 나타날 때가 있어요.

Linux 호스트의 경우 /opt/datadog-agent/run 디렉터리가 dd-agent 사용자 소유여야 올바르게 시작돼요. 드물게 이 디렉터리의 소유권이 dd-agent가 아닌 다른 것으로 바뀔 수 있어요. 이러면 Agent를 시작할 때 위 오류가 발생해요. 다음 명령어로 이 디렉터리의 소유권을 다시 확인하세요:

ls -al /opt/datadog-agent/run

파일 소유자가 dd-agent가 아니라면, 다음 명령어로 수정해요:

sudo chown -R dd-agent:dd-agent /opt/datadog-agent/run

이 변경 후 Agent 시작 명령어로 Agent를 성공적으로 시작할 수 있을 거예요. 이 단계를 취했는데도 문제가 계속 보인다면 추가 지침을 위해 Datadog 지원팀에 문의하세요.

프로세스 메트릭 권한 문제

Linux OS에서 실행되는 Agent에 process 체크를 활성화했다면, system.processes.open_file_descriptors 메트릭이 기본적으로 수집되거나 보고되지 않는다는 것을 알 수 있어요. 이는 process 체크가 모니터링하는 프로세스가 Agent 사용자(dd-agent)와 다른 사용자로 실행될 때 발생해요. 사실 dd-agent 사용자는 Agent가 이 메트릭의 데이터를 수집하기 위해 찾는 /proc의 모든 파일에 대한 전체 접근 권한이 없어요.

process 체크 설정에서 try_sudo 옵션(Agent 6.3부터 사용 가능)을 활성화하고 적절한 sudoers 규칙을 추가하세요:

dd-agent ALL=NOPASSWD: /bin/ls /proc/*/fd/

이렇게 하면 process 체크가 sudo로 ls 명령어를 실행할 수 있지만 /proc/*/fd/ 경로의 내용 목록만 나열하도록 제한돼요.

Datadog error.log 파일에 sudo: sorry, you must have a tty to run sudo 줄이 보이면, visudo를 사용해 sudoers 파일에서 Default requiretty 줄을 주석 처리하세요.

Agent를 root로 실행하기 (Run Agent as root)

try_sudo를 사용할 수 없다면 우회 방법으로 Agent를 root로 실행할 수 있어요.

Linux에서 프로세스 데몬을 root로 실행하는 것은 모범 사례가 아니에요. Agent는 오픈소스이며 GitHub 저장소를 통해 감사할 수 있어요.

Agent를 root로 실행하려면:

  1. Agent를 중지하세요.
  2. /etc/systemd/system/multi-user.target.wants/datadog-agent.service를 열고 [Service] 아래의 user 속성을 변경하세요.
  3. Agent를 시작하세요.

Linux 머신에서 이 메트릭을 수집하는 방법에 대한 자세한 정보와 다른 가능한 방법은 다음 GitHub 이슈를 참고하세요.

macOS에서 Agent를 시스템 데몬으로 실행할 때의 권한 문제

DD_SYSTEMDAEMON_INSTALL과 DD_SYSTEMDAEMON_USER_GROUP 옵션을 사용해 Agent를 시스템 전체 launch daemon으로 설치했다면, DD_SYSTEMDAEMON_USER_GROUP에 사용한 사용자와 그룹이 유효하고 올바른 권한을 가지고 있는지 확인하세요.

더 알아보기 (Learn more)

도움이 되는 추가 문서, 링크, 글: