一 背景

在目前新版本中,ELK集成中利用elastic-agent可以真多非常的云及中间价进行相关指标采集,不仅仅限于日志,利用公有云的API可以调用监控数据,配合日志进行安全分析,可以更全面的展示云上的资源指标,本文将使用ELK(Elasticsearch、Logstash、Kibana)的Fleet功能来集成Azure Metrics,以实现对Azure资源的指标数据的监控和分析。ELK是一个开源工具组合,用于日志管理和分析,而Azure Metrics是Azure云平台提供的一种服务,用于收集和存储Azure资源的指标数据。Fleet是ELK的管理工具,可用于集中管理多个Elasticsearch和Kibana实例。

通过使用Fleet,我们可以轻松管理多个Elasticsearch和Kibana实例,并在这些实例上配置和监控Azure Metrics数据。具体步骤如下:

  1. 安装和配置Elasticsearch和Kibana:在一台服务器上安装和配置Elasticsearch和Kibana实例。确保它们能够正常运行。
  2. 配置Fleet Server:在Elasticsearch集群中选择一台服务器作为Fleet Server,并将其配置为Fleet的集中管理节点。
  3. 创建Fleet Agent Policy:使用Kibana界面创建一个Fleet Agent Policy,该策略定义了要在Fleet Agents上执行的任务和配置。
  4. 部署Fleet Agents:将Fleet Agents部署到要监控的目标主机上,这些主机上运行着Azure资源。
  5. 配置Azure Metrics数据源:在Fleet Agent Policy中配置Azure Metrics数据源,指定要收集的指标、频率等。
  6. 创建Kibana仪表板:使用Kibana创建仪表板来可视化和分析来自Azure Metrics的数据。您可以根据需要创建各种图表和可视化组件。

通过上述步骤,使用ELK的Fleet功能集成Azure Metrics,从而实现对Azure资源的实时监控和分析。Fleet将协调和管理Fleet Agents,它们将从Azure Metrics收集数据,并将其发送到Elasticsearch进行索引和存储。然后,您可以使用Kibana来查询和可视化这些数据,以获得对Azure资源性能和使用情况的深入洞察。

二 概述

ELK(Elasticsearch、Logstash、Kibana)是一套用于日志管理和分析的开源工具栈,而Azure Metrics是Azure云平台提供的监控和指标服务。在实战中,你可以通过使用Fleet来集成ELK和Azure Metrics,实现将Azure云平台中的指标数据发送到ELK堆栈,进行分析和可视化。首先,设置Elasticsearch集群和Kibana,然后安装配置Beats和Metricbeat,这些是轻量级的数据收集器。使用Metricbeat的Azure模块,配置认证信息和资源筛选条件,Metricbeat将收集Azure Metrics数据并发送到Elasticsearch集群中的指定索引。最后,通过Kibana创建仪表板和可视化图表,使用强大的查询语言和视觉化工具来分析和监控Azure资源的性能。这样的集成能够实时获取和分析Azure Metrics数据,帮助你更好地理解和优化云平台上的应用和服务。

三 添加集成策略

ELK使用Fleet集成Azure Metrics实战_云原生

配置增加Azure Storage Account Metrics 集成

需要在Azure 账户下注册应用,之后授权应用对应storage account的权限,在之前一篇azure 应用密钥创建及授权的讲解过,在此不再展开。

必须的认证azure_metrics 集成信息:

Client ID::应用程序的唯一标识符(也称为应用程序ID)

Client Secret:客户端/应用程序的秘密/密钥

Subscription ID: azure订阅的唯一标识符

Tenant ID: Azure Active Directory实例的唯一标识符

Resource Manager Endpoint:可选,默认情况下将使用azure公共环境,要覆盖,用户可以提供特定的资源管理器端点,以便使用不同的azure环境

四 利用Fleet进行安装部署

4.1 Fleet相关概念

  • Fleet Server:是连接 Elastic Agents机制。它支持可伸缩的基础设施,并在Elastic Cloud和自管理集群中得到支持。Fleet Server是一个单独的进程,与已部署的弹性代理进行通信。它可以从任何可用的x64体系结构Elastic Agent工件启动。

ELK使用Fleet集成Azure Metrics实战_云原生_02

  • Elastic Agent是一种单一的、统一的方式,用于向主机添加对日志、指标和其他类型数据的监控。它还可以保护主机免受安全威胁,从操作系统查询数据,从远程服务或硬件转发数据,等等。单个代理使跨基础设施部署监视变得更容易、更快。每个代理都有一个可以更新的策略,以添加针对新数据源、安全保护等的集成。 如下图所示,Elastic Agent可以监视部署它的主机,并且可以从无法直接部署的远程服务和硬件收集和转发数据。
  • Integrations:Elastic integrations提供了一种将Elastic连接到外部服务和系统的简单方法,并快速获得洞察力或采取行动。可以收集新的数据源,并且经常附带开箱即用的资产,如仪表板、可视化和管道,以从日志和事件中提取结构化字段。这使得在几秒钟内获得洞察力变得更加容易。集成可用于流行的服务和平台,如Nginx或AWS,以及许多通用的输入类型,如日志文件。 Kibana提供了一个基于web的UI来添加和管理集成。您可以浏览显示Elastic Agent和Beats集成的可用集成的统一视图。
  • Elastic Agent policies:要在哪些主机上运行哪些集成。您可以将弹性代理策略应用于多个代理,从而使大规模管理配置变得更加容易。当您添加集成时,您可以配置日志和指标的输入,例如Nginx访问日志的路径。完成后,将集成保存到一个Elastic Agent策略中。下次注册的代理签到时,他们会收到更新的信息。自动部署策略比使用SSH、Ansible剧本或其他工具自己部署策略要方便得多。

