주:

Fluentd를 사용하여 Elastic Cloud에 Oracle Cloud Infrastructure 로그 수집

소개

Oracle Cloud Infrastructure(OCI)는 종합적인 로깅 기능을 제공하지만, 이러한 로그를 Elastic과 같은 외부 시스템과 통합하려면 강력한 로그 배송업체가 필요합니다. 데이터 수집과 소비를 통합할 수 있는 널리 사용되는 오픈 소스 데이터 수집기가 많이 있습니다.

자세한 내용은 Log Shippers를 사용하여 타사 SIEM 플랫폼에 Oracle Cloud Infrastructure 로그 수집Vector를 사용하여 New Relic에 Oracle Cloud Infrastructure 로그 전송을 참조하여 사용 사례에 가장 적합한 솔루션을 결정하십시오.

이 자습서에서는 Fluentd를 로그 배송업체로 사용하여 OCI 로그를 Elastic Cloud로 수집하는 자세한 작업을 안내합니다.

Fluentd

Fluentd는 Treasure Data에서 개발한 강력한 오픈 소스 데이터 수집기이며 현재 CNCF의 일부이며 다양한 시스템 전반에서 로그 데이터 수집, 변환 및 배포를 간소화하도록 설계되었습니다. 다양한 소스에서 로그를 수집하고, 파서 및 필터 플러그인을 사용하여 처리하고, Elastic, Kafka 또는 클라우드 스토리지와 같은 대상으로 전달하는 통합 로깅 계층 역할을 합니다. Fluentd는 컴퓨팅 인스턴스에서 로그 배송업체로 배포하여 OCI 로깅 서비스에서 로그를 캡처하고 이를 Elastic에 전달하여 모니터링 및 분석을 향상시킬 수 있습니다.

Fluentd가 Elastic으로 로그를 전달하면 로그 데이터의 실제 성능이 잠금 해제됩니다. 탄력적인 보안 인덱스는 로그 데이터를 구조화된 형식으로 저장하여 강력한 검색, 분석 및 시각화 기능을 제공합니다. 사용자는 Elastic의 전체 텍스트 검색 엔진을 활용하여 로그를 실시간으로 쿼리 및 집계하고, 패턴을 발견하고, 이상을 식별하고, 실행 가능한 인사이트를 생성할 수 있습니다. 또한 Kibana와 같은 도구를 사용하면 대화형 대시보드를 통해 로그를 시각화할 수 있으므로 원시 로그 데이터를 직관적인 시각적 표현으로 변환하여 애플리케이션 성능을 모니터링하고, 보안 위협을 감지하고, 운영 문제를 효과적으로 해결할 수 있습니다.

다음 그림과 같이 솔루션 아키텍처의 상위 레벨 표현을 살펴보겠습니다.

편집 버튼

목표

필요 조건

작업 1: 로그 스트리밍을 위한 OCI 준비

  1. OCI Logging에서 로그를 사용으로 설정합니다.

    이 자습서에서는 감사 로그를 사용합니다. 사용 사례를 기반으로 서비스 또는 사용자정의 로그를 사용으로 설정할 수도 있습니다. 자세한 내용은 로깅 개요를 참조하십시오.

  2. 스트림 생성.

    Fluentd가 배송 로그를 시작하기 전에 데이터에 일관된 소스가 필요합니다. OCI에서는 해당 소스가 Kafka 호환 스트림입니다. 스트림을 로그에 대한 중앙 집중식 데이터 파이프라인으로 설정한다고 가정해 보겠습니다. 컴퓨팅 인스턴스에서 네트워킹 서비스까지 OCI 내에서 생성되는 모든 로그 이벤트를 이 스트림으로 지정할 수 있습니다. 이는 로그 데이터를 통합할 뿐만 아니라 Fluentd가 데이터를 가져올 단일 엔드포인트를 갖도록 보장합니다.

    1. 스트림을 생성하려면 스트림 생성을 참조하십시오.

      편집 버튼

    2. 스트림 풀로 이동하여 스트림 풀에서 스트림 이름, 부트스트랩 서버, 사용자 이름 및 사용자에 대해 생성된 인증 토큰을 적어 둡니다. 자세한 내용은 auth token을 참조하십시오.

      이 모든 것이 Fluentd 구성 파일에 필요합니다.

      편집 버튼

  3. OCI Connector Hub 생성.

    OCI 커넥터 허브는 통합관리자 역할을 하며 다양한 서비스에서 스트림으로 로그를 라우팅합니다. OCI 커넥터 허브를 사용하면 감사 로그, 서비스 로그 및 사용자정의 로그가 있는 OCI 로깅 서비스에서 로그를 이동하고 스트림으로 이동하는 커넥터를 정의할 수 있습니다. 커넥터 허브를 생성하려면 다음 정보를 입력합니다.

    • 출처: 로깅을 선택합니다.
    • 대상: 스트리밍을 선택합니다(2단계에서 생성한 스트림 선택).
    • 필요한 OCI IAM 정책을 생성하려면 자동으로 정책 생성을 선택합니다.

    편집 버튼

    편집 버튼

    편집 버튼

    자세한 내용은 로깅 소스로 커넥터 생성을 참조하십시오.

