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