Observability:运用 Fleet 来轻松地导入 Nginx 日志

Posted Elastic 中国社区官方博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Observability:运用 Fleet 来轻松地导入 Nginx 日志相关的知识,希望对你有一定的参考价值。

在我之前的文章:

我有讲到如何使用 Ingest Manager 简化数据输入。今天我重新看了一下界面确实变了很多,这就是为什么实验版本的功能一直在演化中。Ingest Manager 的名字也被修改为 Fleet。另外从 7.13 开始,开始引入 Fleet Server。Fleet Server 是 Elastic Stack 的一个组件,用于集中管理 Elastic Agent。 它作为 Elastic Agent 的一部分在用作服务器的主机上启动。 一个 Fleet Server 进程可以支持多个 Elastic Agent 连接,并作为一个控制面来更新代理策略、收集状态信息和协调跨 Elastic Agent 的操作。

Fleet Server 是 Elastic Agent 用来与 Elasticsearch 通信的机制:

  • 创建新的代理策略后,它会保存到 Elasticsearch。
  • 为了注册该策略,Elastic Agents 使用为身份验证生成的注册密钥向 Fleet Server 发送请求。
  • Fleet Server 接收请求并从 Elasticsearch 获取代理策略,然后将该策略发送到在该策略中注册的所有 Elastic Agent。
  • Elastic Agent 使用策略中的配置信息来收集数据并将其发送到 Elasticsearch。
  • Fleet Server 会定期检查 Elastic Agent 的状态信息。
  • 当策略更新时,Fleet Server 从 Elasticsearch 检索更新的策略并将其发送到连接的 Elastic Agent。

Fleet Server 作为 Elastic Agent 内的子进程运行。Agent 使用描述 Fleet Server 配置的特殊策略。 在大规模 self-managed 部署或在 Elastic Cloud 上托管的 Elasticsearch 服务中,Fleet Server 通常作为专用的 Elastic Agent 通信主机运行,但你可以选择将其用于自我管理集群上的数据收集。

在今天的文章中,我将基于 7.13 的版本如何使用 Fleet 导入 Nginx 日志。

安装

Elastic Stack

我们可以按照我之前的文章 “Security:如何安装 Elastic SIEM 和 EDR” 来安装 Elasticsearch 及  Kibana。我们为 Elasticsearch 及 Kibana 配置上安全及 HTTPS 访问,尽管 HTTPS 不是不必要的。针对我的配置,我使用一台 Ubuntu 系统的集群安装 Elasticsearch 及 Kibana,并且它的 IP 地址为 193.168.0.4。安装完毕后,我们必须使用 https://192.168.0.4:5601 来登录 Kibana:

nginx 及 Nodejs 

我们可以按照我之前的文章 “Beats:使用 Elastic Stack 对 Nginx Web 服务器监控”。在那篇文章中,我们跳过按照 Elasticsearch 及 Kibana。我们直接进入到安装 Nodejs 及 Ngnix 部分。我们需要同时运行那个 samplenodejs 的应用。

等我们安装好后,我们可以在 Mac OS 的浏览器中输入地址 192.168.0.4。

它说明我们的 Nginx 工作是正常的。我们可以仔细查看一下 Ubuntu 机器下如下的位置的 log 文件:

$ pwd
/var/log/nginx
liuxg@liuxgu:/var/log/nginx$ ls *.log
access.log  error.log

上面是在 Ubuntu OS 机器下的 Nginx  的日志文件的位置。记住这个信息。我们在一下的练习中将会用到。

安装 Elastic Agent

我打开 Kibana:

 在 Kibana 中它已经集成了许多的开箱即用的应用及服务。如上图所示,我们可以找到 Nginx 的服务集成,虽然目前还处于一个实验的阶段。

点击进去,我们可以查看到 Nginx 的一些介绍。在上面,我们可以看到 Nginx 的 Dashboard 的一些截屏。

我们点击 Policies:

 如上所示,我们可以看到已有的 policy。在通常的情况下,我们可以直接使用 Default Policy。在今天的练习中,我们来创建一个属于自己的 policy:

 