작업 2: Fluentd 설치 및 구성

스트림이 작동하고 실행되면 Fluentd를 설정할 때입니다. 여기서 목표는 OCI 컴퓨팅 인스턴스에 Fluentd를 배포하고 스트림의 로그를 소비하도록 구성하는 것입니다.

OCI Compute 인스턴스를 선택해야 하는 이유 이를 OCI 로그와 Elastic Cloud 간의 격차를 해소하는 중개자로 생각해 보십시오. 여기서 Fluentd는 스트림에서 데이터를 수집하고 Elastic으로 중계합니다.

인스턴스에 SSH로 접속하고 Treasure Data 패키지 관리자를 사용하여 Fluentd를 설치합니다.

curl -fsSL https://toolbelt.treasuredata.com/sh/install-redhat-fluent-package5-lts.sh | sh

Fluentd가 설치되었는지 확인하는 버전을 확인합니다.

fluentd --version

참고: OCI에서 컴퓨트 인스턴스를 시작하는 경우 사용자정의 로그에 대한 추가 기능이 사용 안함으로 설정되었는지 확인하십시오.

작업 3: Kafka 및 Elasticsearch에 플러그인 설치

이제 Fluentd가 준비되었으므로 플러그인을 장착해야합니다. 이 아키텍처에서 Fluentd는 스트림 데이터의 소비자와 Elasticsearch로의 전달자 역할을 합니다. 이렇게 하려면 두 개의 키 플러그인을 설치해야 합니다.

두 플러그인을 모두 설치하려면 다음 명령을 실행하십시오.

fluent-gem install fluent-plugin-kafka fluent-plugin-elasticsearch

작업 4: stdout를 사용하여 출력 로그 확인

