Cloud Logging 내보내기 시나리오: Elasticsearch

이 시나리오에서는 Logging에서 선택한 로그를 Elasticsearch 클러스터로 내보내는 방법을 보여줍니다. 이 시나리오에서는 로그 처리를 위해 사용할 수 있도록 Elastic Cloud에 설정된 Elasticsearch 클러스터가 있다고 가정합니다(Elasticsearch 관리형 서비스).

Google Cloud 고객은 Google Cloud Marketplace에서 Google Cloud 계정을 통해 청구가 통합된 Elastic Cloud를 통해 Elasticsearch를 시작할 수 있습니다.

Elasticsearch는 구조화 및 비구조화된 로그, 측정항목, 원격 분석을 분석하기 위해 최적화된 다양한 기능 및 서비스를 제공하는 분산된 RESTful 검색 및 분석 엔진입니다. Google Cloud의 Elastic Cloud는 Elastic 및 Google 모두의 업계 선두의 모니터링 및 지원을 제공합니다. 다운타임이나 중단이 거의 없이 자동 백업, 업그레이드, 최신 보안 패치를 가져옵니다.

Google Cloud 계정에서 자체 관리형 Elastic Stack을 위해 유사한 프로세스를 따를 수 있습니다.

이 시나리오는 Logging 내보내기를 위한 설계 패턴 시리즈의 일부입니다.

소개

Elastic Stack은 모든 작업 데이터를 통합한 후 이를 빠르고, 안정적이고, 관련성이 있는 검색 및 실시간 분석으로 가져옵니다. Elastic의 경량형 데이터 전송기인 Beats는 에지에 배치되거나, Cloud 함수로 서버리스로 실행되며, 데이터 수집 및 처리를 위해 사용됩니다. 이를 사용하면 Kibana에서 시각화할 수 있도록 가장 간단한 방법으로 데이터를 Elasticsearch로 처리할 수 있습니다.

Logstash는 여러 소스에서 데이터를 수집하고 Elasticsearch로 처리하거나 여러 출력으로 내보내기 전에 데이터를 크게 변환하려는 경우에 유용하게 사용할 수 있는 처리 도구입니다. Beats 및 Logstash는 해당 이벤트를 Pub/Sub에 게시함으로써 Google Cloud 관련 로그 데이터를 Elasticsearch로 전송하기 위한 목적으로 함께 또는 개별적으로 사용될 수 있습니다.

Beats

Beats에는 로그 및 측정항목 모니터링, 알림, 보고를 집중적으로 수행하는 모듈이 사전 포함된 상태로 제공됩니다. 이 문서에서는 전반적인 관측 솔루션에서 좋은 시작 지점으로 사용될 수 있는 Filebeat에 대해 자세히 다루고, 다른 모듈 및 통합에 대해서도 이후에 다뤄봅니다.

보다 일반적인 Beats 사용 사례에는 다음이 포함됩니다.

  • Auditbeat를 사용하여 감사 데이터 검토 및 보고
  • FilebeatMetricbeat를 사용하여 로그 파일 및 측정항목 분석
  • 서버리스 Functionbeat를 사용하여 클라우드 데이터 모니터링(Cloud 함수)
  • Packetbeat를 사용하여 네트워크 트래픽 추적

다음 다이어그램은 Beats를 사용하여 Google Operations Cloud Logging을 Elasticsearch로 내보내기 위한 한 가지 기본 아키텍처 예시를 보여줍니다. Filebeat for Google Cloud 모듈은 감사, VPC 흐름, 방화벽 로그를 수집합니다. 환경에 포함된 것이 컨테이너, 서버리스 함수, VM, 앱인지 여부에 관계없이 Cloud Logging 싱크는 적절하게 필터링된 데이터를 Pub/Sub 주제로 전송하도록 구성됩니다. Filebeat는 Kibana 내에서 데이터 처리 및 집계가 검색 및 보고되도록 Elasticsearch로 데이터를 전송합니다.

Google Cloud에서 Elastic Cloud로의 처리 흐름 예시입니다. Google Cloud에서 Elastic Cloud로의 처리 흐름 예시입니다.

실시간 로깅 내보내기 설정

