주:

Fluentd를 사용하여 OCI Logging Analytics에 로그 수집

소개

오픈 소스 데이터 수집기 소프트웨어 Fluentd를 사용하여 소스에서 로그 데이터를 수집합니다. 수집된 로그 데이터를 Oracle Cloud Logging Analytics로 경로 지정하는 OCI Logging Analytics 출력 플러그인을 설치합니다.

주: Oracle은 Oracle Cloud Logging Analytics로 로그 데이터를 입수하는 최적의 환경을 위해 Oracle Cloud Management Agent를 사용할 것을 권장합니다. 그러나 사용 사례에 사용할 수 있는 옵션이 아닌 경우 Fluentd용 OCI Logging Analytics 출력 플러그인을 사용하십시오.

이 자습서에서는 Oracle Linux에 설치된 td-agent rpm 패키지를 기반으로 하는 Fluentd 설정이 사용되지만 다른 Fluentd 배포에서는 필요한 단계가 유사할 수 있습니다.

Fluentd에는 함께 작동하여 입력 소스에서 로그 데이터를 수집하고, 로그를 변환하고, 로그 데이터를 원하는 출력으로 경로 지정하는 구성 요소가 있습니다. 다양한 소스에서 Oracle Cloud Logging Analytics로 로그를 입수하기 위해 Fluentd용 출력 플러그인을 설치하고 구성할 수 있습니다.

그림 fluentd_plugin_overview.png에 대한 설명

목표

1.x 버전에서 2.x 버전으로 OCI Logging Analytics 출력 플러그인 이전

OCI Logging Analytics 출력 플러그인의 새 사용자이고 아직 다운로드하여 설치하지 않은 경우 이 하위 섹션을 건너뛰고 필수 조건으로 이동합니다. fluent-plugin-oci-logging-analytics-1.0.0.gem 파일을 사용하여 version 1.x 플러그인을 설치한 경우 플러그인 version 2.x로 마이그레이션하기 위해 필요한 변경 사항을 확인합니다.

1.x 2.x
global_metadata oci_la_global_metadata
메타 데이터 oci_la_metadata
엔티티 ID oci_la_entity_id
entityType oci_la_entity_type
logSourceName oci_la_log_source_name
logPath oci_la_log_path
logGroupId oci_la_log_group_id

필요 조건

Fluentd 구성 파일 생성

로그 데이터를 Oracle Cloud Logging Analytics로 경로 지정하도록 Fluentd를 구성하려면 Fluentd 또는 td-agent에서 제공하는 구성 파일을 편집하고 Oracle Cloud Logging Analytics 및 기타 사용자정의와 관련된 정보를 제공합니다.

Fluentd 출력 플러그인 구성의 형식은 다음과 같습니다.

<match pattern>
@type oci-logging-analytics
 namespace                   <YOUR_OCI_TENANCY_NAMESPACE>

# Auth config file details
 config_file_location        ~/.oci/config 
 profile_name                DEFAULT

# When there is no credentials for proxy
 http_proxy                  "#{ENV['HTTP_PROXY']}"

# To provide proxy credentials
 proxy_ip                    <IP>
 proxy_port                  <port>
 proxy_username              <user>
 proxy_password              <password>

# Configuration for plugin (oci-logging-analytics) generated logs
 plugin_log_location       "#{ENV['FLUENT_OCI_LOG_LOCATION'] || '/var/log'}" 
 plugin_log_level          "#{ENV['FLUENT_OCI_LOG_LEVEL'] || 'info'}"
 plugin_log_rotation       "#{ENV['FLUENT_OCI_LOG_ROTATION'] || 'daily'}"  **(DEPRECATED)**
 plugin_log_file_size      "#{ENV['FLUENT_OCI_LOG_AGE'] || '1MB'}"
 plugin_log_file_count     "#{ENV['FLUENT_OCI_LOG_AGE'] || '10'}"

# Buffer Configuration
 <buffer>
       @type file
       path                                "#{ENV['FLUENT_OCI_BUFFER_PATH'] || '/var/log'}"
       flush_thread_count                  "#{ENV['FLUENT_OCI_BUFFER_FLUSH_THREAD_COUNT'] || '10'}"
       retry_wait                          "#{ENV['FLUENT_OCI_BUFFER_RETRY_WAIT'] || '2'}"                     #seconds
       retry_max_times                     "#{ENV['FLUENT_OCI_BUFFER_RETRY_MAX_TIMES'] || '10'}"
       retry_exponential_backoff_base      "#{ENV['FLUENT_OCI_BUFFER_RETRY_EXPONENTIAL_BACKOFF_BASE'] || '2'}" #seconds
       retry_forever                       true
       overflow_action                     block
       disable_chunk_backup                true
 </buffer>
	</match>

출력 플러그인이 계속해서 버퍼 청크 쓰기를 실패하고 재시도 시간 초과 임계값을 초과할 때 Fluentd가 백업 데이터를 덤프하는 데 사용하는 보조 플러그인을 구성하는 것이 좋습니다. 또한 복구할 수 없는 오류의 경우 Fluentd가 조각을 즉시 중단하고 보조 또는 백업 디렉토리로 이동합니다. Fluentd Documentation: Secondary Output을 참조하십시오.

출력 플러그인 구성 매개변수

Fluentd 구성 파일에서 다음 매개변수에 적합한 값을 제공하십시오.

구성 매개변수 설명
namespace(필수 매개변수) 업로드할 수집된 로그 데이터가 있는 OCI 테넌시 네임스페이스입니다.
config_file_location OCI 인증 세부정보를 포함하는 구성 파일의 위치입니다.
profile_name 구성 파일에서 사용할 OCI 구성 프로파일 이름
http_proxy 인증서가 없는 프록시입니다. 예: www.proxy.com:80
proxy_ip 인증서가 필요한 경우 프록시 IP 세부정보입니다. 예: www.proxy.com
proxy_port 인증서가 필요한 경우 프록시 포트 세부정보입니다. 예: 80
proxy_username 프록시 사용자 이름 세부정보
proxy_password 인증서가 필요한 경우 프록시 비밀번호 세부정보
plugin_log_location 자체 로그를 쓰기 위한 출력 플러그인에 대한 파일 경로입니다. 경로가 존재하며 액세스 가능한지 확인하십시오. 기본값: 작업 디렉토리.
plugin_log_level 출력 플러그인 로깅 레벨: DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN. 기본값: INFO.
plugin_log_rotation (DEPRECATED) 출력 플러그인 로그 파일 교체 빈도: 일별, 주별 또는 월별입니다. 기본값: daily.
plugin_log_file_size 교체할 로그 파일을 가리키는 최대 로그 파일 크기입니다.'(1KB, 1MB 등). 기본값: 1MB.
plugin_log_file_count 보관할 아카이브/회전된 로그 파일 수(0보다 큼)입니다. 기본값: 10.

OCI 컴퓨트 노드에 대해 config_file_locationprofile_name 매개변수를 지정하지 않으면 instance_principal 기반 인증이 사용됩니다.

버퍼 구성 매개변수

이전 섹션에서 편집한 것과 동일한 구성 파일에서 버퍼 섹션을 수정하고 다음과 같은 필수 정보를 제공합니다.

필수 매개변수 설명
@type 백엔드로 사용할 플러그인을 지정합니다. file을 입력합니다.
path 버퍼 파일이 저장되는 경로입니다. 경로가 존재하며 액세스 가능한지 확인하십시오.

다음 선택적 파라미터가 버퍼 블록에 포함될 수 있습니다.

선택 매개변수 기본값 설명
flush_thread_count 1 조각을 병렬로 비우거나 쓸 스레드 수입니다.
retry_wait 1s 다음 번 재시도 후 비우기를 기다리는 시간(초)입니다.
retry_max_times 없음 retry_forever 필드가 false인 경우에만 필수입니다.
retry_exponential_backoff_base 2 지수 백오프의 다음 상수 요소 이전 대기 시간(초)입니다.
retry_forever false true인 경우 플러그인은 retry_max_times 옵션을 무시하고 영구적으로 비우기를 재시도합니다.
overflow_action throw_exception 가능한 값: throw_exception / block / drop_oldest_chunk. 권장 값: block.
disable_chunk_backup false false로 지정된 경우 백업 디렉토리의 복구할 수 없는 조각이 폐기됩니다.
chunk_limit_size 8MB 각 조각의 최대 크기입니다. 조각 크기가 이 크기가 될 때까지 이벤트가 조각으로 기록됩니다. : 지정된 값에 관계없이 Logging Analytics 출력 플러그인은 현재 기본값을 1MB로 설정합니다.
total_limit_size 64GB(파일용) 저장된 버퍼의 총 크기가 이 임계값에 도달하면 모든 추가 작업이 오류로 실패하고 데이터가 손실됩니다.
flush_interval 60s 출력 플러그인에 대한 조각 비우기 빈도입니다.

가능한 매개변수 값에 대한 자세한 내용은 Fluentd Documentation: Buffer Plugins를 참조하십시오.

수신 로그 이벤트의 형식 확인

수신 로그 이벤트는 Oracle에서 제공하는 Fluentd 플러그인이 로그 데이터를 처리하고 청크한 후 Oracle Cloud Logging Analytics로 전송할 수 있도록 특정 형식이어야 합니다.

Example Input Configuration에서 syslog, apachekafka 로그 파일을 모니터하는 데 사용할 수 있는 예제 구성을 확인합니다.

소스/입력 플러그인 구성

syslog 로그에 대한 소스 구성의 예:

<source>
  @type tail
  @id in_tail_syslog
  multiline_flush_interval 5s
  path /var/log/messages*
  pos_file /var/log/messages*.log.pos
  read_from_head true
  path_key tailed_path
  tag oci.syslog
  <parse>
    @type json
  </parse>
</source>

다음 매개변수는 소스 블록을 정의하는 데 필수적입니다.

소스 블록에 포함될 수 있는 선택적 매개변수는 다음과 같습니다.

다른 매개변수에 대한 자세한 내용은 Fluentd Documentation: tail을 참조하십시오.

필터 구성

이러한 매개변수를 사용하여 로그 처리에 사용해야 하는 Logging Analytics 리소스를 나열할 수 있습니다.

입력 소스의 로그가 Oracle에서 제공하는 출력 플러그인에서 처리될 수 있는지 확인하려면 예를 들어, record_transformer 필터 플러그인을 구성하여 형식이 적절히 변경되도록 하여 입력 로그 이벤트가 규정된 형식을 준수하는지 확인합니다.

팁: record_transformer 필터 플러그인을 구성하는 것은 수신 이벤트에서 필요한 매개변수를 포함하는 방법 중 하나일 뿐입니다. 다른 방법은 Fluentd Documentation을 참조하십시오.

