- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
ddprof
는 베타 버전입니다. Datadog에서는 프로덕션에 배포하기 전 민감하지 않은 환경에서 프로파일러를 평가할 것을 권장합니다.컴파일된 언어(ddprof
)의 네이티브 프로파일러는 OS 수준 API를 사용해 프로파일링 데이터를 수집합니다. 보통 C, C++, 또는 Rust와 같은 컴파일링된 언어로 쓴 애플리케이션에 적합합니다.
ddprof
에서 보낸 프로필은 Datadog 웹 앱의 네이티브 런타임 아래에 나타납니다.
모든 언어의 최소 및 권장 런타임과 트레이서 버전에 대한 요약은 지원되는 언어 및 트레이서 버전을 참고하세요.
amd64
또는 arm64
프로세서ddprof
는 AWS Lambda와 같은 서버리스 플랫폼에서 지원되지 않습니다.perf_event_paranoid
커널 설정은 2 이하입니다(트러블슈팅 참고)프로파일러는 독립 실행형 파일로 사용하거나 라이브러리로 사용할 수 있습니다. 라이브러리로 사용하고 싶은 경우 라이브러리 설치 지침으로 건너뛰세요.
최신 ddprof
릴리즈를 다운로드합니다. 다음은 amd64
(즉, x86_64
) 플랫폼의 최신 릴리즈를 풀링하는 방법 중 하나입니다.
curl -Lo ddprof-linux.tar.xz https://github.com/DataDog/ddprof/releases/latest/download/ddprof-amd64-linux.tar.xz
tar xvf ddprof-linux.tar.xz
mv ddprof/bin/ddprof INSTALLATION_TARGET
INSTALLATION_TARGET
는 ddprof
바이너리를 저장할 위치를 지정합니다. 다음 예시에서는 INSTALLATION_TARGET
이 ./ddprof
로 설정되어 있다고 가정합니다.
aarch64
플랫폼에 amd64
대신 arm64
를 사용합니다.
프로파일러를 포함하도록 서비스 호출을 수정합니다. 일반 명령이 마지막 인수로써 ddprof
실행 파일로 전달됩니다.
export DD_ENV=prod
export DD_SERVICE=my-web-app
export DD_VERSION=1.0.3
./ddprof myapp --arg1 --arg2
참고: 다음 예시와 같이 기본 셸 기능을 사용해 애플리케이션을 실행하는 경우,
exec myapp --arg1 --arg2
해당 기본 기능을 사용해 ddprof
를 호출해야 합니다.
export DD_ENV=prod
export DD_SERVICE=my-web-app
export DD_VERSION=1.0.3
exec ./ddprof myapp --arg1 --arg2
./ddprof --environment prod --service my-web-app --service_version 1.0.3 myapp --arg1 --arg2
참고: 다음 예시와 같이 기본 셸 기능을 사용해 애플리케이션을 실행하는 경우:
exec myapp --arg1
해당 기본 기능을 사용해 ddprof
를 호출해야 합니다.
exec ./ddprof --environment prod --service my-web-app --service_version 1.0.3 myapp --arg1 --arg2
애플리케이션 시작 몇 분 후에 Datadog APM > Profiler 페이지에 내 프로필이 나타납니다.
라이브러리에서 C API를 노출합니다.
라이브러리 지원(v0.80 이상)에서 ddprof 릴리즈를 다운로드하고 tarball을 추출합니다. 다음 예를 참고하세요.
curl -Lo ddprof-linux.tar.xz https://github.com/DataDog/ddprof/releases/latest/download/ddprof-amd64-linux.tar.xz
tar xvf ddprof-linux.tar.xz --directory /tmp
내 코드에서 ddprof_start_profiling()
인터페이스를 사용해 프로파일러를 시작합니다. 이 인터페이스는 제공된 릴리즈의 _dd_profiling.h_
헤더에 정의되어 있습니다. 프로그램을 종료하면 프로파일러가 자동으로 중단됩니다. 수동으로 프로파일러를 중단하려면 ms
파라미터로 함수의 블록 시간을 밀리초로 표시하고 ddprof_stop_profiling(ms)
를 사용합니다.
#include <stdlib.h>
#include "dd_profiling.h"
int foo(void) {
int n = 0;
for (int i = 0; i < 1000; i++) {
n += 1;
}
return n;
}
int main(void) {
// Initialize and start the Datadog profiler. Uses agent defaults if not
// specified
setenv("DD_ENV", "prod", 1);
setenv("DD_SERVICE", "c_testservice", 1);
setenv("DD_VERSION", "1.0.3", 1);
ddprof_start_profiling();
// Do some work
for (int i = 0; i < 1e6; i++) {
foo();
}
return 0;
}
추출된 디렉터리의 include
와 lib
하위 디렉터리를 구축 시스템으로 보내고 libdd_profiling
에 연결합니다. 위 예시의 경우 다음과 같습니다.
gcc -I/tmp/ddprof/include -L/tmp/ddprof/lib profiler_demo.c -o profiler_demo -ldd_profiling
공유된 라이브러리는 시스템의 라이브러리 검색 경로에 있어야 합니다. 그러지 않으면 애플리케이션 시작이 실패합니다. 이전 예시를 적용하면 다음과 같습니다.
./profiler_demo
./profiler_demo: error while loading shared libraries: libdd_profiling.so: cannot open shared object file: No such file or directory
이를 피하려면 고정 라이브러리를 연결해야 합니다.
기존 검색 디렉터리에서 라이브러리를 복사해 검색 경로에 추가합니다. Linux 시스템의 검색 디렉터리가 무엇인지 보려면 다음을 실행하세요.
ld --verbose | grep SEARCH_DIR | tr -s ' ;' \\n
LD_LIBRARY_PATH
환경 변수를 사용해 런타임 링커에 추가 검색 경로를 추가합니다. 이전 디렉터리 레이아웃을 사용한 예시는 다음과 같습니다.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tmp/ddprof/lib
프로파일링 UI를 사용하는 environment
, service
, service_version
설정을 권장합니다.
파라미터 전체 목록을 참고하거나 명령줄을 사용합니다.
ddprof --help
여러 엔드포인트의 하나에 로깅을 구성할 수 있습니다.
stdout
의 경우 로그를 표준 출력 스트림에 출력합니다(기본값).stderr
는 표준 오류 스트림으로 로그를 출력합니다.syslog
는 syslog로 로그를 출력하며, RFC 3164 사양에 따릅니다.disable
는 로그를 비활성화합니다./
로 절대 경로를 지정합니다.실행 프로세스 전체를 계측하려면 --global
옵션을 사용할 수 있습니다.
전역 모드는 디버그를 목적으로 고안되었습니다. 이에 따라 한층 높은 권한이 필요합니다. 설정에 따라 루트로 실행하거나, CAP_PERFMON
와 CAP_SYSADMIN
권한을 부여하거나, perf_event_paranoid
을 -1
로 설정해야 합니다.
./ddprof --environment staging --global --service_version full-host-profile
대부분의 구성에서 프로파일러의 PID 네임스페이스 내에서 볼 수 있는 모든 프로세스로 구성되어 있습니다.
프로파일러 시작히기 가이드는 성능 문제를 포함하는 샘플 서비스를 제공하여 지속적 프로파일러가 문제를 이해하고 해결하는 방법을 보여줍니다.
추가 유용한 문서, 링크 및 기사: