Amazon Linux에서 Filebeat와 Logstash를 사용하여 OpenSearch Service에 연결하려면 어떻게 해야 하나요?

6분 분량
0

Amazon Linux에서 Filebeat와 Logstash를 사용하여 Amazon OpenSearch Service 클러스터에 연결하고 있는데 오류가 발생합니다.

간략한 설명

Logstash를 사용하여 Amazon OpenSearch Service에 연결하려면 다음 단계를 완료합니다.

1.포트 443과 같은 보안 포트를 설정하여 로그를 OpenSearch Service에 전달합니다.

2.Filebeat, Logstash 및 OpenSearch Service 구성을 업데이트합니다.

3.소스 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 Filebeat를 설치합니다. YAML 구성 파일을 올바르게 설치하고 구성해야 합니다.

4.로그가 전송되는 별도의 Amazon EC2 인스턴스에 Logstash를 설치합니다.
**참고:**Logstash를 올바르게 설정하거나 구성하지 않은 경우 401 Authorization 오류, 403 Forbidden 오류 또는 x-pack 설치 오류가 발생합니다.

해결 방법

보안 포트 설정

Logstash에서 로그를 전달하도록 보안 포트를 설정합니다.

1.인스턴스가 Logstash에서 OpenSearch Service로 로그를 전달할 수 있도록 Apache와 Filebeat를 설치한 EC2 인스턴스를 생성합니다.

2.EC2 인스턴스가 OpenSearch Service용 Virtual Private Cloud(VPC)와 동일한 보안 그룹에 있는지 확인합니다.

3.Logstash와 OpenSearch Service 간에 데이터를 전송할 수 있도록 보안 그룹에서 포트 80, 443 및 5044가 열려 있는지 확인합니다.

Filebeat, Logstash 및 OpenSearch Service 구성 업데이트

레거시 Elasticsearch 버전이 있는 OpenSearch Service는 동일한 Filebeat 및 Logstash 버전을 사용할 때 가장 잘 실행됩니다. 다음 서비스 버전에 호환되는 버전을 사용하세요.

  • Filebeat 버전 x.x
  • Logstash 버전 x.x(Log4j 보안 패치용 v7.16.2 및 v6.8.22)
  • 레거시 Elasticsearch 버전 x.x의 OpenSearch Service

위의 예에서 “x.x” 버전 번호는 해당 구성과 일치해야 합니다.

참고:

  • OpenSearch Service 1.x 버전을 호환성 모드로 사용하는 경우 OpenSearch Service는 해당 버전을 7.10으로 보고합니다. 호환성 매트릭스를 확인하여 Filebeat 및 Logstash의 올바른 버전을 선택합니다. 자세한 내용은 Elasticsearch 웹 사이트의 지원 매트릭스를 참조하세요.
  • OpenSearch Service 버전 1.0 이상을 사용하는 경우 도메인을 처음 시작할 때 호환성 모드가 켜져 있는지 확인합니다.

다운로드한 소프트웨어를 동기화된 상태로 유지하려면 각 EC2 인스턴스에 RPM을 다운로드합니다. 파이프라인의 단일 장애점을 방지하려면 동일한 EC2 인스턴스에서 Filebeat와 Logstash를 실행하지 마세요.

소스 EC2 인스턴스에 Filebeat를 설치합니다.

1.호환되는 Filebeat 버전의 RPM을 다운로드합니다.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-7.16.2-x86_64.rpm

2.Filebeat RPM 파일을 설치합니다.

rpm -ivh filebeat-oss-7.16.2-x86_64.rpm

로그가 전송되는 별도의 EC2 인스턴스에 Logstash를 설치합니다.

1.호환되는 Logstash 버전의 RPM 파일을 다운로드합니다.

wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-7.16.2-x86_64.rpm

**참고:**이 예제에서는 호환성 모드가 활성화된 OpenSearch Service 버전 1.1과 함께 버전 7.16의 Filebeat 및 Logstash를 사용합니다.

2.EC2 인스턴스에 Java 또는 OpenJDK를 설치합니다.

yum install java-1.8.0-*

3.rpm 명령을 실행하여 Logstash용으로 다운로드한 RPM 파일을 설치합니다.

rpm -ivh logstash-oss-7.16.2-x86_64.rpm

**참고:**Logstash를 실행하려면 Java가 필요합니다. 이 예제에서는 모든 버전의 Logstash에서 지원하는 Java 버전 8(Open JDK 1.8)을 사용합니다. 지원되는 Java 및 Logstash 버전에 대한 자세한 내용은 Elasticsearch 웹 사이트의 지원 매트릭스를 참조하세요.

4.OpenSearch Service용 Logstash 플러그인을 설치합니다.

bin/logstash-plugin install logstash-output-opensearch

5.OpenSearch용 Logstash 플러그인이 설치되어 있는지 확인합니다.

bin/logstash-plugin list

**참고:**Logstash OSS 버전 7.12.1은 logstash-output-elasticsearchlogstash-output-opensearch 플러그인을 모두 지원합니다. Logstash OSS 버전 7.13 이상은 logstash-output-opensearch 플러그인만 지원합니다.

6./etc/filebeat/etc/logstash 디렉터리를 점검하여 구성 파일을 확인합니다.

7.Filebeat의 경우 출력을 Logstash 또는 OpenSearch Service(GitHub 웹 사이트에서 제공)로 업데이트합니다. 로그를 전송하도록 지정한 다음, 서비스를 시작합니다.
**참고:**Filebeat를 사용하여 템플릿을 OpenSearch 대시보드에 업로드하려고 하면 업로드가 실패합니다. Filebeat는 클러스터가 x-pack 플러그인을 지원한다고 가정합니다.

8.Filebeat YAML 구성 파일을 업데이트하여 Apache 액세스 로그를 Logstash로 전송합니다.

YAML 파일 예제:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

setup.template.settings:

index.number_of_shards: 1
index.codec: best_compression

#output.elasticsearch:
#hosts: ["vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"]
#protocol: "https"

output.logstash:
  # The Logstash hosts
  hosts: ["Logstash-EC2-InstanceIP:5044"]

setup.ilm.enabled: false
ilm.enabled: false

9.Logstash 구성 파일이 포트 5044에서 Filebeat에 액세스할 수 있는지 확인합니다. Logstash는 포트 5044 액세스를 통해 요청을 OpenSearch Service VPC 엔드포인트로 전달할 수 있습니다.

Logstash 파일 예제:

input {
  beats {
    port => 5044
  }
}

output {
  opensearch {
    hosts => ["https://domain-endpoint:443"]
    ssl => true
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    user => "my-username"
    password => "my-password"
  }
}

10.Logstash 인스턴스에서 OpenSearch Service 엔드포인트에 연결할 수 있는지 확인합니다.

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com

11.(선택 사항) 세분화된 액세스 제어(FGAC)를 활성화한 경우 다음 명령을 실행합니다.

curl -u my-username:my-password -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com

참고: 시간 초과 문제가 있는 경우 Logstash EC2 인스턴스가 OpenSearch Service용 VPC와 동일한 보안 그룹에 있는지 확인하세요. 또한 보안 그룹에서 포트 80, 443 및 5044가 열려 있는지 확인하세요.

12.다음 명령을 실행하여 각 인스턴스에서 Filebeat 및 Logstash 서비스를 시작합니다.

Filebeat

systemctl start filebeat (service filebeat start)

Logstash

cp /etc/logstash/logstash.conf /etc/logstash/conf.d/
systemctl start logstash (service logstash start)

13.OpenSearch Service 도메인에 cat indices API 호출을 실행하여 Filebeat 로그가 전송되고 있는지 확인합니다. 로그가 성공적으로 전송되면 다음과 같은 응답을 받습니다.

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
green open filebeat-7.16.2-2022.01.27 f97c4WnuQ-CtsAJJaJHUlg
1 1 1511515 0 249.7mb 124.7mb
green open .kibana_1                 Ioco6fUoSCGkaOvHNCL39g 1
1       1 0   7.4kb  
3.7kb

기본적으로 Filebeat 인덱스는 매일 교체됩니다.

Filebeat 인덱스의 출력 예시:

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
green open filebeat-7.16.2-2022.01.27 f97c4WnuQ-CtsAJJaJHUlg
1 1 1511515 0 249.7mb 124.7mb
green open .kibana_1                 Ioco6fUoSCGkaOvHNCL39g 1
1       1 0   7.4kb  
3.7kb
green open filebeat-7.16.2-2022.01.28 4i8W0smlRGGFcQOaDMxonA
1 1      89 0 207.1kb 118.1kb

Amazon EC2 Linux를 사용하여 Filebeat, Logstash 및 OpenSearch 대시보드를 성공적으로 구성한 경우, 파이프라인은 다음과 같습니다.

Filebeat > Logstash > Amazon OpenSearch Service/Dashboards

401 Unauthorize 오류

Logstash에서 발생한 401 Unauthorize 오류는 OpenSearch Service 도메인이 FGAC 또는 Amazon Cognito에 의해 보호되고 있음을 나타냅니다. FGAC에는 도메인의 액세스 정책에서 정의해야 하는 사용자 또는 역할의 서명된 요청이 필요합니다. 401 Unauthorized 오류가 발생하면 Logstash 구성 파일에서 FGAC 사용을 설정합니다.

Logstash 파일 예제:

output {
  opensearch {
    hosts => ["https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    ilm_enabled => false
    user => "my-username"
    password => "my-password"
  }
}

403 Forbidden 오류

Logstash를 사용하여 데이터를 OpenSearch Service로 보낼 때 403 Forbidden 오류가 발생할 수 있습니다. 이 오류는 Logstash에 필요한 권한이 없고 AWS Identity Access Management(IAM) 자격 증명을 확인하지 못할 때 발생합니다. 이 문제를 해결하려면 IAM 보안 인증을 사용하여 OpenSearch Service에 대한 요청에 서명하세요.

Logstash를 사용하여 OpenSearch Service 요청에 서명합니다.

1.OpenSearch Service용 Logstash 플러그인을 설치합니다.

bin/logstash-plugin install logstash-output-opensearch

2.인스턴스에 IAM 역할을 연결합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "[Amazon-OpenSearch-Domain-ARN]"
    }
  ]
}

3.“opensearch” Logstash 플러그인을 파이프라인의 출력으로 사용하도록 Logstash 구성 설정을 업데이트합니다.

output {
  opensearch {
    hosts => ["domain-endpoint"]
    ssl => true
    region => "us-east-1"
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
}

Logstash x-pack 설치 오류

Logstash를 시작할 때 x-pack에서 오류가 발생하면 레지스트리 파일에서 x-pack 플러그인을 수동으로 끕니다.

x-pack 플러그인을 수동으로 끕니다.

1.다음 파일을 엽니다.

/usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb

2.load_xpack을 찾아 인라인으로 주석 처리합니다.

"load_xpack unless LogStash::OSS" >> "#load_xpack unless LogStash::OSS"

**참고:**구성 파일을 검사하여 인덱스 수명 관리(ILM) 설정인 ilm.enabledilm_enabled가 모두 false로 설정되어 있는지 확인할 수 있습니다. 구성 파일에서 이러한 ILM 설정을 끄면 x-pack 플러그인의 시작 오류가 제거됩니다.

관련 정보

Logstash를 사용하여 Amazon OpenSearch Service에 데이터 로드

AWS 공식
AWS 공식업데이트됨 일 년 전