이 섹션에서는 Pub/Sub를 사용하여 Filebeat를 통해 Logging에서 Elasticsearch로 실시간 로그를 내보내기 위해 파이프라인을 만듭니다. Pub/Sub 주제는 세부 조정된 필터를 사용하여 관련 로깅 리소스를 수집하기 위해 생성됩니다. 이후 Sink 서비스가 설정되고, 마지막으로 Filebeat가 구성됩니다.

Pub/Sub 주제 설정

내보낸 로그를 수신할 Pub/Sub 주제 설정 안내를 따르세요. 주제 이름을 es-auditlogs-export와 같이 지정합니다. 주제에 구독도 필요하기 때문에, 쉽게 관리할 수 있도록 동일한 이름으로 구독을 만들 수 있습니다. 구독을 구성할 때 기본 설정을 사용합니다. 나중에 Identity and Access Management 권한을 설정할 수 있습니다.

모든 서비스에 감사 로깅 사용 설정

BigQuery를 제외하고 데이터 액세스 감사 로그는 기본적으로 사용 중지됩니다. 모든 감사 로그를 사용 설정하려면 다음 안내를 따르세요.

Google Cloud Console에서 감사 로그를 구성할 수 있습니다.

  1. Cloud Console에서 IAM 및 관리자 메뉴로 이동합니다.

    IAM 및 관리자로 이동

  2. 감사 로그를 클릭한 후 기본 감사 구성을 클릭합니다.

  3. 올바른 로그 유형이 선택되었는지 확인합니다. 여기에서는 관리자 읽기, 데이터 읽기, 데이터 쓰기입니다.

  4. 저장을 클릭합니다.

Google Cloud 감사 로그를 사용 설정합니다. Google Cloud 감사 로그를 사용 설정합니다.

선택적으로 Google Cloud VPC 흐름 및 방화벽 로그를 사용 설정합니다. 선택적으로 Google Cloud VPC 흐름 및 방화벽 로그를 사용 설정합니다.

필터를 사용하여 로깅 내보내기 세부 조정

집계 내보내기 또는 로그 내보내기를 설정한 후에는 로깅 필터를 감사 로그, 가상 머신 관련 로그, 스토리지 로그, 데이터베이스 로그를 내보내도록 세부적으로 조정해야 합니다.

다음 로깅 필터에는 관리자 활동, 데이터 액세스, 시스템 이벤트 감사 로그, 특정 리소스 유형에 대한 로그(여기에서는 Compute Engine 및 Cloud Storage buckets버킷과 BigQuery 리소스)가 포함됩니다.

logName:"projects/PROJECT-ID/logs/cloudaudit.googleapis.com%2Factivity" OR
"projects/PROJECT-ID/logs/cloudaudit.googleapis.com%2Fdata_access" OR
"projects/PROJECT-ID/logs/cloudaudit.googleapis.com%2Fsystem_event" OR
resource.type:gce OR
resource.type=gcs_bucket OR
resource.type=bigquery_resource

PROJECT-ID를 Google Cloud 프로젝트 ID로 바꿉니다. gcloud config get-value project 명령어를 실행하여 프로젝트 ID를 볼 수 있습니다. SERVICE를 Cloud Run 서비스 이름으로 바꿉니다.

싱크 서비스 만들기

로그 라우터 싱크를 만들면 Elasticsearch로 처리되는 올바른 로그가 Pub/Sub 주제로 전송됩니다. 여기에서는 객체에서 올바른 필터가 선택되었는지 확인하는 것이 중요합니다. 자세한 내용은 Google Cloud 감사 로그 작업 권장사항을 참조하세요.