ELK使用Fleet集成Azure Metrics实战_Elasticsearch_03

4.2 Fleet Server部署

ELK使用Fleet集成Azure Metrics实战_云原生_04

添加Fleet配置信息

ELK使用Fleet集成Azure Metrics实战_Azure_05

使用rpm方式部署Fleet Server

curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.10.2-x86_64.rpm
sudo rpm -vi elastic-agent-8.10.2-x86_64.rpm
sudo elastic-agent enroll \
  --fleet-server-es=https://10.206.16.13:9200 \
  --fleet-server-service-token=AAEAAWVsYXNxxxxxxxxxZw \
  --fleet-server-policy=fleet-server-policy \
  --fleet-server-es-ca-trusted-fingerprint=5562f7b1xxxxxxxxd94a36c \
  --fleet-server-port=8220 --insecure
sudo systemctl enable elastic-agent
sudo systemctl start elastic-agent

ELK使用Fleet集成Azure Metrics实战_elastic_06

如何注册异常,可以将主机名添加进入hosts文件中。

127.0.0.1 elk-server

ELK使用Fleet集成Azure Metrics实战_云原生_07

查看已完成注册。

ELK使用Fleet集成Azure Metrics实战_云原生_08

ELK使用Fleet集成Azure Metrics实战_Elastic_09

4.3 Agent Policies创建

Agent Policies确定在Agent上运行哪些策略集成,例如采集Azure Metric信息等,在此创建对接Azure VM

4.4 Agent部署

当Fleet Server部署完成后,之后进行Fleet Agent部署。

ELK使用Fleet集成Azure Metrics实战_elastic_10

ELK使用Fleet集成Azure Metrics实战_云原生_11

在Agent 服务器上执行Agent注册

curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.10.2-x86_64.rpm
sudo rpm -vi elastic-agent-8.10.2-x86_64.rpm
sudo elastic-agent enroll --url=https://127.0.0.1:8220 --enrollment-token=QlVjxxxxxxxxTZBQQ== --insecure
sudo systemctl enable elastic-agent 
sudo systemctl restart elastic-agent

ELK使用Fleet集成Azure Metrics实战_elastic_12

查看注册Agent信息是否异常。

ELK使用Fleet集成Azure Metrics实战_Elastic_13

五 配置Polices

在Agent policies关联的Policies上绑定集成。

ELK使用Fleet集成Azure Metrics实战_elastic_14

ELK使用Fleet集成Azure Metrics实战_Elastic_15

集成中根据自己需求选择对应的集成应用,在此选择Azure Billing Metrics

ELK使用Fleet集成Azure Metrics实战_elastic_16

填写Azure 的相关信息,Azure 应用及API权限信息在之前文章讲过,在此不再展开

ELK使用Fleet集成Azure Metrics实战_Elastic_17

选择Agent 策略。保持并进行更新部署

ELK使用Fleet集成Azure Metrics实战_Elastic_18

完成后可以看到Agent下绑定了两个集成,一个是采集Agent系统信息,一个是刚创建的获取Azure 账单信息。

ELK使用Fleet集成Azure Metrics实战_Elastic_19

可以在Agent的Logs查看更新日志。

ELK使用Fleet集成Azure Metrics实战_Elastic_20

数据集可以多选几个统一查看

ELK使用Fleet集成Azure Metrics实战_云原生_21

完成后,可以在DashBoard中查看对应指标

ELK使用Fleet集成Azure Metrics实战_云原生_22

可以通过system集成查看系统信息,其中也包含了各类安全信息。

ELK使用Fleet集成Azure Metrics实战_云原生_23

查看Azure账单信息。

同样的操作,可以配置多个Agent,同一个Agent也可以添加多个集成进行指标采集。

同时可以添加Packebeat收集网络信息

ELK使用Fleet集成Azure Metrics实战_Elastic_24

ELK使用Fleet集成Azure Metrics实战_云原生_25

六 注意事项

  • 注意azure在中国又世纪互联运营,需要配置相关采集指标的时候,指定Active Directory Endpoint、Resource Manager Endpoint中。
  • 目前采集的指标部分字段没有数据,后续需进一步测试。
  • 使用Fleet进行部署Agent 的目录在/var/lib/elastic-agent 下与独立部署目前不同,排查问题可以在对应目录下查看。

七 总结

ELK集成Azure Metrics可以帮助您实现对Azure资源的实时监控和分析。通过将ELK的强大搜索和分析功能与Azure Metrics的数据集成,您可以获得对Azure资源性能和使用情况的深入洞察,并及时采取必要的措施来优化和管理这些资源。

参考链接

  • www.elastic.co/cn/blog/ela…
  • www.elastic.co/guide/en/fl…
  • azure.microsoft.com/en-us/prici…
  • www.elastic.co/guide/en/fl…
  • www.elastic.co/guide/en/ob…
  • Quickstart: Register an application with the Microsoft identity platform
  • Use the portal to create an Azure AD application and service principal that can access resources