호스트 내 통합의 구성 YAML에는 YAML 배열이 포함된 integrations 최상위 섹션이 있어야 합니다. 여기서 각 항목은 통합 및 해당 구성을 나타냅니다.
각 통합 항목에 대해 name 속성만 필수입니다. 다른 속성은 선택 사항입니다.
다음은 구성이 필요 없는 내장 Docker 통합 과 MySQL 통합 이라는 두 가지 통합을 특징으로 하는 구성의 예입니다.
integrations:
# New Relic integration that does not require any configuration
- name: nri-docker
# New Relic integration that gets its configuration from the environment
- name: nri-mysql
env:
PORT: 3306
USERNAME: newrelic
PASSWORD: 123456789 # to hide this field, read the secrets management documentation
# Any free-form integration executed via a user-provided command
- name: my-own-integration
exec: python /opt/integrations/my-script.py --host=127.0.0.1
If the exec property is set: name 속성은 통합 인스턴스에 대한 식별자만 제공합니다. 이 식별자는 로그 메시지에 사용되며 integration/<name> 형식(예: integration/nri-redis)으로 기본 인벤토리 카테고리/소스를 제공합니다. 이 인벤토리 경로는 inventory_source 설정 옵션으로 재정의될 수 있습니다.
If the exec property is not set: 에이전트는 다음 폴더 중 하나에서 name 값을 가진 실행 파일을 찾고 실행합니다.
위의 예에서는 http-service.yaml 및 config.properties 파일이 있다고 가정합니다. nri-flex 통합은 CONFIG_FILE 환경 변수를 통해 http-service.yaml 전체 경로를 예상하고 other-integration 는 -f 명령줄 플래그 뒤에 전체 config.properties 경로를 예상한다는 것을 알 수 있습니다.
위의 예에서 통합 설치 프로그램/구성자는 구성 파일이 제공된 경로에 존재하고 에이전트 및 통합에 읽기 권한이 있어야 합니다.
Pass configuration through config section
나머지 통합 구성과 함께 구성 파일을 유지하려는 경우 유효한 YAML 객체 또는 여러 줄 문자열만 포함할 수 있는 통합 항목의 config 섹션을 사용할 수 있습니다.
( variables 및 discovery 섹션에 대한 자세한 내용은 검색 및 비밀 관리 문서를 참조하세요.)
위의 예는 다음 전제에 의존합니다.
user 및 password 필드로 구성된 JSON 객체를 검색할 수 있는 Vault 서비스가 있습니다.
검색 가능한 공개 IP 및 포트를 통해 에이전트 호스트에서 액세스할 수 있는 service=foo 레이블이 지정된 다양한 Docker 컨테이너가 있을 수 있습니다.
사용자는 공통 사용자와 비밀번호를 공유하는 모든 service=foo 레이블이 지정된 컨테이너를 모니터링하도록 foo-monitor 통합을 구성했습니다. foo-monitor 통합의 각 인스턴스는 --config=<path> 명령줄 인수를 통해 config 섹션 내부의 텍스트 구성을 전달하고 /opt/foo/bin/monitor 실행 파일을 실행해야 합니다.
워크플로의 예로 Vault 호출이 다음 JSON을 반환한다고 가정합니다.
{"user":"monitorer","password":"5up3r53cr3t!"}
foo-monitor 통합을 실행하는 시점에 service=foo 레이블이 지정된 3개의 실행 중인 컨테이너가 있습니다.
IP: 10.0.0.3 , 포트: 8080
IP: 10.0.0.3 , 포트: 8081
IP: 10.0.0.3 , 포트: 8082
그런 다음 에이전트는 config 속성의 내용을 템플릿으로 사용하여 다음 세 개의 임시 파일을 생성하지만 ${placeholders} 은 획득한 변수와 검색된 항목으로 대체합니다(파일 경로는 단순화를 위해 만들어졌습니다).
첫 번째 일치( /tmp/123_discovered ):
foo.host=10.0.0.3
foo.port=8080
foo.user=monitorer
foo.password=5up3r53cr3t!
두 번째 일치( /tmp/456_discovered ):
foo.host=10.0.0.3
foo.port=8081
foo.user=monitorer
foo.password=5up3r53cr3t!
세 번째 경기( /tmp/789_discovered )
foo.host=10.0.0.3
foo.port=8082
foo.user=monitorer
foo.password=5up3r53cr3t!
config 변수 자리 표시자가 바뀌고 임시 파일이 생성된 후 /opt/foo/bin/monitor 실행 파일이 세 번(일치하는 컨테이너당 한 번) 실행되어 ${config.path} 명령줄 자리 표시자를 각각에 해당하는 임시 파일로 바꿉니다. 발견된 구성:
첫 경기: /opt/foo/bin/monitor --config=/tmp/123_discovered
두 번째 경기: /opt/foo/bin/monitor --config=/tmp/456_discovered
세 번째 경기: /opt/foo/bin/monitor --config=/tmp/789_discovered
보안을 보장하고 비밀이 디스크에 누출될 가능성을 최소화하기 위해 에이전트는 다음을 수행합니다.
에이전트를 실행하도록 구성한 사용자에 따라 에이전트 사용자가 소유한 파일(예: root 또는 nri-agent )을 작성합니다.
소유자에 대해서만 읽기 권한을 설정합니다.
통합 인스턴스가 실행을 완료하면 생성된 파일을 제거합니다.
통합 실행 파일에 전달하는 구성 파일에서 비밀 관리 및 검색을 사용하고 싶지만 개별 파일로 유지하려는 경우 config_template_path: <path> 옵션을 사용할 수 있습니다. config 섹션에서와 동일하게 작동합니다.
위의 예에서 nri-nginx 인벤토리가 있는 경우 integration/nri-nginx 소스 아래의 New Relic UI에서 볼 수 있습니다. nri-apache 인벤토리는 config/apache 아래에 표시됩니다.
labels 통합을 위해 추가 메타데이터를 제공할 수 있는 키-값 맵입니다. 에이전트는 해당 레이블을 사용하여 지정된 통합 인스턴스에서 수신하는 메트릭, 이벤트 및 인벤토리를 장식합니다.
예시:
integrations:
- name: nri-apache
inventory_source: config/apache
labels:
env: production
role: load_balancer
위의 예에서 에이전트는 nri-apache 인스턴스의 모든 측정항목과 이벤트를 다음 필드로 장식합니다.
label.env: production
label.role: load_balancer
또한 다음 항목이 통합 인벤토리에 추가됩니다.
config/apache/labels/env: production
config/apache/labels/role: load_balancer
통합이 timeout 값에 지정된 시간 전에 측정항목(또는 아래에 설명된 하트비트 메시지)을 반환하지 않은 경우 에이전트는 통합 프로세스를 종료하고 해당 interval 후에 통합 프로세스를 다시 시작합니다. 허용되는 형식은 공백 없이 바로 뒤에 시간 단위가 오는 정수입니다(밀리초의 경우 ms , 초의 경우 s , 분의 경우 m , 시간의 경우 h ).
0(또는 음수) timeout 값이 제공되면 시간 초과 만료로 인해 중단되지 않고 통합이 영원히 실행될 수 있습니다.
장기 실행 통합(계속 실행되는 통합, 주기적으로 메트릭/이벤트/인벤토리 반환)의 경우 통합이 메트릭/이벤트/인벤토리 페이로드를 제출할 때마다 제한 시간 기한이 다시 시작됩니다. 즉, 장기 실행 통합은 timeout 보다 짧은 간격으로 유효한 JSON 페이로드를 반환해야 합니다.
빈 JSON( {} )을 반환하면 보고할 정보가 없더라도 장기 실행 통합이 중단되는 것을 방지하여 시간 초과를 다시 시작하는 하트비트 메시지로 해석됩니다.
기본값은 120s 이고 허용되는 최소값은 100ms 입니다. 100ms 보다 작은 값은 자동으로 100ms 으로 설정됩니다.