싱크를 만들려면 다음 단계를 따르세요.

  1. Cloud Console에서 작업 로깅 메뉴로 이동한 후 로그 라우터를 클릭합니다.
  2. 올바른 Google Cloud 프로젝트가 선택되었는지 확인한 후 싱크 만들기를 클릭합니다.
  3. Cloud Pub/Sub 주제를 선택하고 다음을 클릭합니다. 싱크 서비스를 만듭니다.

  4. 고급 필터를 만듭니다.

    고급 필터를 만듭니다.

  5. 필터 상자에 다음 텍스트를 입력하고, resource.type="global"과 같이 시스템에서 추가되었을 수 있는 항목은 삭제하고, PROJECT-ID를 해당 프로젝트 이름으로 바꿉니다.

    logName="projects/PROJECT-ID/logs/cloudaudit.googleapis.com%2Factivity" OR
    "projects/PROJECT-ID/logs/cloudaudit.googleapis.com%2Fdata_access" OR
    "projects/PROJECT-ID/logs/cloudaudit.googleapis.com%2Fsystem_event" OR
    resource.type:"gce" OR resource.type="gcs_bucket" OR resource.type="bigquery_resource"
    

    이 필터는 로그를 Elasticsearch로 처리할 수 있는 시작 절차로 사용됩니다. 많은 필터를 이 프로세스로 구성할 수 있습니다.

  6. 필터 제출을 클릭합니다.

    로그 뷰어입니다.

  7. 싱크 이름 gcp_logging_sink_pubsub을 입력하고 싱크 대상을 이전에 만든 es-auditlogs-export로 설정합니다.

    로그 싱크를 만듭니다.

    싱크 만들기를 클릭하면 선택한 대상에 로그 쓰기 권한이 있는 고유한 서비스 계정이 제공됩니다. 다음 단계에 필요하므로 이 정보를 기록해 둡니다.

다음 예시 gcloud 명령어는 올바르게 필터링된 감사 로그를 es-auditlogs-export Pub/Sub 주제에 전송하기 위해 gcp_logging_sink_pubsub라는 싱크를 만듭니다. 이 싱크는 모든 하위 프로젝트를 포함하며 특정 감사 로그를 선택하기 위한 필터링을 지정합니다.

gcloud logging sinks create gcp_logging_sink_pubsub \
    pubsub.googleapis.com/projects/PROJECT-ID/topics/es-auditlogs-export \
    --log-filter='logName="projects/PROJECT-ID/logs/cloudaudit.googleapis.com%2Factivity" OR "projects/PROJECT-ID/logs/cloudaudit.googleapis.com%2Fdata_access" OR "projects/PROJECT-ID/logs/cloudaudit.googleapis.com%2Fsystem_event" OR resource.type:"gce" OR resource.type="gcs_bucket" OR resource.type="bigquery_resource"'

명령어 출력은 다음과 비슷합니다.