로그를 Elasticsearch로 전달하기 전에 로그 수집 플로우가 작동 중인지 확인하는 것이 좋습니다. 여기서는 stdout가 들어옵니다. 데이터를 Elastic으로 전송하기 전에 스트림에서 데이터가 올바르게 흐르도록 보장합니다.

  1. 이를 구현하려면 /etc/fluent/fluentd.conf에 있는 Fluentd 구성을 업데이트합니다.

    	<source>
    	@type kafka_group
    	brokers <stream_endpoint>:9092
    	topics <stream_topic>
    	format json
    	username <username>
    	password <password>
    	ssl_ca_cert /etc/fluent/kafka_chain.pem
    	sasl_over_ssl true
    	consumer_group fluentd-group
    	<parse>
    		@type json
    	</parse>
    	</source>
    
    	<match **>
    	@type stdout
    	</match>
    
  2. 이에 따라 <stream_endpoint><stream_topic>bootstrap server스트림 이름으로 바꿉니다. 또한 <username><password>를 태스크 1.2에서 수집된 OCI의 Kafka 접속 설정 세부정보로 바꿉니다. 사용자 이름에는 <tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.##############와 같이 도메인을 추가해야 합니다.

    참고:

    • ssl_ca_cert는 서버 인증서(OCI Streaming 인증서), 중간 및 루트 인증서를 포함해야 하는 PEM 형식의 전체 인증서 체인이어야 합니다.

    • OCI Streaming과 신뢰할 수 있는 TLS 연결을 설정하려면 먼저 openssl 명령을 사용하여 서버 및 중간 인증서를 추출합니다. openssl s_client -showcerts -connect cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092 -servername cell-1.streaming.us-ashburn-1.oci.oraclecloud.com < /dev/null | \\nsed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' > kafka_chain.pem.

    • 그러면 인증서 체인이 kafka_chain.pem라는 파일에 저장됩니다. 그런 다음 DigiCert Global Root G2 인증서를 OCI Streaming에서 사용하는 신뢰할 수 있는 루트 인증서로 DigiCert Root Certificates 페이지에서 PEM 형식으로 다운로드하고 root.pem로 저장합니다. 마지막으로 cat root.pem >> kafka_chain.pem 명령을 사용하여 체인 파일에 루트 인증서를 추가합니다.

    • 이로 인해 kafka_chain.pem의 전체 인증서 체인이 생성되며, OCI Streaming과의 보안 연결을 위해 TLS 클라이언트가 사용할 준비가 되었습니다.

  3. 다음 명령을 실행하여 Fluentd를 시작하고 출력을 모니터합니다.

    $ sudo systemctl restart fluentd.service
    $ sudo systemctl status fluentd.service
    $ sudo cat /var/log/fluent/fluentd.log
    

모든 것이 작동하는 경우 스트림의 로그가 Fluentd 로그에 나타나기 시작합니다. 이렇게 하면 앞으로 이동하기 전에 데이터 파이프라인이 예상대로 작동하게 됩니다.

작업 5: 탄력적 클라우드로 로그 전달

파이프라인이 확인되면 Fluentd를 재구성하여 로그를 Elastic Cloud로 전달해야 합니다. 이 작업은 Fluentd를 단순 로그 소비자에서 완전한 로그 발송자로 변환합니다.

  1. Elastic 출력 플러그인을 포함하도록 구성을 업데이트합니다.

    <source>
      @type kafka_group
      brokers <stream_endpoint>:9092
      topics <stream_topic>
      format json
      username <tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.iad.##########
      password <password>
      ssl_ca_cert /etc/fluent/kafka_chain.pem
      sasl_over_ssl true
      consumer_group fluentd-group
    </source>
    
    <match **>
      @type elasticsearch
      cloud_id ###########
      cloud_auth 'elastic:##########'
      logstash_prefix fluentd
      logstash_format true
      index_name fluentd
    </match>
    

    참고: 클라우드 ID는 Elastic Cloud의 호스트된 Elasticsearch 클러스터에 지정되는 고유 ID입니다. 모든 배포는 자동으로 클라우드 ID를 가져옵니다. 탄력적 사용자에 대한 클라우드 ID비밀번호를 찾으려면 클라우드 ID 찾기를 참조하십시오.

  2. Fluentd를 재시작하여 변경 사항을 적용합니다.

    sudo systemctl restart fluentd.service
    

작업 6: Elasticsearch에서 인사이트 검증 및 잠금 해제

로그가 Elastic으로 성공적으로 스트리밍되고 데이터가 인덱스화되어 효율적인 쿼리를 위해 구조화되었습니다. Elastic의 전체 텍스트 검색 엔진을 사용하면 실시간으로 데이터를 검색, 집계 및 시각화할 수 있습니다.

데이터 뷰를 생성하는 것이 중요합니다. 이 데이터 뷰는 로그 데이터를 구성하는 구조화된 계층 역할을 하며, 이를 통해 귀중한 통찰력을 원활하게 탐색하고 추출할 수 있습니다. 자세한 내용은 데이터 뷰를 참조하십시오.

편집 버튼

편집 버튼

승인

추가 학습 자원

docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.