一 背景
收集和分析Azure EventHub活动日志是监控和管理云环境中关键事件的重要步骤。Azure EventHub是一项高可用、高吞吐量的事件和数据流处理服务,可用于接收和处理大量的实时数据。通过收集EventHub的活动日志,可以了解事件的发生、处理状态和性能指标,帮助实时监控和故障排除。为了实现这一目标,使用Filebeat作为轻量级的日志收集器是一种高效和可靠的方式。Filebeat能够连接到Azure EventHub,并实时采集和传输活动日志数据到集中存储或分析系统,如Elasticsearch、Logstash等。这样,您可以快速了解EventHub的活动情况,进行可视化分析、报警和问题排查。通过实战Filebeat收集Azure EventHub活动日志,您可以从中受益于更好的运维和故障排除,提高系统的可观测性和性能管理。
- Monitor your activity, sign-in, and audit logs using the Filebeat Azure module with Event Hub
- Analyze your compute, container, database storage, billing, and application insight metrics using the Metricbeat Azure module (covered in a future blog)
二 Azure 账号配置
Azure DevOps的服务连接支持多种连接方式,包括Azure Resource Manager, Azure Service Bus, Bitbucket Cloud, Kubernetes, Jenkins等。其中Azure Resource Manager需要对接一个Azure订阅中的Azure Active Directory (Azure AD) 应用程序和服务主体(service principal)。所以我们先来在Azure中国区域的控制台创建一个可以管理资源的 Azure AD 服务主体。
2.1 确认Azure AD 用户权限
要创建Azure AD 服务主体,必须具有足够的权限向 Azure AD 租户注册应用程序,并向应用程序分配 Azure 订阅中的角色。先来确认 Azure AD用户的权限。在服务列表中点击Azure Active Directory,会前进到如下的用户概况页。
我这个测试用户现在是全局管理员,默认情况下普通用户不能注册应用程序。如果需要普通用户也可以注册应用程序,可以在左侧导航链接点击 User Settings,把用户可以注册应用程序设置为启用。
2.2 创建Azure AD 服务主体
在控制台回到 Azure Active Directory,左侧导航链接选择应用注册,再点新注册。
为应用程序起个名字,比如"azure-devops",并记下这个名字,后面还会用到。
支持的帐户类型,选择Accounts in this organizational directory only,其它保持默认。
点击注册
2.3 给服务主体添加身份验证
为配合下一步Azure DevOps创建服务连接时的验证,我们给刚刚创建出的服务主体添加身份验证。这里我们选用应用程序机密的方式。
在Azure AD 中的"应用注册",选择刚创建出的应用程序。在左侧导航链接中选择"证书和机密"。然后在主窗格中点击"新建客户端机密"。
2.4 给应用程序分配订阅的角色
再来到控制台的订阅管理界面,选择到咱们正在操作的这个订阅,然后点击左侧导航链接中的"访问控制(IAM)",点击主窗格中的"添加",再点击添加角色分配。
在弹出的添加角色分配浮层中,角色选Contributor,分配权限选择User, group or service principal。
在选择格,输入前面创建的应用程序名,会搜索出来一个结果,要再点击一下这条结果,然后底下左边的保存按钮就变成可用了。
三 Azure Blob信息
创建bucket,用于存放日志
- 存储账户信息
shell
# 存储账户名称
xuelstorageaccount
# 存储链接url
storage_url: https://xuelstorageaccount.blob.core.chinacloudapi.cn/
# 密钥
7Nrxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+AStuq8p4g==
# 链接字符串
DefaultEndpointsProtocol=https;AccountName=xuelstorageaccount;AccountKey=7NrRzC33zTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+q8p4g==;EndpointSuffix=core.chinacloudapi.cn
四 Azure 事件中心配置
创建Event Hubs命名空间
完成名称空间创建后,创建事件中心实体
查看事件中心以及有事件进来,默认不创建消费组为:$Default
查看event hub信息
查看Event Hubs信息
shell
# eventhub名称
insights-activity-logs
# evenethub 主密钥
7Fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8=
# consumer组
$Default
# 链接字符串
Endpoint=sb://xuelfilebeat.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=7FEhGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# blob 存储账号
xuelstorageaccount
# 存储账号key
7NrRzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxy+AStuq8p4g==
# 存储账号容器
qujf
# 资源管理端点
https://management.chinacloudapi.cn/
对应到Filebeat配置
yaml
filebeat.inputs:
- type: azure-eventhub
eventhub: "insights-activity-logs"
consumer_group: "$Default"
connection_string: "Endpoint=sb://xuelfilebeat.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=7FEhGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxR8="
storage_account: "xuelstorageaccount"
storage_account_key: "7NrRzC33xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4g=="
storage_account_container: "xuelstorageaccount"
resource_manager_endpoint: "https://management.chinacloudapi.cn/"
五 创建配置事件中心
资源组->活动日志->诊断日志设置
选择日志类型并发送到事件中心,选择事件中心名称:insights-activity-logs
六 Filebeat配置
直接在Filebeat 主文件中配置azure blob配置,修改filebeat.yml
shell
filebeat.inputs:
- type: azure-eventhub
eventhub: "insights-activity-logs"
#consumer_group: "$Default"
connection_string: "Endpoint=sb://xuelfilebeat.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=7FEhGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4R8="
storage_account: "xuelstorageaccount"
storage_account_key: "7NrRzCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4g=="
storage_account_container: "xuel-filebeat-container"
resource_manager_endpoint: "https://management.chinacloudapi.cn/"
七 测试
将Azure Event Hub作为输入源后,Blob中仅存储了Event Hub的元数据,参考:www.elastic.co/guide/en/be...
事件流中的分区租约和检查点等状态在使用Azure Storage容器的接收器之间共享。
重启filebeat,之后进行配置的资源组进行操作,可以看到事件中心有日志
shell
# 查看日志
[root@elk-host filebeat]# journalctl -fu filebeat
在kibana中查看操作日志信息。
八 结论
事件中心类型,适用于采集Azure产品操作日志,详细参考:learn.microsoft.com/en-us/azure...,通过实战Filebeat收集Azure EventHub活动日志,您可以轻松地连接到EventHub并实时采集关键事件的日志数据。Filebeat的灵活性和可扩展性使得它成为处理大规模活动日志的理想选择。通过结合Azure EventHub的高可用性和高吞吐量特性,以及Filebeat的实时数据传输能力,您可以实现对EventHub活动的实时监控和分析,提高系统的可观测性和故障排查效率,从而更好地管理和优化云环境中的事件处理。