工程

使用 Filebeat 和 Elastic 可观测性监测 Azure 基础架构

访问应用程序生态系统内部状态的能力对于优化应用程序和用户体验至关重要。Microsoft Azure 上的 Elastic Cloud 可让您访问 Elastic 可观测性,这不仅能够实现对基础架构的监测,还能利用在数分钟内便可完成部署的各种资源来查看每个信号之间的相互关系。

通过在 Azure 上使用我们的 Elasticsearch 托管服务,您即可享用一键式升级、默认启用的安全性等诸多优势,帮助您简化 IT 操作。此外,Elastic 可观测性还可帮助您规模化统一日志、指标和 APM 跟踪,让您轻松评估系统的当前状态。您还可以使用 Machine Learning 来检测异常并发出警报,让您知道发生了什么问题,这样您就可以对环境中发生的事件快速做出反应。

在 Azure 监测方面,Elastic 可观测性可以:

在本篇博文中,我们将探索如何使用 Elastic Stack 实现 Azure 可观测性。我建议您在自己的部署中按照以下步骤操作。如果您当前没有部署,请查看 Microsoft Azure 上的 Elastic Cloud 入门这篇博文。通过 Azure Marketplace 注册 Elastic Cloud(Elasticsearch 托管服务)非常简单,为您提供了极大的灵活性,便于充分利用整合式计费的优势。

借助 Elastic 实现 Azure 可观测性

Elastic 可观测性为 Azure 监测提供了一站式解决方案。Filebeat 包含一个开箱即用的 Azure 模块,允许您在自己的生态系统中快速添加这些轻量型采集器。完成安装后,即可开始收集日志事件并将其转发到 ElasticsearchLogstash 进行索引。之后,就可以在功能强大的预构建 Kibana 可视化和仪表板中分析和可视化数据,极大减少了投入使用所需的时间和工作量。

不如我们自己试试吧!

采集 Azure 日志

为了简单起见,您可以在 Kibana 中找到安装 Filebeat 的说明。我们将使用这些步骤部署 Filebeat 来采集前面提到的 Azure 活动、登录和/或审计日志。

下载并安装 Filebeat

从部署 7.10 版开始,可在 Kibana 主页中直接单击 Install Filebeat(安装 Filebeat)。

如果您尚未将部署升级到 7.10 版,请抽时间看一下我们的升级版本文档。升级采用自动执行模式,同时有助于减少计划外停机的时间。

首先,单击导航菜单,然后单击 Home(主页)。

单击 Add data(添加数据)。

然后我们就来到了 Add data(添加数据)菜单。选择 Azure logs(Azure 日志)。

按照这些步骤在系统中安装 Filebeat。您可以单击 View exported fields(查看导出的字段)和 Learn more(了解详情)链接来参考其他 Filebeat 信息。

您可以不关闭这个页面,因为完成以下配置后,我们还会回到这里。

配置 Filebeat

为您的特定系统下载并安装了 Filebeat 之后,您需要修改一下 filebeat.yml 文件。在 Linux 系统上,通常可以在 /etc/filebeat 下找到它。

从 Kibana 运行这个过程的最大好处在于,它会为您展示如何向该文件添加必要的条目,以便与您的 Elastic Cloud 部署进行通信。您必须修改以下两个变量:cloud.idcloud.auth

对于那些已在自己的 Azure 帐户中通过 Elastic Stack 运行自管型部署的用户,请参考连接到 Elastic Stack Filebeat 快速入门指南

专业提示:不知道从哪里得到这些值?请参阅我们的文档,了解更多详细信息。

创建事件中心

这一解决方案要求使用 Azure 事件中心监测活动、登录和/或审计日志,以及访问存储 Blob。如果您没有设置这样的事件中心,请参阅快速入门:使用 Azure 门户创建事件中心文档了解详情。然后,您将需要参考关于将活动日志发送到事件中心的说明

创建事件中心时,可以将其添加到现有命名空间(如果已经有的话),也可以创建一个全新的命名空间。下面我们演示一下怎么创建事件中心。

在您的 Azure 门户的 Event Hubs(事件中心)中,单击 Add(添加)。

您必须选择一个资源组,然后为其命名。例如:elastic-eventhub

选择位置和定价区间,然后继续,根据需要添加可选标签,然后单击 Create(创建)。

单击 Shared access policies(共享访问策略)。

单击显示的默认策略,名为 RootManageSharedAccessKey,然后单击以复制连接字符串。请妥善放好这个字符串,因为后面会用它来配置 Filebeat Azure 模块配置文件:azure.yml

导航到 Activity log(活动日志),然后单击 Diagnostics settings(诊断设置)。

单击 Add diagnostic setting(添加诊断设置),并将其命名为 elastic-diag

选择你选取好的日志,然后确保勾选了 Stream to an event hub(流式传输到事件中心)。

选择 elastic-eventhub 命名空间,在事件中心名称一栏选择 (Create in selected namespace)(在选定命名空间中创建)选项,然后选择 RootManageShareAccessKey 策略。

一个名为 insights-activity-logs 的事件中心就创建好了,它会出现在 elastic-eventhub 命名空间下。我们在 azure.yml 配置文件中会用到它。

