Elastic Cloud와 AWS FireLens: 에이전트 없는 데이터 수집으로 인사이트 확보 시간 단축

blog-thumb-cloud-aws.png

이제 고객은 Amazon Web Services(AWS) FireLens를 사용하여 컨테이너 로그와 이벤트를 Elastic Cloud로 직접 전송할 수 있습니다. AWS FireLens는 Amazon Elastic Container Service(Amazon ECS) 시작 유형인 Amazon Elastic Compute Cloud(Amazon EC2)와 AWS Fargate를 위한 컨테이너 로그 라우터입니다. 이 통합을 통해 DevOps 전문가와 DevSecOps 전문가는 전송 및 비용 효율적 로그 보존부터 위협 모니터링 및 분석에 이르기까지 AWS 로그 관리를 간소화할 수 있습니다.

이 블로그에서는 AWS FireLens를 사용하여 Elastic Cloud로 에이전트 없는 데이터 수집을 시작하는 방법을 다룹니다.

로그 및 이벤트 전송 간소화

기존에는 컨테이너 로그와 이벤트를 서로 다른 대상으로 전송하려면 시간이 오래 걸리고 까다로운 프로세스를 거쳐야 했습니다. 그러나 로그를 CloudWatch로 전송하거나, Fluent Bit 사이드카 로그 집계를 유지 관리하거나, 수동으로 추가 소프트웨어를 설치하거나, 추가 코드를 작성하는 등의 시간 소모적인 작업을 더는 수행할 필요가 없습니다. 이제 작업 정의를 신속하게 구성하여 ECS에서 실행되는 애플리케이션 로그를 Elastic Cloud로 전송할 수 있습니다.

로그의 검색, 분석, 유지 간소화

FireLens의 데이터를 스트리밍하여 Elasticsearch에 저장하면 몇 분 만에 Kibana에서 이를 검색하고 시각화할 수 있습니다. 또한 다른 서버, 가상 머신, 컨테이너의 로그, 메트릭 및 추적을 Elastic으로 전송하고 단일 창에서 분석할 수도 있습니다.

Elastic Observability로 심층적인 애플리케이션 가시성을 확보하고 근본 원인 분석에 소요되는 시간을 줄여보세요. 머신 러닝 기반 이상 징후 탐지 및 자동화된 상관관계를 통해 쉽고 빠르게 코드 수준의 추적, 로그 및 메트릭을 분석하고, 복잡한 서비스 종속성을 매핑하고, “알려지지 않은 무지”를 파악할 수 있습니다.

Elastic Security를 통해 평균 탐지 시간을 0에 가깝게 단축해 보세요. 동일한 데이터를 확장 탐지 및 대응(XDR)으로 확장하여 적용할 수 있습니다. SIEM과 엔드포인트 보안 데이터를 결합하여 최신 사이버 보안 위협을 방지 및 탐지하고 이에 대응할 수 있습니다.

데이터가 증가할 때에도 Elastic의 자동 크기 조정 및 인덱스 수명 주기 관리 기능을 통해 성능과 저장 공간 비용의 균형을 유지하면서 데이터 손실을 방지할 수 있습니다.

Elastic과 AWS FireLens 시작하기

먼저 FireLens를 사용하여 Amazon ECS에서 Elastic Cloud로 컨테이너 로그를 전달하는 예를 들어보겠습니다. 이 참조 아키텍처 다이어그램은 Amazon ECS의 컨테이너에서 Elastic Cloud로 컨테이너 로그를 전달하고 있는 FireLens를 보여주는 비교적 표준화된 다이어그램입니다.
Amazon ECS에서 Elastic Cloud로 컨테이너 로그 전달

FireLens 작업 구성 단계:

1. 작업 정의를 구성합니다. 정의의 예는 GitHub의 Amazon ECS FireLens 예제에서 확인할 수 있습니다.

2. AWS Identity and Access Management(IAM) 역할을 자체 작업 RoleArn, executionRoleArn IAM roles, Elastic Cloud_Auth and Cloud_ID로 업데이트 및 교체합니다. 이 솔루션을 구현하기 위한 업데이트된 작업 정의와 readme 파일은 GitHub 리포지토리에서 찾을 수 있습니다. 또한 예를 들어 아래와 같은 작업 세부 정보를 볼 수 있습니다.
{
   "family": "firelens-EC2-elastic",
   "taskRoleArn": "CHANGE ME",
   "executionRoleArn": "CHANGE ME",
   "containerDefinitions": [{
           "name": "log_router",
           "image": "amazon/aws-for-fluent-bit:latest",
           "essential": true,
           "firelensConfiguration": {
               "type": "fluentbit",
               "options": {
                   "enable-ecs-log-metadata": "true"
               }
           },
           "logConfiguration": {
               "logDriver": "awslogs",
               "options": {
                   "awslogs-create-group": "true",
                   "awslogs-group": "firelens-container",
                   "awslogs-region": "us-east-2",
                   "awslogs-stream-prefix": "firelens"
               }
           },
           "memoryReservation": 50
       },
       {
           "name": "nginx-test",
           "image": "nginx",
           "portMappings": [{
               "containerPort": 80
           }],
           "essential": true,
           "environment": [],
           "logConfiguration": {
               "logDriver": "awsfirelens",
               "secretOptions": [
                       {
                               "valueFrom": "CHANGE ME",
                               "name": "Cloud_Auth"
                       }
               ],
               "options": {
                   "Name": "es",
                   "Port": "9243",
                   "Tag_Key tags": "tags",
                   "Include_Tag_Key": "true",
                   "Cloud_ID": "CHANGE ME",
                   "Index": "elastic_firelens”,
                   "tls": "On",
                   "tls.verify": "Off"
               }
           },
           "memoryReservation": 100
       }
   ]
}

