通过 Logstash 将 Apache 日志传输到 OpenSearch

0 股票
0
0
0
0

介绍

高效的 Web 服务器日志管理对于维护网站性能、排查问题以及深入了解用户行为至关重要。Apache 是最流行的 Web 服务器之一,它会生成包含宝贵信息的访问日志和错误日志。为了有效地管理和分析这些日志,您可以使用 Logstash 来处理它们,并将其发送到 DigitalOcean 的托管 OpenSearch 服务进行索引和可视化。.

在本教程中,我们将指导您在 Droplet 上安装 Logstash,配置它以收集 Apache 日志,并将它们发送到 Managed OpenSearch 进行分析。.

先决条件
  • 安装了 Apache Web 服务器的 Droplet。.
  • 托管 OpenSearch 集群

步骤 1 – 安装 Logstash

Logstash 可以通过二进制文件或软件包仓库进行安装。为了便于管理和更新,通常建议使用软件包仓库。.

在本节中,我们将指导您如何使用 APT 和 YUM 软件包管理器在您的 Droplet 上安装 Logstash。.

我们来识别一下操作系统:

cat /etc/os-release
适用于基于 APT 的系统(Ubuntu/Debian)

下载并安装公钥:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

在继续操作之前,您可能需要在 Debian 系统上安装 apt-transport-https 软件包:

sudo apt-get install apt-transport-https

将存储库定义保存到 /etc/apt/sources.list.d/elastic-8.x.list 中:

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

要添加 Logstash 软件仓库,请使用上面描述的 echo 方法。不要使用 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 条目,安装应该就能正常工作了。.

运行 `sudo apt-get update` 命令,软件源即可使用。您可以使用以下命令:

sudo apt-get update && sudo apt-get install logstash
对于基于 YUM 的系统(CentOS/RHEL)

下载并安装公钥:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

将以下内容添加到您的 /etc/yum.repos.d/logstash.repo 文件中。您可以使用«t»命令更新和创建该文件。.

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

您的水箱已准备就绪。您可以将其与以下产品一起使用:

sudo yum install logstash

更多信息请参阅 Logstash 安装指南。.

步骤 2 – 配置 Logstash 将日志发送到 OpenSearch

Logstash 流水线由三个主要阶段组成:输入、过滤和输出。Logstash 流水线使用插件。您可以使用社区插件,也可以创建自己的插件。.

  • 输入:此阶段从各种来源收集数据。Logstash 支持多种输入插件,用于管理日志文件、数据库、消息队列和云服务等数据源。.
  • 过滤:此阶段处理和转换输入阶段收集的数据。过滤器可以修改、丰富和构建数据结构,使其更具实用性和分析价值。.
  • 输出:此阶段将处理后的数据发送到目标位置。目标位置可以包括数据库、文件和数据存储,例如 OpenSearch。.

步骤 3 – 安装 Open Search Output 插件

可以通过运行以下命令安装 OpenSearch 输出插件:

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

更多信息请参见 logstash-output-opensearch-plugin 仓库。.

现在我们来创建一个管道:

在 /etc/logstash/conf.d/ 路径下创建一个名为 apache_pipeline.conf 的新文件,并将以下内容复制到该文件中。.

input {
file {
path => "/var/log/apache2/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_access"
}
file {
path => "/var/log/apache2/error.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_error"
}
}
filter {
if "apache_access" in [tags] {
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
} else {
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
}
}
output {
if "apache_access" in [tags] {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_access"
ssl_certificate_verification => true
}
} else {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_error"
ssl_certificate_verification => true
}
}
}

使用您的 OpenSearch 服务器的主机名和请替换为您的 OpenSearch 密码。.

让我们来分析一下上面的配置。.

  • 输入:用于配置事件源。此处使用文件输入插件。.
  • path => “/var/log/apache2/access.log”: 指定 Logstash 应该从中读取的 Apache 访问日志文件的路径。.

请确保 Logstash 服务可以访问输入路径。.

  • start_position => “beginning”:指定 Logstash 应从何处开始读取日志文件。“beginning”表示 Logstash 应从文件开头开始处理,而不是从结尾开始。
  • sincedb_path => “/dev/null”:指定 sincedb 文件的路径。Logstash 使用 sincedb 文件来跟踪日志文件的当前位置,以便在重启或崩溃后能够从上次中断的地方恢复。.
  • tags => “apache_access”:为从此输入读取的事件分配标签。标签可用于识别和过滤 Logstash 中的事件,通常用于下游的输出阶段或配置过滤。我们使用标签来实现后者。
  • 过滤器:用于处理事件。.

从条件语句开始:

(if "apache_access" in [tags]):

此语句检查传入日志事件的 [tags] 部分中是否存在 apache_access 标签。我们使用此条件将相应的 GROK 过滤器应用于 Apache 访问日志和错误日志。.

  • Grok过滤器(用于Apache访问日志):
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}

grok 过滤器 %{HTTPD_COMBINEDLOG} 是 Logstash 中预定义的模式,用于解析 Apache 组合访问日志格式。它从接收到的事件的消息体中提取 IP 地址、时间戳、HTTP 方法、URI、状态码等字段。.

  • 修改过滤器删除(可选):解析 Apache 日志后,我们使用 mutate-remove 删除一些字段。.
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
  • 另一个条件:如果 apache_access 标签不在 [tags] 中,则执行 else 代码块。此 else 代码块包含另一个用于 Apache 错误日志的 GROK 过滤器。.
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}

此 %{HTTPD24_ERRORLOG} 过滤器解析符合 Apache 错误日志格式的消息。它提取与错误日志相关的字段,例如时间戳、日志级别、错误消息等。.

您可以在以下位置找到 GROK 模式: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns 寻找。.

  • 输出:该插件会将输出事件发送到指定目标位置。.

输出块以 if 条件语句开头。这里我们使用了条件语句。

if "apache_access" in [tags] {}

如果使用条件将日志路由到 OpenSearch 到两个不同的配置文件 apache_error 和 apache_access。.

我们来看看 OpenSearch Output 插件:

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

配置好管道后,启动 Logstash 服务:

systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service

第五步——故障排除

检查连接。

您可以通过测试连接来验证 Logstash 是否可以连接到 OpenSearch:

curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"

使用 OpenSearch 服务器的主机名和,请替换为您的 OpenSearch 凭据。.

数据摄取

确保数据已在 OpenSearch 中正确建立索引:

curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"

使用 OpenSearch 服务器的主机名和,请替换为您的 OpenSearch 凭据。同样地,名为 Index。.

防火墙和网络配置

请确保您的防火墙规则和网络设置允许 Logstash 和 OpenSearch 在端口 25060 上进行通信。.

日志

与 Logstash 相关的日志可以在 /var/log/logstash/logstash-plain.log 中找到。.

结果

在本指南中,我们设置了 Logstash 来收集 Apache 日志并将其发送到 OpenSearch。以下是我们所涵盖内容的简要概述:

安装 Logstash:我们解释了如何使用 APT 或 YUM 软件包管理器(取决于您的 Linux 发行版)在您的 Droplet 上安装 Logstash。.

Logstash 配置:我们创建并配置了 Logstash 配置文件,以确保 Apache 日志能够被正确解析并发送到 OpenSearch。.

OpenSearch 中的验证:我们在 OpenSearch 控制面板中设置了一个列表模板,以验证您的报告是否已正确索引并可供分析。.

完成这些步骤后,您现在应该已经设置好 Logstash,它可以收集 Apache 日志并将其发送到 OpenSearch。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