单击 Save(保存),然后可以选择导航回到 elastic-eventhub,看一下传入的事件指标。

启用 Azure 模块

只需运行一条命令即可启用 Azure 模块。也就是 Kibana(我们开始的地方)的页面中描述的第三步。

这将确保 azure.yml 配置文件处于活动状态,以便与您的 Azure 订阅进行通信。

在 Linux 上,启用模块的命令是:

sudo filebeat modules enable azure

列出所有模块,并在顶部显示已启用的模块,请运行:

sudo filebeat modules list

禁用模块,只需运行:

sudo filebeat modules disable azure

配置 Azure 模块

启用模块后,必须对 azure.yml 文件进行配置。在 Linux 系统上,通常可以在 /etc/filebeat/modules.d 目录下找到它。如果未启用模块,在该目录下文件还会带一个 .disabled 扩展名。

默认情况下,Azure 模块中仅启用 activitylogs,通过 enabled: true 表示。

为了配置 auditlogssigninlogs,您必须是 Azure 帐户的全局管理员或安全管理员。如需获取更多详细信息,您可以参考有关如何将审计和登录日志导出到事件中心的说明。然后,您可以通过将 enabled: false 更改为 true 来启用它们。

重要说明:如果您没有足够的权限来配置审计和登录日志,则 azure.yml 文件中的这两个模块必须保持禁用状态。

接下来,可以将信息添加到 azure.yml 配置文件中了。您需要添加的只是先前保存的 eventhubconnection_string 条目详细信息,然后是存储帐户详细信息。

专业提示:所需的存储帐户名和密钥可以从您要使用的存储帐户中找到。单击 Access keys(访问密钥)。您也可以参考 Microsoft Azure 管理存储帐户访问密钥来获取帮助。

如果您只配置活动日志的话,您的配置文件将类似于以下内容。

- module: azure 
  # All logs 
  activitylogs:
    enabled: true 
    var:
      # eventhub name containing the activity logs 
      eventhub: "insights-activity-logs" 
      # consumer group name that has access to the event hub 
      consumer_group: "$Default" 
      # connection string required to communicate with Event Hubs       
      connection_string: "<your connection string key>" 
      # the storage account  
      storage_account: "<your storage name>" 
      # the storage account key 
      storage_account_key: "<your account key>"

有关此配置的更多信息,请参考模块配置文档。storage account/key(存储帐户/密钥)是必填的,以便在 Filebeat 服务停止时维护日志序列。

专业提示eventhub实例名称,不是事件中心命名空间。事件中心命名空间是多个事件中心的分组容器,您需要按命名空间级别付费。有关更多详细信息,请参考 Microsoft 文档网站上的事件中心常见问题

设置并启动 Filebeat

至此,Filebeat、事件中心和存储帐户已经配置好了,接下来,该运行安装程序并启动 Filebeat 了。回到我们开始下载和配置 Filebeat 的 Kibana 页面,第四步概述了此时要用到的以下命令。

因为我们使用 RPM 将 Filebeat 作为服务安装,所以它也必须作为服务来运行。根据您使用的系统类型,步骤可能会略有不同。有关将 Filebeat 作为 DEB 和 RPM 软件包的服务运行的更多详细信息,请参考 Filebeat 和 systemd,如果在其他平台上运行,请参考 Filebeat 快速入门

首先,我们需要运行 setup 步骤,这一步将加载预定义的资产索引可视化,预构建的 Azure 云仪表板会用到这些内容。setup 命令利用了 Elastic 与 Azure 的所有现成集成,减少了自行开发的需求,但是,所有内容都是完全可定制的,而且还有许多社区开发的集成。

运行安装程序:

sudo filebeat setup

您也可以使用 -e 运行 setup 命令,该命令会将日志数据发送到显示器而非 Syslog,这对于查看正在执行的步骤非常有用。

sudo filebeat setup -e

然后,启动服务:

sudo service filebeat start

要检查状态,请运行以下命令:

sudo service filebeat status

要停止 Filebeat,请运行以下命令:

sudo service filebeat stop

要使用正在运行的对话框检查和验证服务是否正常运行,请运行以下命令:

sudo journalctl -u filebeat -f

在 Kibana 中进行可视化

现在,我们已经通过事件中心收集了活动日志,然后通过 Filebeat 将其发送到 Elasticsearch,我们可以在 Kibana 中对其进行可视化。

如果您还在开着我们启动 Filebeat 配置的页面,那么您应该能够检查数据,然后最终单击 Azure 日志仪表板,这样您就可以直接进入仪表板了。

blog-azure-log-mon-11.jpg

这就是仪表板界面。只需简单几步就可以进行采集、分析和可视化!

结论

我们希望您能够通过本文的说明,帮助您开始使用 Filebeat、使用事件中心采集 Azure 活动日志,以及使用开箱即用的仪表板监测您的 Azure 部署。

下一步是使用 Metricbeat Azure 模块收集您的 Azure 计算、容器、数据库存储、计费和应用程序见解指标。

如果有疑问,或者想参与有益的讨论,可以加入 Elastic 可观测性讨论组。您也可以访问我们的 Elastic 学习中心,这里有许多有用的入门视频和培训资源。