필터 구성 예:

    <filter oci.kafka>
    @type record_transformer
    enable_ruby true
    <record>
        oci_la_metadata KEY_VALUE_PAIRS
        oci_la_entity_id LOGGING_ANALYTICS_ENTITY_OCID              # If same across sources. Else keep this in individual filters
        oci_la_entity_type LOGGING_ANALYTICS_ENTITY_TYPE            # If same across sources. Else keep this in individual filters
        oci_la_log_source_name LOGGING_ANALYTICS_SOURCENAME
        oci_la_log_group_id LOGGING_ANALYTICS_LOGGROUP_OCID
        oci_la_log_path "${record['tailed_path']}"
        message ${record["log"]}                            # Will assign the 'log' key value from json wrapped message to 'message' field
        tag ${tag}
    </record>
    </filter>`

필터 블록에 다음과 같은 필수 정보를 제공합니다.

선택적으로 필터 블록에 다음 추가 매개변수를 제공할 수 있습니다.

다음 로그를 모니터하는 데 사용할 수 있는 구성의 예는 다음과 같습니다.

출력 플러그인 설치

Oracle에서 제공하는 gem 파일을 사용하여 OCI Logging Analytics 출력 플러그인을 설치합니다. 이 절의 단계는 Oracle Linux에 설치된 td-agent rpm 패키지를 기반으로 하는 Fluentd 설정에 대한 단계입니다.

  1. 다음 명령을 실행하여 출력 플러그인을 설치합니다.

    gem install fluent-plugin-oci-logging-analytics
    

자세한 내용은 RubyGems: https://rubygems.org/gems/fluent-plugin-oci-logging-analytics에서 Fluentd Output plugin to ship logs/events to OCI Logging Analytics을 참조하십시오.

  1. Systemd가 td-agent 사용자로 td-agent를 시작합니다. td-agent 사용자에게 OCI 파일 및 폴더에 대한 액세스 권한을 부여합니다. td-agent를 서비스로 실행하려면 OCI Logging Analytics 출력 플러그인 폴더 및 .oci pem 파일(예: chown td-agent [FILE])에 대해 chown 또는 chgrp 명령을 실행합니다.

  2. Oracle Cloud Logging Analytics에서 로그 수집을 시작하려면 td-agent를 실행하십시오.

    TZ=utc /etc/init.d/td-agent start
    

    로그 수집 중 또는 설정 중 문제가 발생하는 경우 로그 파일 /var/log/td-agent/td-agent.log를 사용하여 디버그할 수 있습니다.

    언제든지 td-agent를 중지하려면 다음 명령을 실행합니다.

    TZ=utc /etc/init.d/td-agent stop
    

Logging Analytics에서 로그 보기 시작

로그 탐색기로 이동하고 Oracle Cloud Logging Analytics의 [시각화] 패널을 사용하여 로그 데이터를 더 잘 이해하고 분석할 수 있는 형식으로 봅니다. 데이터 집합으로 달성하고자 하는 내용을 기반으로 애플리케이션에 가장 적합한 시각화 유형을 선택할 수 있습니다.

검색 질의를 생성하고 실행한 후 추가 재사용을 위해 로그 검색을 위젯으로 저장하고 공유할 수 있습니다.

Oracle 정의 위젯 또는 생성한 사용자정의 위젯을 추가하여 [대시보드] 페이지에서 사용자정의 대시보드를 생성할 수 있습니다.

Prometheus를 사용하여 Fluentd 모니터링

Prometheus를 사용하여 Fluentd를 선택적으로 모니터할 수 있습니다. 아래 측정항목 및 Fluentd에서 Prometheus로 내보낸 기타 측정항목을 노출하는 단계는 Fluentd Documentation: Monitoring by Prometheus을 참조하십시오. Fluentd 코어 및 이러한 측정 단위만 모니터하려는 경우 참조된 Fluentd 설명서에서 Step 1: Counting Incoming Records by Prometheus Filter PluginStep 2: Counting Outgoing Records by Prometheus Output Plugin 단계를 건너뜁니다.

Fluentd 플러그인은 Prometheus 형식으로 다음 메트릭을 내보내 플러그인에서 수집 및 처리한 데이터에 대한 통찰력을 제공합니다.

Metric Name: oci_la_fluentd_output_plugin_records_received 
labels: [:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set]
Description: Number of records received by the OCI Logging Analytics Fluentd output plugin.
Type : Gauge

Metric Name: oci_la_fluentd_output_plugin_records_valid 
labels: [:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set]
Description: Number of valid records received by the OCI Logging Analytics Fluentd output plugin.
Type : Gauge 

Metric Name: oci_la_fluentd_output_plugin_records_invalid 
labels: [:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set,:reason]
Description: Number of invalid records received by the OCI Logging Analytics Fluentd output plugin. 
Type : Gauge

Metric Name: oci_la_fluentd_output_plugin_records_post_error 
labels: [:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set,:error_code, :reason]
Description: Number of records failed posting to OCI Logging Analytics by the Fluentd output plugin.
Type : Gauge
    
Metric Name: oci_la_fluentd_output_plugin_records_post_success 
labels: [:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set]
Description: Number of records posted by the OCI Logging Analytics Fluentd output plugin. 
Type : Gauge  

Metric Name: oci_la_fluentd_output_plugin_chunk_time_to_receive
labels: [:tag]
Description: Average time taken by Fluentd to deliver the collected records from Input plugin to OCI Logging Analytics output plugin.
Type : Histogram  

Metric Name: oci_la_fluentd_output_plugin_chunk_time_to_post 
labels: [:oci_la_log_group_id]
Description: Average time taken for posting the received records to OCI Logging Analytics by the Fluentd output plugin.
Type : Histogram

더 알아보기

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 보다 무료 학습 컨텐츠에 접근할 수 있습니다. 또한 education.oracle.com/learning-explorer을 방문하여 Oracle Learning Explorer가 됩니다.

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