一 背景
Azure DevOps目前仍只在微软云Azure海外区域提供SaaS服务,Azure中国区域还没有发布。其实Azure DevOps可以管理各种云和应用部署的环境与平台,可以通过服务连接(Service Connection) 方便地连接Azure中国区域,以及其它Azure的特殊区域,比如美国政务云、德国区域等等。本文将带领大家一步一步配置好中国区域的订阅,以及建立起Azure DevOps到中国区域订阅的连接。
二 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/
# 密钥
7Nrxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
# 链接字符串
DefaultEndpointsProtocol=https;AccountName=xuelstorageaccount;AccountKey=7NrRzC33xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxq8p4g==;EndpointSuffix=core.chinacloudapi.cn
- 注册app信息
shell
# 注册的APP ak信息
# appid
Service Principal Id:eea3xxxxxxxxxxxxxxxxxxxxxxxxxxxx61d
# ARM_CLIENT_SECRET
principal key:UKxxxxxxxxxxxxxxxxxxxxxxxxxxxxH5O
三 相关信息

四 Filebeat配置
直接在Filebeat 主文件中配置azure blob配置,修改filebeat.yml
shell
filebeat.inputs:
- type: azure-blob-storage
id: my-azureblobstorage-id
enabled: true
account_name: xuelstorageaccount
storage_url: https://xuelstorageaccount.blob.core.chinacloudapi.cn/
# storage_url: DefaultEndpointsProtocol=https;AccountName=xuelstorageaccount;AccountKey=7NrRzC3xxxxxxxxxxxxxxxxxxxxxxxxxxxxuq8p4g==;EndpointSuffix=core.chinacloudapi.cn
endpoint: core.chinacloudapi.cn
auth.connection_string.uri: DefaultEndpointsProtocol=https;AccountName=xuelstorageaccount;AccountKey=7NrRzC3xxxxxxxxxxxxxxxxxxxxxxxxxxxx8p4g==;EndpointSuffix=core.chinacloudapi.cn
auth.shared_credentials.account_key: 7Nrxxxxxxxxxxxxxxxxxxxxxxxxxxxx+AStuq8p4g==
containers:
# - name: xuel-filebeat-container
# max_workers: 3
# poll: true
# poll_interval: 10s
- name: qujf
max_workers: 3
poll: true
poll_interval: 10s
五 测试
上次日志到bucket中

重启filebeat
shell
# 查看日志
[root@elk-host filebeat]# journalctl -fu filebeat
在kibana中查看

六 总结
实战Filebeat采集Azure Blob日志是一种有效的方式来收集和处理云环境中的日志数据。通过配置Filebeat,您可以轻松地连接到Azure Blob存储并实时采集日志,无需复杂的编程或手动操作。Filebeat的灵活性和可扩展性使得它成为处理大规模日志数据的理想选择。通过结合Azure Blob存储的强大功能和Filebeat的实时数据传输能力,您可以更好地管理和分析云环境中的日志信息,提高系统的可观测性和故障排查效率。无论是监控应用程序的性能,还是追踪安全事件,Filebeat和Azure Blob存储的组合都能为您提供可靠、高效的日志收集解决方案。