Fargate의 Amazon ECS 태스크와 함께 Splunk 로그 드라이버를 사용하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 11월 12일

AWS Fargate에서 Amazon Elastic Container Service(Amazon ECS) 태스크와 함께 Splunk 로그 드라이버를 사용하고 싶습니다.

간략한 설명

Fargate에서 Docker의 Splunk 로그 드라이버(“로깅 드라이버”라고도 함)를 사용하여 컨테이너 로그를 엔터프라이즈 Splunk 로그 수집기 또는 Splunk 클라우드로 보낼 수 있습니다. 자세한 내용은 Docker 웹 사이트의 Splunk 로깅 드라이버를 참조하십시오.

해결 방법

Fargate 로그를 수신하도록 Splunk 클라우드 환경 설정

1.    무료 Splunk 옵션을 사용하여 Splunk 클라우드 계정을 만듭니다. 이미 Splunk Cloud 계정이 있는 경우 2단계로 건너뜁니다. 자세한 내용은 Splunk 웹 사이트의 무료 Splunk를 참조하십시오.

2.    Splunk 클라우드 계정에 로그인합니다.

3.    탐색 메뉴에서 [설정(Settings)]을 선택합니다.

4.    [데이터(DATA )] 섹션에서 [데이터 입력(Data inputs)]을 선택합니다.

5.    [로컬 입력(Local inputs)] 섹션의 [작업(Actions)] 열에서 [새로 추가(Add new)]를 선택합니다.

참고: HTTP 및 보안 HTTP (HTTPS) 프로토콜을 통해 Splunk 배포에 데이터 및 애플리케이션 이벤트를 보낼 수 있도록 HEC(HTTP 이벤트 수집기) 토큰을 생성합니다.

6.    [이름(Name)]에 토큰의 이름을 입력하고 [다음(Next)]을 선택합니다.

7.    설정 마법사의 나머지 페이지를 단계별로 수행한 다음 [제출(Submit)]을 선택하여 HEC 토큰을 생성합니다.

참고: 기본값을 그대로 둡니다.

8.    curl 또는 Docker를 사용하여 새 토큰을 테스트합니다.

참고: 기본적으로 Splunk는 포트 8088에서 수신 대기하고 /services/collector 경로에서 이벤트를 수락합니다.

curl 사용:

curl -k  https://prd-p-9l79p.splunkcloud.com:8088/services/collector -H "Authorization: Splunk splunk-token" -d '{"event": "Put this message in Splunk"}'

참고: splunk-token을 이전에 생성한 HEC 토큰으로 교체합니다. 

Docker 사용:

docker run --publish 80:80 --log-driver=splunk --log-opt splunk-token=splunk token --log-opt splunk-url=https://prd-p-u7z1u.splunkcloud.com:8088 --log-opt splunk-insecureskipverify=true --log-opt splunk-sourcetype=docker-test --log-opt splunk-index=main  nginx

참고:  splunk-token을 이전에 생성한 HEC 토큰으로 교체합니다. 

HEC 토큰을 사용하도록 AWS Secrets Manager 구성

참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

Fargate가 토큰을 안전하게 사용할 수 있도록 HEC 토큰을 AWS Secrets Manager에 저장하려면 다음 명령을 실행합니다.

aws secretsmanager create-secret --name splunk-token --secret-string token-value

참고: splunk-토큰을 HEC 토큰으로 교체합니다. 토큰-값을 사용자의 토큰 값으로 바꿉니다.

보안 암호에 액세스할 수 있는 권한이 있는 태스크 실행 역할 구성

1.    AWS Identity and Access Management(IAM) 콘솔을 엽니다.

2.    탐색 창에서 [역할]을 선택합니다.

3.    역할 목록에서 ecsTaskExecutionRole을 검색하고 선택합니다.

4.    인라인 정책 추가를 선택합니다.

5.    편집기의 JSON 탭을 선택한 후 다음 정책을 입력합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>",
        "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>"
      ]
    }
  ]
}

참고: 사용자 지정 AWS Key Management Service(AWS KMS) 키를 사용하여 보안 암호를 암호화하는 경우 KMS 키에 대해 kms:Decrypt 권한 및 Amazon 리소스 이름(ARN)을 제공해야 합니다.

6.    [Review policy]를 선택합니다.

7.    [이름]에 정책 이름을 입력합니다.

8.    [정책 생성(Create policy)]을 선택합니다.

Fargate에서 Amazon ECS 태스크에 대한 태스크 정의를 구성합니다.

1.    Amazon ECS 콘솔을 여십시오.

2.    탐색 창의 Amazon ECS 섹션에서 [태스크 정의(Task Definitions)]를 선택합니다.

3.    [새 태스크 정의 생성(Create new Task Definition)]을 선택합니다.

4.    Fargate를 선택한 후 [다음 단계(Next step)]를 선택합니다.

5.    [태스크 및 컨테이너 정의 구성(Configure task and container definitions)] 섹션에서 [태스크 정의 이름(Task definition name)]에 태스크 정의의 이름을 입력합니다.

6.    [태스크 역할(Task Role)]에서 이전에 구성한 역할을 선택합니다.

7.    [태스크 크기(Task size)] 섹션에서 [태스크 메모리(GB)(Task memory (GB))] 및 [태스크 CPU(vCPU)(Task CPU (vCPU))]에 태스크에 적합한 값을 입력합니다.

8.    [컨테이너 정의(Container Definitions)] 섹션에서 [컨테이너 추가(Add container)]를 선택합니다.

9.    컨테이너 요구에 적합한 옵션을 선택합니다.

10.    [저장 및 로깅(STORAGE AND LOGGING)] 섹션에서 [로그 구성(Log configuration)] 확인란의 선택을 취소합니다. 

11.    [로그 드라이버(Log driver)]에 대해 splunk를 선택합니다.

12.    [로그 옵션(Log options)]의 키 및 값 옵션에 대해 다음을 입력합니다.

키: splunk-URL
값: splunk 엔드포인트(예: https://prd-p-9l79p.splunkcloud.com:8088/)

키: plunk-insecureskipverify
값: True

키: splunk-token
값: 이전에 생성한 보안 암호 ARN

13.    [Add(추가)]를 선택합니다. 

참고: Splunk의 코드 및 구성에 대한 자세한 내용은 Docker 웹 사이트의 GitHub 및 Splunk 옵션의 로그 드라이버 코드를 참조하십시오.

14.    태스크 정의를 생성하려면 [생성(Create)]을 선택합니다.

15.    Amazon ECS 서비스를 생성하거나 이전에 생성한 태스크 정의를 사용하는 태스크를 실행합니다.

Splunk 클라우드에서 로그 확인

Splunk Cloud에서 로그를 확인하기 전에 태스크가 실행 중인지 확인합니다.

참고: 로그 구성에서 splunk-index를 지정하지 않았기 때문에 기본적으로 로그는 인덱스의 splunk-index로 이동합니다.

1.    Splunk 클라우드 계정에 연결합니다.

2.    탐색 메뉴에서 [검색(Search)]을 선택합니다.

3.    검색 상자에 index="main"을 입력합니다.

이제 Splunk 로그 수집기에서 로그를 볼 수 있습니다.

참고: 앞의 단계에 따라 Amazon ECS에서 Amazon Elastic Compute Cloud(Amazon EC2) 시작 유형에 대한 태스크 정의를 생성할 수 있습니다. 그런 다음 ECS 태스크 중 하나에서 Splunk 로그 드라이버를 사용하여 Splunk 로그 수집기로 로그를 보낼 수 있습니다.  


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?