이 문서에서는 docker 컨테이너의 에이전트 for Java 기능의 기본 설치에 대해 설명합니다. 필수 설정에 대해 논의하고 다음을 포함한 몇 가지 선택적 설정도 살펴봅니다.
- 컨테이너가 사용되는 환경에 관계없이 각 컨테이너에 동일한 New Relic 구성 파일을 사용하는 방법
- 모든 환경의 모든 에이전트에 약간 다른 구성 데이터가 필요한 경우 Docker 계층을 사용하는 방법
- 일부 환경에서는 New Relic 에이전트를 비활성화하고 다른 환경에서는 활성화하는 방법
여기서는 고급 옵션에 대해 논의하지 않지만 Docker 볼륨에 Java 에이전트를 설치하고 Swarm, ECS, AKS, EKS, OpenShift 및 Kubernetes와 같은 다른 소프트웨어에서 Docker 컨테이너 이미지를 사용할 수 있습니다. Docker 예제는 Tomcat을 참조하므로 다른 애플리케이션 서버를 사용하는 경우 공급업체의 설명서를 참조하십시오.
자바 에이전트 가져오기
curl
, Invoke-WebRequest
(PowerShell) 또는 New Relic UI를 사용하여 newrelic-java.zip
다운로드:
설치 디렉토리 설정
편리한 위치에서 newrelic-java.zip
파일의 압축을 풀 수 있습니다. 후속 섹션에서는 현재 작업 디렉토리에서 압축을 푼 것으로 가정하고 필요한 파일을 ./newrelic
에 넣습니다.
시작 스크립트 수정
애플리케이션 서버를 시작하는 명령이 포함된 시작 스크립트에는 Java의 기본 제공 인수 -javaagent
가 포함되어야 합니다. JAVA_OPTS
환경 변수로 이 인수를 설정하는 것이 좋습니다. 해당 인수의 값은 Java APM 에이전트의 jar 파일을 이미지에 ADD
하는 위치를 포함해야 합니다.
예를 들어 Tomcat의 경우 Dockerfile
에서 다음과 같은 명령을 사용합니다.
RUN mkdir -p /usr/local/tomcat/newrelicADD ./newrelic/newrelic.jar /usr/local/tomcat/newrelic/newrelic.jarENV JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/local/tomcat/newrelic/newrelic.jar"
에이전트 구성 설정
기본적으로 에이전트 동작은 일반적으로 에이전트와 동일한 디렉토리에 있는 newrelic.yml
의 구성 항목에 의해 제어됩니다. 이 섹션에서는 Dockerfile
에서 환경 변수 또는 자바 시스템 속성을 사용하여 이러한 newrelic.yml
구성을 재정의하는 방법을 설명합니다.
특정 구성을 살펴보기 전에 Dockerfile
}을 사용하여 newrelic.yml
를 로드하는 방법은 다음과 같습니다.
ADD ./newrelic/newrelic.yml /usr/local/tomcat/newrelic/newrelic.yml
기본 Docker 설치의 경우 다음 구성을 완료하십시오.
애플리케이션 이름
애플리케이션 이름은 New Relic에서 애플리케이션을 식별하기 위해 설정한 구성입니다.
팁
동일한 역할을 수행하는 여러 앱에 대해 애플리케이션 이름을 재사용하여 해당 앱의 모든 데이터가 New Relic의 동일한 논리 애플리케이션으로 롤업되도록 할 수 있습니다. 추가 그룹화 옵션에 대한 자세한 내용 은 앱에 여러 이름 사용 을 참조하세요.
다음 Dockerfile
명령 중 하나에서 MY_APP_NAME
애플리케이션 이름으로 바꿉니다.
옵션 | 명령 |
---|---|
환경 변수 |
|
자바 시스템 속성 |
|
컨테이너를 부팅하면 애플리케이션 이름이 New Relic에 나타납니다.
라이센스 키
이 구성은 New Relic 계정에 데이터를 보고하는 데 필요합니다.
라이센스 키를 복사하려면:
API 키 UI로 이동하여 을(를) 가져옵니다.
다음
Dockerfile
명령 중 하나에서MY_LICENSE_KEY
인스턴스 키로 바꿉니다.옵션
명령
환경 변수
ENV NEW_RELIC_LICENSE_KEY="MY_LICENSE_KEY"자바 시스템 속성
ENV JAVA_OPTS="$JAVA_OPTS -Dnewrelic.config.license_key='MY_LICENSE_KEY'"
로그
기본적으로 로그는 newrelic.jar
위치를 기준으로 로그 디렉토리에 기록됩니다. 응용 프로그램 서버를 시작하는 사용자 계정에도 다음과 같은 작업을 수행할 수 있는 권한이 있는지 확인하십시오.
- 로그 디렉토리 생성.
- 해당 디렉토리의 로그 파일 생성 및 추가.
다음은 tomcat
이 Tomcat을 시작하는 사용자인 Dockerfile 예입니다.
RUN mkdir -p /usr/local/tomcat/newrelic/logsRUN chown -R tomcat:tomcat /usr/local/tomcat/newrelic/logs
Dockerfile에 다음 중 하나를 추가하여 STDOUT
에 로그를 보낼 수도 있습니다.
옵션 | 명령 |
---|---|
환경 변수 |
|
자바 시스템 속성 |
|
환경(선택 사항)
Java 속성이나 환경 변수를 전달하여 에이전트가 newrelic.yml
에서 사용하는 환경별 섹션을 결정할 수 있습니다. Docker를 통해 모든 구성을 전달하는 대신 newrelic.yml
파일 제어 환경별 구성을 선호하는 경우 이 접근 방식을 사용하십시오.
다음은 newrelic.yml
의 환경 섹션에서 맞춤 값 dev
사용하기 위해 Docker를 통해 newrelic.environment
Java 시스템 속성을 전달하는 Dockerfile
예입니다.
CMD 명령어의 셸 형식을 사용하여 선택한 새 환경 변수에 대한 참조를 포함합니다(예:
ENV
).CMD java -Dnewrelic.environment=$ENV -jar myjar.jardocker run
명령줄에 컨테이너에 환경 변수를 설정하는 인수를 포함합니다.bash$docker run -it -e "ENV=dev" myDockerImage
중요
newrelic.environment
값을 지정하지 않으면 에이전트는 프로덕션 환경에서 실행 중인 것으로 가정하고 구성 파일의 본문에 있는 값을 사용합니다.
에이전트 활성화됨(선택 사항)
이 구성은 에이전트의 활성화 여부를 제어합니다. 모든 설치에 대해 동일한 Docker 이미지를 원한다고 가정해 보겠습니다. 그러나 인스턴스 수를 늘리고 싶지 않기 때문에 엔지니어가 테스트 앱을 실행할 때마다 New Relic 에이전트를 실행하고 싶지는 않습니다.
이 문제는 newrelic.environment
자바 시스템 속성을 사용하여 해결할 수 있습니다.
newrelic.yml
의 본문에서 {agent_enabled: false
을 설정하여 Java 에이전트를 비활성화합니다.newrelic.yml
의 특정 환경 섹션에서agent_enabled: true
설정합니다.
그런 다음 런타임 시 환경을 지정하여 특정 에이전트를 실행할 수 있습니다.
추가 Tomcat Dockerfile 예제
다음 단계
이제 Docker에 기본 에이전트가 설치되었으므로 고려해야 할 몇 가지 추가 단계가 있습니다.