Created [https://logging.googleapis.com/v2/projects/project-id/sinks/gcp_logging_sink_pubsub].
Please remember to grant `serviceAccount:p15060-5219@service-account-id.iam.gserviceaccount.com` the Pub/Sub Publisher role on the topic.
More information about sinks can be found at https://cloud.google.com/logging/docs/export/configure_export

API 호출에서 반환된 serviceAccount 항목은 특정 Pub/Sub 주제에 게시자로 추가해야 하는 ID를 보여줍니다. 이 ID는 내보내기를 위해 생성된 Google Cloud 서비스 계정을 나타냅니다. 이 ID에 대상 주제에 대한 게시자 권한을 부여할 때까지는 이 싱크로부터의 로그 항목 내보내기가 실패합니다. 자세한 내용은 다음 섹션 또는 리소스에 대한 액세스 권한 부여 문서를 참조하세요.

Pub/Sub 주제에 대한 IAM 정책 권한 설정

Pub/Sub 게시자 권한과 함께 es-auditlogs-export Pub/Sub 주제에 서비스 계정을 추가하면 해당 주제에 대한 게시 권한이 서비스 계정에 부여됩니다.

서비스 계정에 이 권한을 추가하려면 다음 단계를 따르세요.

  1. Cloud Console에서 Cloud Pub/Sub 주제 페이지를 엽니다.

    주제 페이지로 이동

  2. es-auditlogs-export 주제 이름을 클릭합니다.

  3. 정보 패널 표시를 클릭한 후 구성원 추가를 클릭하여 권한을 구성합니다.

  4. Pub/Sub 게시자 권한이 선택되었는지 확인합니다.

    Pub/Sub 게시자 권한을 선택합니다.

이 필터를 사용하여 로깅 내보내기를 만들고 나면 구성된 프로젝트의 Pub/Sub 주제에 로그 파일이 채워지기 시작합니다. 이 주제가 Cloud Monitoring의 측정항목 탐색기를 사용하여 메시지를 수신하도록 확정할 수 있습니다. 다음 리소스 유형과 측정항목을 사용하여 짧은 시간 동안에 수행되는 메시지-전송 작업의 수를 관찰하세요. 내보내기를 올바르게 구성했다면 다음 스크린샷과 같이 그래프에 0보다 많은 활동이 표시됩니다.

  • 리소스 유형: Cloud Pub/Sub Topic - pubsub_topic
  • 측정항목: Publish message operations - pubsub.googleapis.com/topic/send_message_operation_count
  • 필터: topic_id="es-auditlogs-export"

측정항목 탐색기입니다.

Filebeat 설정

이제 Google Cloud가 감사 로그와 몇 가지 다른 측정항목을 모니터링하므로, 이제 Elastic의 경량형 데이터 전송기인 Filebeat를 설치하고 구성해야 합니다. 동일한 Google Cloud 프로젝트 내에서 호스팅되는 VM과 같은 호스트에 Filebeat를 설치해야 합니다.

Filebeat는 게시된 로그를 수집하고 Elasticsearch로 전송하도록 구성되지만 미리 개발된 여러 시각화 및 대시보드가 포함된 사전 구성된 모듈을 활용하여 애플리케이션, 컨테이너, 시스템 측정항목 모니터링과 같이 더 많은 작업을 수행하도록 쉽게 구성할 수 있습니다.

서비스 계정 만들기

Filebeat 구성을 준비할 때는 Google Cloud 서비스 계정 및 해당 키 파일을 생성해야 합니다. 이 프로세스에 익숙하지 않으면 서비스 계정 키 만들기 및 관리를 참조하세요. JSON 형식으로 파일을 내보내고 gcp-es-service-account.json과 같은 이름을 지정합니다.

Filebeat에서 이 파일을 사용하여 적절한 Pub/Sub 주제로 인증을 수행합니다. Filebeat를 실행하는 호스트에 파일을 저장합니다. 이후 단계에서 이 파일을 올바른 위치로 이동하고 배치합니다.

계정에 Pub/Sub 편집자 역할을 제공합니다. 자세한 내용은 Pub/Sub 액세스 제어를 참조하세요.

서비스 계정 Pub/Sub 편집자 역할

Filebeat 설치

이 문서에서는 Filebeat를 실행할 수 있는 호스트와 기존 Elastic Cloud 배포가 있다고 가정합니다. 하지만 이를 만드는 데에도 몇 분 정도밖에 걸리지 않습니다. 따라서 아직 항목이 없고, 약간의 안내가 필요하면 Elasticsearch 시작 가이드를 참조하세요.

Filebeat 빠른 시작 설치 및 구성 가이드를 참조하거나 yum/RPM 시스템에서 다음을 실행할 수 있습니다.

sudo yum install filebeat

또는 Kibana의 안내를 직접 따르는 것이 더 나을 수도 있습니다.

  1. Kibana 홈페이지에서 로그 데이터 추가를 클릭하여 시작합니다.

    Kibana에서 로그 데이터를 추가합니다.

  2. 아래로 스크롤하여 시스템 로그를 클릭하거나 다른 모듈을 클릭하여 Filebeat 다운로드 및 구성 안내를 확인합니다. 이 모듈을 사용 설정할 필요는 없습니다.

    Filebeat는 여러 모듈이 사전 포함된 상태로 제공됩니다. 이를 사용하려면 해당 모듈만 사용 설정하고 구성하면 됩니다. 이 절차에서는 시스템 로그 모듈을 사용 설정할 필요가 없습니다. 대신 Google Cloud 모듈을 사용 설정합니다.

  3. 운영체제를 선택합니다.

    운영체제가 목록에 없으면 빠른 시작 가이드를 따릅니다. 이 페이지에서는 나중에 필요한 정보가 제공됩니다.

  4. 일반적으로 curl 명령어를 사용하여, 안내에 따라 Filebeat를 다운로드하고 설치합니다.

    Windows 배포에는 다운로드가 필요합니다.

Filebeat 구성

다음 절차에서는 사전 빌드된 elastic 사용자 및 생성된 비밀번호가 사용됩니다. 프로덕션 환경에 사용되는 고유한 역할/사용자를 만드는 것이 좋습니다.

역할 및 사용자 구성 방법에 대한 자세한 내용은 설정에 필요한 권한 및 역할 부여를 참조하세요{: target="external" class="external" track-type="tutorial" track-name="externalLink" track-metadata-position="body" }.

elastic 사용자는 수퍼유저입니다. 이 계정은 관리 또는 테스트 목적으로만 예약되어 있습니다. 이 사용자의 비밀번호를 재설정해야 하면, 사용되는 위치에 관계없이 재설정해야 합니다. 따라서 프로덕션 환경에서는 각 의도된 목적에 따라 순 사용자를 설정하는 것이 가장 좋습니다.

기본적으로 Filebeat와 Elasticsearch 사이에 인증을 설정하는 방법은 키 저장소를 구성하는 방법 또는 filebeat.yml 구성 파일에 사용자 인증 정보를 하드 코딩하는 방법입니다.

다음 중 어느 옵션에 대해서도 cloud.idcloud.auth를 구성해야 합니다.

Kibana에서 이전의 Filebeat 설치 단계에서 cloud.id{: target="external" class="external" track-type="tutorial" track-name="externalLink" track-metadata-position="body" }를 가져오거나 Elasticsearch 서비스 배포{: target="external" class="external" track-type="tutorial" track-name="externalLink" track-metadata-position="body" } 관리 페이지에서 가져올 수 있습니다.

배포 프로세스 중 승인 비밀번호를 아직 저장하지 않았으면 elastic 사용자에 대해 비밀번호를 설정할 수 있습니다. Elastic 사용자 비밀번호 재설정 안내를 따릅니다.

옵션 1 - 키 저장소 사용

Elastic Cloud로 Filebeat를 인증하기 위한 보다 안전한 방법은 Filebeat 키 저장소를 사용하여 보안 비밀 값을 안전하게 저장하는 것입니다.

Filebeat를 실행하는 호스트에서 filebeat keystore 명령어를 실행할 수 있습니다. 이 키 저장소는 클라우드 ID 및 사용자 비밀번호를 암호화하고 Filebeat 또는 다른 Beat에서 이를 변수로 사용할 수 있는 기능을 제공합니다.

다음 단계는 Linux 머신에 적용됩니다. 해당 운영체제에 맞는 도움말이 필요하면 명령어가 조금씩 다를 수 있기 때문에 빠른 시작을 참조하세요.

  1. 키 저장소를 만듭니다.

    sudo filebeat keystore add ES_PWD

    메시지가 표시되면 배포 중 또는 재설정할 때 Elastic 사용자에 대해 제공된 비밀번호를 붙여넣습니다. 그렇지 않고, 사용자를 만들었으면, 해당 사용자의 비밀번호를 입력합니다.

  2. cloud.id 배포를 추가합니다.

    sudo filebeat keystore add CLOUD_ID

    메시지가 표시되면 클라우드 ID를 붙여넣습니다. (Filebeat 설치 단계에 해당하는 경우 따옴표를 포함하지 마세요.)

  3. 이러한 새 변수를 사용하도록 filebeat.yml 파일을 업데이트하고, 현재 디렉터리에 filebeat.yml 파일이 있는지 확인하거나 기존 파일의 전체 디렉터리 경로를 입력합니다.

    echo cloud.id: \"\$\{CLOUD_ID\}\" >> filebeat.yml
    echo cloud.auth: \"elastic:\$\{ES_PWD\}\" >> filebeat.yml
    
  4. 추가적인 유용한 키 저장소 명령어:

    sudo filebeat keystore list - 모든 키 저장소를 나열합니다.

    sudo filebeat keystore --help - 명령어 도움말을 표시합니다.

  5. Google Cloud 모듈 구성으로 건너뜁니다.

자세한 내용은 키 저장소 문서를 참조하세요{: target="external" class="external" track-type="tutorial" track-name="externalLink" track-metadata-position="body" }.

옵션 2 - 직접 파일 수정

선택적으로 Filebeat 설치 또는 빠른 시작 가이드에서 설치 페이지의 안내에 따라 사용자 인증 정보를 해당 파일에 직접 추가하여 filebeat.yml 파일(디렉터리 레이아웃은 환경에 따라 달라짐)을 구성할 수 있습니다.

  1. Filebeat가 Elasticsearch로 데이터를 전송하도록 하려면 filebeat.yml에 잇는 cloud.idcloud.auth의 두 변수를 설정해야 합니다.

    예를 들면 다음과 같습니다.

    # ====== Elastic Cloud =================
    cloud.id: "gcp_filebeat:dXMtY2VudHJhjQZjJkODdkOGJjNmJi" cloud.auth: "elastic:<password>"
    

    여기서 gcp_filebeat는 배포의 이름이고 <password>는 지정한 비밀번호로 바꿔야 합니다.

Google Cloud 모듈 구성

filebeat.yml 파일이 Elasticsearch 서비스에 연결되도록 구성된 다음에는 Google Cloud 모듈을 사용 설정한 후 구성해야 합니다.

  1. googlecloud 모듈을 사용 설정합니다. 예를 들어 Linux 유형에서는 다음을 수행합니다.

    sudo filebeat modules enable googlecloud

    : 다음을 실행하여 사용 설정되는 모듈을 찾을 수 있습니다.

    sudo filebeat modules list

  2. googlecloud 모듈을 사용 설정한 후 modules.d 디렉터리에 있는 특정 YAML 구성 파일을 구성해야 합니다. /usr/share/filebeat 또는 파일이 추출된 위치일 수 있습니다.

감사 로그를 사용 설정하는 예시 googlecloud.yml:

# open {path}/modules.d/googlecloud.yml, add the following

- module: googlecloud
  audit:
    enabled: true
    var.project_id: project-id
    var.topic: es-auditlogs-export
    var.subscription_name: es-auditlogs-export
    var.credentials_file: ${path.config}/gcp-es-service-account.json

var.credentials_file 파일의 위치는 시스템에 따라 달라집니다. 다음 test config 명령어를 실행하여 구성 경로가 가리키는 위치와 이 사용자 인증 정보 파일이 위치할 위치를 표시할 수 있습니다. 또한 Elastic에서 디렉터리 레이아웃 페이지를 참조하세요.

  1. vpcflow방화벽 컬렉션 설정이 사용 설정되지 않았는지 확인합니다.

    - module: googlecloud
      vpcflow:
        enabled: false
      firewall:
        enabled: false
    
  2. 비슷한 명령어를 실행하여 구성을 테스트합니다.

    sudo filebeat test config -e

  3. 서비스 계정 만들기 단계에서 Config path에 대해 이전 명령어로 확인된 위치에 내보낸 JSON 파일을 배치합니다.

    Filebeat 버전이 7.9.2인 Linux CentOs에서 위치는 추출된 위치입니다.

    구성 경로: [/home/UserName/filebeat-7.9.2-linux-x86_64]

    패키징 시스템을 사용하여 설치된 경우 위치는 /etc/filebeat입니다.

  4. setup 명령어를 실행하여 가져온 로그에 대해 구문 분석 및 색인 생성을 올바르게 수행할 수 있는지 확인하고, 대시보드를 포함하여 미리 정의된 시각화를 제공합니다.

    sudo filebeat setup

  5. filebeat를 시작합니다.

    sudo filebeat -e

서비스를 시작할 때 오류가 발생하면 로그가 유용한 정보를 제공합니다. 일반적인 문제는 구성 파일이 배치된 경우입니다. 이 오류는 이 시나리오에서 구성 파일을 배치해야 하는 위치를 나타냅니다. 다른 일반적인 문제는 생성된 서비스 계정과의 인증과 관련이 있습니다.

구성에 문제가 있으면 Elastic 토론 포럼에서 비슷한 상황에 대해 질문을 게시하고 검색할 수 있습니다.

내보낸 로그 사용

내보낸 로그가 Elasticsearch에서 처리된 다음에는 Kibana에 로그인하고 Filebeat GoogleCloud 감사 대시보드를 확인하여 유용한 정보를 얻을 수 있습니다.

  • 감사 소스 위치 - 좌표 지도로 표시
  • 시간별 감사 이벤트 결과 - 세로 막대 그래프로 표시
  • 감사 이벤트 작업 - 원형 차트로 표시
  • 감사 상위 사용자 이메일 - 태그 클라우드로 표시
  • 감사 사용자 에이전트 - 원형 차트로 표시
  • 감사 리소스 이름 - 원형 차트로 표시
  • 감사 이벤트 - 데이터 테이블 또는 JSON 형식으로 나열

감사 로그 대시보드

Logstash

Logstash를 설치하고 사용하고, 데이터를 변환한 후 이를 Elasticsearch로 전송하려면 다음 단계를 따르세요. 시작하거나 테스트 시나리오를 시도하려면 Beats를 실행하는 동일한 VM을 사용할 수 있습니다. 하지만 프로덕션 환경에서는 전용 서버를 사용하는 것이 가장 좋습니다.

Logstash 구성

  1. Logstash 시작하기 가이드에 따라 Logstash를 다운로드하고 설치합니다. 이 가이드에서는 사용자 환경에 따라 몇 가지 배포 옵션을 제공하지만, 자바 버전홈 환경 변수 설정과 같은 최신 기본 요건 및 요구사항도 제공합니다.

  2. Logstash를 사용하면 Filebeat(옵션 1) 또는 Pub/Sub(옵션 2)에서 직접 로그를 처리할 수 있습니다. 어느 경우든 Elasticsearch 엔드포인트 및 elastic 사용자 비밀번호를 알아야 합니다. 이 둘은 Elastic Cloud Console에서 찾을 수 있습니다.

    배포 중 elastic 비밀번호를 저장했을 가능성이 높지만, 필요한 경우 동일한 콘솔에서 보안 링크를 클릭하여 이를 재설정할 수 있습니다.

    Logstash 엔드포인트

옵션 1

Filebeat가 이미 Pub/Sub에서 데이터를 가져오도록 구성되었으므로, Filebeat에서 Logstash 파이프라인으로 데이터를 가져오고, 변환한 후 Elasticsearch로 전송할 수 있습니다.

  1. 이전에 구성된 cloud.idcloud.auth를 주석 처리하여 /etc/filebeat/filebeat.yml 파일을 수정합니다.

    # ====== Elastic Cloud =================
    #cloud.id: "xxx"
    #cloud.auth: "xxx"
    
  2. Elasticsearch 출력에서 output.elasticsearchhosts 줄을 주석 처리합니다.

    # ------ Elasticsearch Output -------------------
    #output.elasticsearch:
    # Array of hosts to connect to.
    #hosts: ["localhost:9200"]
    
  3. Logstash Output 아래의 hosts 앞에서 해시 기호(#)를 삭제합니다.

    # ------ Logstash Output -------------------
    #output.logstash:
    # The Logstash hosts
    hosts: ["localhost:5044"]
    

    그러면 Filebeat 출력이 로컬 호스트로 전송됩니다. 이 시나리오에서 호스트는 포트 5044를 사용하여 Logstash를 실행합니다. 기본적으로 Logstash는 이 포트로 리슨하므로 수정할 필요가 없습니다.

  4. Logstash 파이프라인 구성 파일을 만듭니다.

    sudo vim /etc/logstash/conf.d.beats.conf

    이 파일에는 다음이 포함됩니다.

    input {
      beats {
        port => 5044
      }
    }
    
    output {
      stdout { codec => rubydebug } #Used to validate/troubleshoot
      elasticsearch {
        hosts => ["https://f3041.us-central1.gcp.cloud.es.io:9243"]
        user => "elastic"
        password => "glnvy8k27gwQE8pVPaxW35a"
        index => "logstash-%{+YYYY.MM.dd}"
      }
    }
    

옵션 2

Filebeat를 사용하는 대신 Logstash만 직접 사용하려면 다음 단계에 따라 Logstash에 대해 Pub/Sub 입력 플러그인을 구성합니다.

  1. 안내에 따라 먼저 다음 명령어 또는 해당 환경에 맞는 비슷한 명령어를 실행하여 플러그인을 설치해야 합니다. Linux 환경의 디렉터리는 /usr/share/logstash이지만 시스템에 따라 다를 수 있습니다.

    bin/logstash-plugin install logstash-input-google_pubsub

  2. Google Cloud 인증은 Filebeat 설치에 대해 동일합니다. 이 문서의 이전 서비스 계정 만들기 단계를 참조할 수 있습니다. 키 JSON 파일에 대해 아래 항목이 표시됩니다.

  3. 일반적으로 /etc/logstash/conf.d인 logstash 디렉터리 아래에 저장할 Pub/Sub 구성 파일을 만들고 이름을 pub_sub.conf로 지정합니다.

    구성 파일은 다음과 비슷하게 보입니다. hosts는 Elasticsearch 엔드포인트입니다.

    input { google_pubsub { project_id => "project-id" topic => "es-auditlogs-export" subscription => "es-auditlogs-export" json_key_file => "gcp-es-service-account.json" } }

    output { stdout { codec => rubydebug } #Used to validate/troubleshoot elasticsearch { hosts => ["https://f3041.us-central1.gcp.cloud.es.io:9243"] user => "elastic" password => "glnvy8k27gwQE8pVPaxW35a" index => "logstash-%{+YYYY.MM.dd}" } }

두 옵션 모두 Logstash를 시작한 후 Kibana를 사용하여 유용한 정보를 얻습니다.

  1. Linux와 같은 시스템에서 Logstash를 서비스로 실행해야 합니다. 여기에서는 패키지 관리자를 사용하여 Logstash를 설치합니다. 이를 sudo service logstash start와 같이 서비스로 실행해야 합니다. 다른 시스템에서의 자세한 내용은 Debian 또는 RPM에서 Logstash를 서비스로 실행을 참조하세요.
  2. Linux의 경우 이와 비슷한 명령어를 실행하여 서비스를 검증할 수 있습니다.

    sudo journalctl -u logstash -f
    

Kibana에서 Logstash 컬렉션 보기

이제 Pub/Sub 로그가 Logstash를 사용하여 Elasticsearch로 전송되므로, 데이터를 보기 위해 Kibana 내에서 몇 가지 작업을 수행해야 합니다.

  1. Kibana를 열고 스택 관리로 이동합니다.

    Kibana 스택 관리입니다.

  2. Kibana > 색인 패턴을 클릭합니다.

    Kibana 색인 패턴입니다.

  3. 색인 패턴 만들기를 클릭합니다.

    Kibana 색인 패턴 만들기입니다.

  4. 색인 패턴 이름 필드에 logstash-*를 입력합니다. Logstash를 실행하는 이전 단계로 인해 색인 패턴 일치가 표시됩니다.

    Kibana 색인 패턴 정의입니다.

  5. 다음 단계를 클릭합니다.

  6. 시간 필드 필터에 대해 @timestamp를 선택한 후 색인 패턴 만들기를 클릭합니다.

    Kibana에서 타임스탬프를 선택합니다.

  7. 탐색을 클릭합니다.

    Kibana 탐색입니다.

  8. logstash-* 색인 패턴이 선택되었는지 확인합니다.

    Kibana에서 색인을 선택합니다.

  9. 이제 처리된 데이터를 시각화할 수 있습니다. 로그 및 측정항목을 상관시킬 수 있는 로그 사용과 같이 Kibana로 수행할 수 있는 작업을 자세히 알아봅니다.

    예를 들어 다음 스크린샷에서와 같이 쉼표로 구분된 패턴 목록에 logstash-* 색인을 추가합니다.

    Kibana에서 데이터가 시각화됩니다.

Logstash를 사용한 다음 단계

Logstash 시작하기 웹 세미나 비디오를 보려면 등록하세요. 이 비디오에서는 Logstash의 배경, 아키텍처, 중요 파일의 레이아웃, 필터를 사용하여 파이프라인을 설정하는 방법, 데이터 변환 및 강화 기법 사용 방법을 설명합니다.

다음 단계