소개
웹 서버 로그 관리는 웹사이트의 성능을 유지하고, 문제 해결하고, 사용자 행동에 대한 인사이트를 얻는 데 중요합니다. Apache는 가장 인기 있는 웹 서버 중 하나입니다. 그것은 가치 있는 정보를 포함하는 접속 및 에러 로그를 생성합니다. 이러한 로그를 효율적으로 관리하고 분석하기 위해서는, Logstash를 사용하여 이러한 로그를 처리하고 DigitalOcean의 Managed OpenSearch로 인덱싱 및 的可视化을 转发할 수 있습니다.
이 튜orial에서는, Apache 로그를 수집하고 Managed OpenSearch로 분석하기 위해 Logstash를 Droplet에 설치하고 configure 하는 과정을 指导할 것입니다.
사전 요구 사항
- Apache 웹 서버를 설치한 Droplet/s.
- Managed OpenSearch クラスタ
과정 1 – Logstash 설치
Logstash은 二进制 파일로 설치하거나 패키지 仓储(repository)를 사용하여 설치할 수 있습니다. 더 나은 관리와 更新을 위해서는 仓储을 사용하는 것이 일반적으로 建议されます.
이 섹션에서는 APT와 YUM 패키지 관리자를 사용하여 Logstash를 Droplet에 설치하는 것을 도울 것입니다.
OS를 식별해 주세요:
APT 기반 시스템 (Ubuntu/Debian)
공개 서명 키를 다운로드 하고 설치하십시오:
Debian에서 계속하기 전に apt-transport-https
パッケージ을 설치해야 할 수 있습니다:
Repository 정의를 /etc/apt/sources.list.d/elastic-8.x.list
에 저장합니다:
위에 described 한 echo
方法을 사용하여 Logstash 仓储을 추가하십시오. add-apt-repository
를 사용하지 마십시오. 왜냐하면 deb-src
条目을 추가하게 되며 私たち는 소스 パッケージ를 제공하지 않습니다. deb-src
条目을 추가했다면, 다음과 같은 에러가 나실 것입니다:
Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)
/etc/apt/sources.list
파일에서 deb-src
条目을 지웁니다. 그러면 예상대로 설치 should work합니다.
`sudo apt-get update`를 실행하면 仓储이 사용 가능하게 됨니다. 다음과 같이 설치할 수 있습니다:
YUM 기반 시스템 (CentOS/RHEL) 용
공개 서명 키를 다운로드 및 설치하세요:
옆에 있는 /etc/yum.repos.d/logstash.repo
파일에 다음을 추가합니다. 이 파일을 更新하거나 생성하실 때 ‘tee’ 기능을 사용할 수 있습니다.
Ur repository is ready for use. You can install it with:
자세한 정보는 Logstash 설치 指导서를 참조하세요.
Step 2 – Configuring Logstash to Send Logs to OpenSearch
Logstash pipeline consists of three main stages: input, filter, and output. Logstash pipelines use plugins. You can use community plugins or create your own.
-
Input: This stage collects data from various sources. Logstash supports numerous input plugins to handle data sources like log files, databases, message queues, and cloud services.
- 필터: 이 阶段에서는 입력阶段에서 수집한 데이터를 처리하고 변경합니다. 필터는 데이터를 수정하고, 가공하고, 구조화하여 더욱 유용하게 만들고 분석하기 쉽게 만듭니다.
- 출력: 이 阶段에서는 처리된 데이터를 destiny로 보냅니다. destiny는 데이터 베이스, 파일, 그리고 OpenSearch과 같은 데이터 스토어로 구성할 수 있습니다.
的第3步 – Open Search 출력 플러그인 설치
OpenSearch 출력 플러그인은 以下의 명령어를 실행하여 설치할 수 있습니다:
자세한 정보는 이 logstash-output-opensearch-plugin 저장库에 있습니다.
이제 pipeline을 만들겠습니다:
/etc/logstash/conf.d/에 새 파일 apache_pipeline.conf
를 생성하고 다음 내용을 복사하세요.
<OpenSearch_Host>
를 您의 OpenSearch 서버의 主机이름으로 대체하고 <OpenSearch_Password>
를 您的 OpenSearch 암호로 대체하세요.
위의 설정을 분석해봅시다.
-
INPUT: 이 부분은 이벤트의 источник를 구성하는 것을 의미합니다. 이 곳에서는 ‘file’ 인풋 플러그인을 사용합니다.
-
path => “/var/log/apache2/access.log” : Logstash가 읽을 것인 Apache Acces log 파일의 경로를 지정합니다.
Logstash 서비스가 입력 경로에 アクセス할 수 있도록 해야 합니다.
-
start_position => “beginning”: Logstash가 로그 파일을 어디서 읽어들일 지 정하는 것을 의미합니다. “beginning”은 Logstash이 파일을 끝에서 읽어들이지 않고 시작지점부터 처리하는 것을 의미합니다.
-
sincedb_path => “/dev/null”: 로그스싑스에서 로그 파일의 현재 위치를 추적하기 위해 사용하는 sincedb 파일의 경로를 지정합니다. sincedb 파일은 로그스싑스가 재시작 또는 오류 발생 시 그 곳에서 다시 시작할 수 있게 하는 역할을 합니다.
-
tags => “apache_access”: 이 입력으로부터 읽은 이벤트에 тего를 대腹합니다. 로그스싑스 내에서 이벤트를 Identifying하고 filtering하는 것에 유용합니다. 보통 구성의 출력 또는 過濾 阶段에서 downstream로 사용합니다. 우리는 后者에서 tags를 사용합니다.
-
FILTER: 이벤트를 처리하는 용도입니다.
조건부 시작:
이 조건은 들어오는 로그 이벤트의 [tags] 필드에
apache_access
태그가 있는지 확인합니다. 우리는 이 조건을 사용하여 Apache 액세스 및 에러 로그에 적절한 GROK 필터를 적용합니다. -
Apache 액세스 로그용 Grok 필터:
grok 필터
%{HTTPD_COMBINEDLOG}
은 Logstash에서 사전 정의된 패턴으로 Apache 결합 액세스 로그 포맷을 파싱하는 데 사용됩니다. 이것은 IP 주소, 타임스탬프, HTTP 메서드, URI, 상태 코드 등을 수신 이벤트의 message 필드에서 추출합니다. -
Mutate Filter
Remove
(optional): Apache 로그를 해석한 후, certain fields 를 mutate-remove 를 사용하여 제거합니다. -
Else 조건: [tags]에서
apache_access
태그가 없으면 else 블록이 실행된다. 이 else 블록은 Apache 에러 로그를 위한 다른 GROK 필터를 포함하고 있다.이 grok 필터
%{HTTPD24_ERRORLOG}
은 Apache 에러 로그 형식과 일치하는 메시지를 파싱한다. 시간戳, 로그 레벨, 에러 메시지와 같은 에러 로그에 관련된 필드를 추출한다.GROK 패턴은 다음에서 찾을 수 있다: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns.
-
OUTPUT: 출력 플러그인은 이벤트를 특정 목적지로 보냅니다.
출력 区块는 if 조건으로 시작합니다. 여기에서는 if 조건을 사용하고 있습니다.
이 if 조건은 로그를 OpenSearch로 두 개의 separate indexes,
apache_error
와apache_access
로 라우팅하기 위해 사용됩니다.OpenSearch Output plugin에 대해 더 자세히 보기로 합니다.
hosts => "https://XXX:25060" Your Open search Hostname user => "doadmin" Your Open search Username password => "XXXXX" OpenSearch Password index => "apache_error" Index name in OpenSearch ssl_certificate_verification => true Enabled SSL certificate verification
的第 4 步 – Logstash 시작
Pipeline이 구성되면, Logstash 서비스를 시작합니다:
第 5 步 – 문제 해결
연결 가능성 확인
Logstash가 OpenSearch로 연결할 수 있는지 connectivity 测验을 실행할 수 있습니다:
your-opensearch-server를 자신의 OpenSearch 서버의 主机名으로 대체하고, your_username, your_password를 자신의 OpenSearch 凭据로 대체합니다.
데이터 인젝션
OpenSearch에서 데이터가 적절히 인덱스 되는지 확인합니다:
your-opensearch-server를 자신의 OpenSearch 서버의 主机名으로 대체하고, your_username, your_password를 자신의 OpenSearch 凭据로 대체하고, 同样地, your-index-name를 인덱스 이름으로 대체합니다.
防火墙 및 네트워크 구성
로그스틱과 오픈챗를 포트 25060
上で 통신 가능하게 하는 防火墙 규칙과 네트워크 설정을 확인하십시오.
로그
로그스틱의 로그는 /var/log/logstash/logstash-plain.log 에 있습니다.
자세한 정보는 문제 해결 을 참조하십시오.
결론
이 가이드에서는 로그스틱을 사용하여 아帕치 로그를 오픈챗로 수집하고 转发하는 방법을 이해하는 과정을 walked through 했습니다. 이러한 내용을 快速으로 다시 보기 위해 다음과 같이 요약합니다:
로그스틱 설치: 로그스틱을 드랍LET에 설치하는 방법을 이를 Linux 배포판에 따라 APT 또는 YUM 包管理자를 사용하는 것을 다룹니다.
로그스틱 구성 수정: Logstash 구성 파일을 생성하고 수정하여 Apache 로그가 正确的하게 해석되고 OpenSearch로 转发되는 지 확인합니다.
오픈챗에서 확인: OpenSearch Dashboards에서 인덱스 패턴을 설정하여 로그가 적절히 인덱seed되고 분석하는 것이 보이는지 확인합니다.
이러한 과정을 마치면 Logstash가 Apache 로그를 수집하고 OpenSearch로 转发하는 기능적인 구성을 갖추셨습니다.
Source:
https://www.digitalocean.com/community/tutorials/forward-apache-logs-to-opensearch-via-logstash