문제
온호스트 ECS 통합 문제를 해결할 때 오류를 찾고 조사하기 위해 몇 분 동안 자세한 로그를 생성할 수 있습니다. 이것은 자체 문제 해결을 수행하거나 New Relic 지원 에 정보를 제공할 때 유용할 수 있습니다.
자세한 로깅은 많은 데이터를 매우 빠르게 생성합니다. 로그 생성이 완료되면 디스크 공간 소비를 줄이기 위해 verbose: 0
을 설정해야 합니다.
newrelic-infra-ctl
명령을 사용하여 이 프로세스를 자동화할 수 있습니다. 자세한 내용 은 실행 중인 에이전트 문제 해결 을 참조하십시오.
해결책
자세한 로그 파일을 생성하려면 작업 정의 파일을 편집해야 합니다. 적용 가능한 모든 설정이 포함된 샘플 구성 파일은 인프라 구성 설정 을 참조하십시오.
자세한 로그를 구현하기 위한 몇 가지 옵션이 있습니다.
- 작업 정의 환경 변수를 변경하고 작업을 다시 시작하십시오.
- EC2 시작 유형의 경우: SSH를 통해 로그 검색
- CloudWatch로 전달하고 awscli로 다운로드
- 실행 중인 컨테이너에서 명령 실행
작업 정의 환경 변수 사용
환경 변수를 변경하고 작업을 다시 시작하여 자세한 로그를 활성화하려면:
작업 정의를 편집합니다.
NRIA_VERBOSE
값을0
에서 다음으로 변경합니다.1
상시 작동 상세 로그의 경우2
스마트 로깅을 위해3
New Relic으로 보내기 위해
이러한 옵션에 대해 자세히 알아보십시오.
작업 정의를 저장합니다.
새로 등록된 작업 정의를 사용하도록 서비스를 업데이트하십시오.
NRIA_VERBOSE=3
을 선택하고 New Relic에 직접 로그를 보내지 않는 경우 로그를 보고 다운로드하는 두 가지 옵션이 있습니다.- EC2 시작 유형: SSH를 통해 로그를 검색 하거나
- CloudWatch에 로그 전달
설정을 기본값으로 되돌립니다.
- 작업 정의를 편집하고
NRIA_VERBOSE
을0
로 설정하여 자세한 로깅을 비활성화합니다. - 작업 정의를 저장합니다.
- 서비스를 작업의 최신 버전으로 업데이트합니다.
- 작업 정의를 편집하고
로그 파일에 오류가 있는지 검사하십시오.
로그 파일을 New Relic 지원팀 에 보내야 하는 경우:
ECS 통합 버전이 포함된 다음 행을 로그 파일에 포함합니다.
New Relic ECS integration version X.YY.ZZZ작업 정의 .yml 파일과 함께 로그 파일을 지원 티켓에 첨부합니다.
SSH를 통해 로그 검색(EC2 시작 유형만 해당)
SSH를 통해 로그를 얻으려면:
작업 정의를 편집합니다.
NRIA_VERBOSE
값을0
에서 다음으로 변경합니다.1
상시 작동 상세 로그의 경우2
스마트 로깅을 위해3
New Relic으로 보내기 위해
이러한 옵션에 대해 자세히 알아보십시오.
컨테이너 인스턴스 중 하나에 SSH로 연결합니다.
docker ps -a
명령을 실행하여 New Relic 통합 컨테이너의 컨테이너 ID를 찾습니다. 컨테이너의 이름은nri-ecs
이어야 합니다.docker logs NRI_ECS_CONTAINER_ID > logs.txt
명령을 사용하여 컨테이너의 로그를 저장합니다. 충분한 로깅 데이터를 생성하려면 약 3분 동안 명령을 실행한 상태로 두십시오.자세한 로그 활성화 섹션의 지침을 계속 진행합니다.
CloudWatch에 로그를 전달하고 awscli를 사용하여 다운로드
CloudWatch를 통해 로그를 가져오려면:
작업 정의를 편집합니다.
NRIA_VERBOSE
값을0
에서 다음으로 변경합니다.1
상시 작동 상세 로그의 경우2
스마트 로깅을 위해3
New Relic으로 보내기 위해
이러한 옵션에 대해 자세히 알아보십시오.
/newrelic-infra/ecs
이라는 CloudWatch 로그 그룹을 사용하여 로그를 전달합니다. 이미 존재하는지 확인하려면 다음을 실행하십시오.bash$aws logs describe-log-groups --log-group-name-prefix /newrelic-infra/ecs해당 접두사가 있는 로그 그룹이 있으면 다음과 같은 결과가 표시됩니다.
{"logGroups": [{"logGroupName": "/newrelic-infra/ecs","creationTime": 1585828615225,"metricFilterCount": 0,"arn": "arn:aws:logs:YOUR_REGION:YOUR_AWS_ACCOUNT:log-group:/newrelic-infra/ecs:*","storedBytes": 122539356}]}이 명령은 접두사가 있는 로그 그룹과 일치하므로 반환된 로그 그룹 이름이 정확히
/newrelic-infra/ecs
인지 확인하십시오. 로그 그룹이 없으면 출력은 다음과 같습니다.{"logGroups": []}로그 그룹이 없으면 다음을 실행하여 만듭니다.
bash$aws logs create-log-group --log-group-name /newrelic-infra/ecs작업 정의를 편집합니다.
newrelic-infra
컨테이너에 대한 컨테이너 정의에서 다음logConfiguration
을 추가합니다."logConfiguration": {"logDriver": "awslogs","options": {"awslogs-group": "/newrelic-infra/ecs","awslogs-region": "AWS_REGION_OF_YOUR_CLUSTER","awslogs-stream-prefix": "verbose"}}새 작업 버전을 등록하고 서비스를 업데이트하십시오.
다음으로 관련 로그 스트림을 찾습니다. 실행 중인 작업의 인스턴스가 여러 개 있는 경우 모두 동일한 로그 그룹에 로그를 보내지만 각각 고유한 로그 스트림이 있습니다. 로그 스트림 이름은
AWSLOGS_STREAM_PREFIX/TASK_FAMILY_NAME/TASK_ID
구조를 따릅니다. 이 경우verbose/newrelic-infra/TASK_ID
입니다.지정된 로그 그룹에 대한 모든 로그 스트림을 가져오려면 다음 명령을 실행합니다.
bash$aws logs describe-log-streams --log-group-name /newrelic-infra/ecs다음은 두 개의 스트림이 있는 로그 그룹의 출력 예입니다.
{"logStreams": [{"logStreamName": "verbose/newrelic-infra/9dfb28114e40415ebc399ec1e53a21b7","creationTime": 1586166741197,"firstEventTimestamp": 1586166742030,"lastEventTimestamp": 1586173933472,"lastIngestionTime": 1586175101220,"uploadSequenceToken": "49599989655680038369205623273330095416487086853777112338","arn": "arn:aws:logs:AWS_REGION_OF_YOUR_CLUSTER:YOUR_AWS_ACCOUNT:log-group:/newrelic-infra/ecs:log-stream:verbose/newrelic-infra/9dfb28114e40415ebc399ec1e53a21b7","storedBytes": 0},{"logStreamName": "verbose/newrelic-infra/f6ce0be416804bc4bfa658da5514eb00","creationTime": 1586166745643,"firstEventTimestamp": 1586166746491,"lastEventTimestamp": 1586173037927,"lastIngestionTime": 1586175100660,"uploadSequenceToken": "49605664273821671319096446647846424799651902350804230514","arn": "arn:aws:logs:AWS_REGION_OF_YOUR_CLUSTER:YOUR_AWS_ACCOUNT:log-group:/newrelic-infra/ecs:log-stream:verbose/newrelic-infra/f6ce0be416804bc4bfa658da5514eb00","storedBytes": 0}]}이전 로그 스트림 목록에서 로그를 검색하려는 작업 ID가 있는 항목을 식별하고 이 명령에서 logStreamName을 사용합니다.
bash$aws logs get-log-events --log-group-name /newrelic-infra/ecs --log-stream-name "LOG_STREAM_NAME" --output text > logs.txt자세한 로그 활성화 지침을 계속 진행합니다.
실행 중인 컨테이너에서
실행 중인 컨테이너에서 명령을 실행하여 자세한 로그를 활성화하려면:
컨테이너 인스턴스 중 하나에 SSH로 연결합니다.
docker ps -a
명령을 실행하여 New Relic 통합 컨테이너의 컨테이너 ID를 찾습니다. 컨테이너의 이름은nri-ecs
이어야 합니다.newrelic-infra-ctl
을 사용하여 제한된 기간 동안 자세한 로그를 활성화합니다. 다음 명령을 실행합니다.bash$docker exec INTEGRATION_CONTAINER_ID /usr/bin/newrelic-infra-ctl자세한 내용 은 에이전트 문제 해결 을 참조하십시오.
명령을 사용하여 컨테이너의 로그를 저장합니다.
bash$docker logs INTEGRATION_CONTAINER_ID > logs.txt충분한 로깅 데이터를 생성하려면 약 3분 동안 명령을 실행한 상태로 두십시오.
로그 파일에 오류가 있는지 검사하십시오.
로그 파일을 New Relic 지원팀 에 보내야 하는 경우:
ECS 통합 버전이 포함된 다음 행을 로그 파일에 포함합니다.
New Relic ECS integration version X.YY.ZZZ작업 정의 .yml 파일과 함께 로그 파일을 지원 티켓에 첨부합니다.