简介
有效的Web服务器日志管理对于维护您的网站性能、解决故障问题和深入了解用户行为至关重要。Apache是最受欢迎的Web服务器之一。它生成的访问和错误日志包含宝贵信息。为了高效地管理和分析这些日志,您可以使用Logstash处理并将其转发到DigitalOcean的Managed OpenSearch进行索引和可视化。
在本教程中,我们将指导您在Droplet上安装Logstash,配置它以收集您的Apache日志,并将其发送到Managed OpenSearch进行分析。
先决条件
- 安装了Apache Web服务器的Droplet/s。
- 托管OpenSearch集群
步骤1 – 安装Logstash
Logstash可以通过二进制文件安装,也可以通过软件包仓库安装。为了更方便的管理和更新,通常推荐使用软件包仓库。
在本节中,我们将指导您使用APT和YUM包管理器在Droplet上安装Logstash。
让我们来识别操作系统:
对于基于APT的系统(Ubuntu/Debian)
下载并安装公共签名密钥:
在继续之前,您可能需要在Debian上安装apt-transport-https
包:
将仓库定义保存到/etc/apt/sources.list.d/elastic-8.x.list
:
使用上述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
条目,安装应如预期工作。
运行sudo apt-get update
,仓库即可使用。您可以用以下命令安装:
针对基于YUM的系统(CentOS/RHEL)
下载并安装公钥:
在你的/etc/yum.repos.d/logstash.repo
文件中添加以下内容。你可以使用‘tee’命令来更新和创建该文件。
你的仓库现在可以使用了。你可以使用以下命令安装它:
有关更多信息,请参考安装Logstash指南。
第2步 – 配置Logstash将日志发送到OpenSearch
Logstash管道由三个主要阶段组成:输入、过滤和输出。Logstash管道使用插件。你可以使用社区插件或创建自己的插件。
-
输入:这个阶段从各种来源收集数据。Logstash支持许多输入插件来处理数据源,如日志文件、数据库、消息队列和云服务。
-
过滤:此阶段处理输入阶段收集的数据。过滤器可以修改、丰富和结构化数据,使其更有用且更容易分析。
-
输出:此阶段将处理后的数据发送到目的地。目的地可以包括数据库、文件和像OpenSearch这样的数据存储。
步骤3 – 安装Open Search输出插件
可以通过运行以下命令来安装OpenSearch输出插件:
有关更多信息,请查看此logstash-output-opensearch-plugin代码仓库。
现在让我们创建一个管道:
在路径 /etc/logstash/conf.d/ 中创建一个名为 apache_pipeline.conf
的新文件,并复制以下内容。
将 <OpenSearch_Host>
替换为您的OpenSearch服务器的主机名,将 <OpenSearch_Password>
替换为您的OpenSearch密码。
让我们来分解上述配置。
-
输入:用于配置事件源。这里使用了“文件”输入插件。
-
path => “/var/log/apache2/access.log” :指定了Logstash将从哪个路径读取Apache访问日志文件。
请确保Logstash服务能够访问输入路径。
-
start_position => “beginning”:定义了Logstash应该从哪里开始读取日志文件。 “beginning”表示Logstash应从文件的开头开始处理,而不是从末尾开始。
-
sincedb_path => “/dev/null”: 指定一个sincedb文件的路径。Sincedb文件被Logstash用来跟踪日志文件中的当前位置,使其能够在重启或失败的情况下从停止的地方继续。
-
tags => “apache_access”: 为从这个输入读取的事件分配一个标签。标签在Logstash中用于识别和过滤事件,通常在配置的输出或过滤阶段下游使用。我们用于后者的标签
-
FILTER: 用于处理事件。
开始条件判断:
这检查是否有标签
apache_access
存在于传入日志事件的 [tags] 字段中。我们使用这个条件来应用适当的 GROK 过滤器以处理 Apache 访问和错误日志。 -
Grok 过滤器(用于 Apache 访问日志):
Grok 过滤器
%{HTTPD_COMBINEDLOG}
是 Logstash 中用于解析 Apache 组合访问日志格式的预定义模式。它从传入事件的消息字段中提取 IP 地址、时间戳、HTTP 方法、URI、状态码等信息。 - 自定义分隔符
Mutate Filter
Remove
(optional): 在Apache日志被解析后,我们使用mutate-remove来删除某些字段。自定义分隔符
自定义分隔符
自定义分隔符
-
其他条件:如果[tags]中没有
apache_access
标签,则执行else块。这个else块包含另一个用于解析Apache错误日志的GROK过滤器。这个GROK过滤器
%{HTTPD24_ERRORLOG}
用于解析符合Apache错误日志格式的消息。它提取与错误日志相关的字段,如时间戳、日志级别、错误消息等。GROK模式可以在以下位置找到:https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns。
-
输出:输出插件将事件发送到特定目的地。
输出块从if条件开始。我们在这里使用if条件。
这个if条件用于将日志路由到OpenSearch的两个单独索引
apache_error
和apache_access
。让我们探索OpenSearch输出插件:
hosts => "https://XXX:25060" 您的Open search 主机名 user => "doadmin" 您的Open search 用户名 password => "XXXXX" OpenSearch 密码 index => "apache_error" OpenSearch中的索引名称 ssl_certificate_verification => true 启用SSL证书验证
步骤4 – 启动Logstash
配置好Pipeline后,启动Logstash服务:
步骤5 – 故障排除
检查连通性
您可以通过测试连通性来验证Logstash是否能够连接到OpenSearch:
将your-opensearch-server替换为您的OpenSearch服务器的主机名,将your_username和your_password替换为您的OpenSearch凭据。
数据摄取
确保数据已经被正确地索引到OpenSearch中:
将your-opensearch-server替换为您的OpenSearch服务器的主机名,将your_username和your_password替换为您的OpenSearch凭据。同样,将your-index-name替换为索引名称。
防火墙和网络配置
确保防火墙规则和网络设置允许Logstash和OpenSearch在端口25060
上进行通信。
日志
Logstash的日志可以在/var/log/logstash/logstash-plain.log找到。
具体请参考故障排除。
结论
在本指南中,我们介绍了如何设置Logstash以收集并转发Apache日志到OpenSearch。以下是本指南涵盖的内容摘要:
安装Logstash:我们介绍了如何根据您的Linux发行版,使用APT或YUM包管理器来在您的Droplet上安装Logstash。
配置Logstash:我们创建并调整了Logstash配置文件,以确保Apache日志被正确解析并发送到OpenSearch。
在OpenSearch中验证:我们在OpenSearch Dashboards中设置了一个索引模式,以确认您的日志是否被正确索引并可供分析。
完成这些步骤后,您应该现在拥有一个功能完整的设置,其中Logstash收集Apache日志并发送到OpenSearch。
Source:
https://www.digitalocean.com/community/tutorials/forward-apache-logs-to-opensearch-via-logstash