Amazon ECS Fargate 컨테이너 로그를 전송하려는 경우, 처음 몇 줄을 아래 구성으로 바꿉니다.

{
    "family": "firelens-fargate-elastic",
    "taskRoleArn": "",
    "taskRoleArn": "CHANGE ME",
    "executionRoleArn": "CHANGE ME",
    "cpu": "512",
    "memory": "1024",
    "requiresCompatibilities": [
        "FARGATE"
    ],

구성 단계:

1. ECS CLI와 AWS CLI가 설치되어 있는지 확인합니다. 설치되어 있지 않다면 먼저 AWS에서 제공하는 이 설치 가이드를 따릅니다.

2. `enable-fluent-log-driver.sh`라는 이름의 새 파일을 열고 다음 정보를 저장하여 ECS 에이전트에서 Fluentd 로그 드라이버를 활성화합니다.

#!/bin/bash
echo "ECS_AVAILABLE_LOGGING_DRIVERS=[\"awslogs\",\"fluentd\"]" >> 
/etc/ecs/ecs.config
3. 다음 명령을 사용하여 ECS에 EC2 또는 Fargate 클러스터를 생성합니다.
ecs-cli up \
--size 2 \
--instance-type t2.medium \
--extra-user-data enable-fluent-log-driver.sh \
--keypair <changeme> \
--capability-iam \
--region=us-east-2 \
--ecs-profile=<changeme> \
--cluster-config <changeme>

4. 작업 정의를 로컬 파일 `task_definition.json`에 저장하고 AWS CLI를 사용하여 등록합니다.

aws ecs register-task-definition --cli-input-json file://task_definition.json

5. ECS 서비스를 생성합니다.

aws ecs create-service --cluster cluster-name --service-name demo-service --task-definition firelens-example-cloudwatch --desired-count 1 --launch-type 
"EC2"

6. 서비스가 실행되기 시작하면 Kibana를 통해 Elasticsearch로 로그가 유입되는 것을 볼 수 있습니다. 아래 이미지는 Elastic에서 실행되는 쿼리를 보여주며 이는 Kibana에서 시각화할 수 있습니다.

서비스가 실행되기 시작하면 Kibana를 통해 Elasticsearch로 로그가 유입되는 것을 볼 수 있습니다. 아래 이미지는 Elastic에서 실행되는 쿼리를 보여주며 이는 Kibana에서 시각화할 수 있습니다.

Kibana에서는 Elastic 인덱스에 있는 데이터를 시각화할 수도 있습니다. 그런 다음 Elastic에서 실행되는 쿼리를 기반으로 관련 시각화를 표시하는 대시보드를 구축할 수 있습니다. Elastic 집계를 사용하여 데이터를 추출하고 처리함으로써 데이터 전반의 급증, 급락, 추세를 보여주는 차트와 그래프를 생성할 수 있습니다. 아래 이미지는 Kibana 대시보드의 예를 보여줍니다.

아래 이미지는 Kibana 대시보드의 예를 보여줍니다.

Elastic과 AWS의 파트너십에는 FireLens와 같이 데이터 수집을 간소화하기 위한 기술 통합이 포함되어 있으며, Elastic은 DevOps 전문가와 DevSecOps 전문가를 위해 보안 및 규정 준수 제어 기능을 갖춘 단일 UI를 제공합니다. Elastic의 즉시 사용할 수 있는 AWS 통합 및 대시보드를 활용하면, AWS 및 온프레미스 환경 전반에 걸쳐 가시성을 통합할 수 있으므로 인프라, 애플리케이션 및 비즈니스의 가용성, 성능, 전반적인 상태를 더 잘 파악할 수 있습니다.

결론

데이터 수집을 간소화하고 단일 창에서 모든 컨테이너 로그 및 이벤트를 관리할 준비가 되셨나요? Elastic은 고객에게 원활한 경험을 제공하고 원하는 곳에서 원하는 방식으로 실행할 수 있도록 최선을 다하고 있습니다. 이와 같이 간소화된 AWS와의 통합은 Elastic의 노력을 보여주는 한 예에 불과합니다. Elastic Cloud는 Elastic Stack의 가치를 확장하여 더 많은 작업을 더 빠르게 수행할 수 있도록 하므로 Elastic 플랫폼을 경험할 수 있는 가장 좋은 방법입니다. 다른 AWS 통합에 대한 자세한 내용은 Elastic 통합 라이브러리에서 확인할 수 있습니다. AWS에서 Elastic 사용을 시작하려면 AWS Marketplace(Elastic) 또는 elastic.co를 방문하세요. 다음 주에 AWS re:Invent에 참석하신다면 Elastic이 있는 1567번 부스에 들러 자세히 알아보세요.

이 문서에 설명된 기능의 릴리즈 여부 및 시기는 Elastic의 단독 재량에 따릅니다. 현재 이용할 수 없는 기능은 정시에 또는 전혀 제공되지 않을 수 있습니다.