这样就创建了一个叫做 nginx_demo 的 policy。点击上面的 nginx_demo:

 在这个 policy 里面,它已经包含了一个叫做 system-1 的 integration。我们可以点击 Edit integration 来查看这个 integration 里到底包含一些啥东东:

 如上所示,它采集系统的日志,Windows 系统的事件以及系统的指标等等。当然对于我们的 nginx_demo 这个 policy 来说,我们甚至可以删除 system-1 这个 integration,如果我们不是对它里面所采集的信息感兴趣的话。针对我的配置,我选择保留。接下来,我们来添加 nginx 这个 integration:

 

 我们接着根据我们的系统上的 log 的位置来进行配置上面的选项。针对我的情况,它上面显示了 Linux 系统上的 access.log 及 error.log 的正确位置,所以我不需要做任何的修改。如果是是 Mac OS 系统,你可能需要根据自己的日志的位置来进行相应的修改。

 点击上面的 Save integration 按钮:

 如上图所示,我们可以看见一个新增加的 nginx-1 的 integration。

接下来,我们点击 Agents。我们按照提示来进行安装:

在进行如下的步骤之前,我们必须添加 Fleet 服务器。这是一个从 7.13 开始的要求。我们添加一个 Fleet 服务器的地址:

我们点击 Go to download page。针对我的情况,我安装 DEB 版本的 Elastic Agent:

curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-7.13.4-linux-x86_64.tar.gz

我使用如下的命令来进行安装:

tar xzf elastic-agent-7.13.4-linux-x86_64.tar.gz

我们使用如下的方法来启动 Fleet Server:

 针对我的情况,我有使用自签名的证书。我们需要参考链接  Fleet User Guide。根据文档,我们必须使用选项 --insecure 来运行。

在运行之前,我们把证书拷贝到 Ubuntu 机器的如下地址:

sudo cp ca.crt /usr/local/share/ca-certificates

然后,我们使用如下的方法来进行更新:

sudo update-ca-certificates
sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...

Adding debian:ca.pem
done.
done.

接着,我们使用如下的命令来运行 elastic-agent:

sudo ./elastic-agent install -a /home/liuxg/beats/ca.crt -f --fleet-server-es=https://192.168.0.4:9200 --fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE2MjczNzQ4MTgyNjI6UkhtVk80cldRNU9ZZ19sYVVWUHlzZw --insecure

请注意上面的 --insecure 选项。

 当我们运行完上面的命令后,我们可以再次查看 Agents:

 当我们看到上面的状态从 updating 变为 Healthy,它表明我们的安装时成功的。在上面,我们看到它绑定的 Agent policy 不是我们想要的 nginx_demo。我们需要修改为 nginx_demo。

 

 

查看数据

我们在 Discover 上查看数据。我查找 logs-* 索引模式。 

我们也可以找到相关的 Nginx 的 Dashboard:

 也许你已经看出来了。在以前,如果我们使用 Filebeat 来收集日志的话,我们可以看到 Filebeat 的日志。现在它变成了 [Logs Nginx] Overview:

 我们可以通过如下的方式来查看已经收到的日志信息:

GET logs-nginx.access-*/_search

 通过使用 Fleet,一个好处是通过上面的 nginx 相关的 data stream 的搜索,它可以帮我们限定更加小的范围进行搜索,从而提高搜索的效率。如果是像之前的那种搜索 filebeat-*,我们可能会工作于一个比较大的索引,从而增加搜索的开支。同样,如果我们搜索 error,我们可以使用如下的方式来进行搜索:

GET logs-nginx.error-*/_search

以上是关于Observability:运用 Fleet 来轻松地导入 Nginx 日志的主要内容,如果未能解决你的问题,请参考以下文章

Observability:在生产环境中配置 Fleet Server 和 Elastic Agent 之间的安全

Observability:如何在最新的 Elastic Stack 中使用 Fleet 摄入 system 日志及指标

Observability:如何使用 Elastic Agents 把微服务的数据摄入到 Elasticsearch 中

OpenTelemetry项目中的Observability

Observability:在 Elastic Observability 部署中添加免费和开放的 Elastic APM

Observability:在 Elastic Observability 部署中添加免费和开放的 Elastic APM