[!NOTE] 本仓库作为我们开源计划的一部分,可公开访问。 我们欢迎社区贡献,以配合我们组织的主要开发工作。
m365-exporter
关于
一个用于 Prometheus 指标的 Microsoft 365 导出器。 该导出器使用 Microsoft Graph API 收集有关 Microsoft 365 服务的指标, 并以 Prometheus 可抓取(scrape)的格式导出。
收集器
已实现以下收集器:
| 名称 | 描述 |
|---|---|
| adsync | Entra ID Connect 健康状态 |
| exchange | Exchange Online 指标 |
| intune | Intune 设备 |
| license | 许可证使用情况 |
| onedrive | OneDrive 使用情况 |
| securescore | Securescore |
| servicehealth | 服务健康 |
| teams | Teams |
| sharepoint | SharePoint |
安装
单一二进制文件
从 发布页面 下载最新版本。
Docker
在 GitHub 容器注册表 上存在一个 Docker 镜像。
标签:
ghcr.io/cloudeteer/m365-exporter:<VERSION>
配置
MS Graph 权限
导出器需要在 Entra ID 应用注册中设置以下权限作为应用程序权限:
- DeviceManagementConfiguration.Read.All
- DeviceManagementManagedDevices.Read.All
- DeviceManagementServiceConfig.Read.All
- Directory.Read.All
- Files.Read.All
- Organization.Read.All
- SecurityEvents.Read.All
- ServiceHealth.Read.All
- Sites.Read.All
- TeamSettings.Read.All
- User.Read.All
请注意,授予权限后,管理员必须同意这些权限。
Exchange API 权限
导出器需要在 Entra ID 应用注册中为 Office 365 Exchange Online 应用设置以下权限作为应用程序权限:
- Exchange.ManageAsApp
此外,必须授予目录角色 Secruity Reader 或 Global Reader。
Entra ID Connect Health
Entra ID Connect Health 的权限必须通过 Entra ID Connect Health 页面上的权限进行设置。
需要 Read 权限。
Sharepoint API 权限
导出器需要在 Entra ID 应用注册中为 Office 365 SharePoint Online 应用设置以下权限作为应用程序权限:
- Sites.FullControl.All
通过配置文件
默认情况下,导出程序将在 /etc/m365-exporter/ 中搜索名为 m365-exporter-config.yaml 的文件,或者该文件可以放置在程序的当前工作目录中。可以通过设置
M365_CONFIGFILE 环境变量来指定配置文件的具体位置。
完整的示例配置文件可以在 docs 文件夹 中找到。
| 配置参数 | 信息 |
|---|---|
settings.loglevel | 可能的值为 "panic"、"fatal"、"error"、"warning"、"info"、"debug" 和 "trace"。默认值为 "info"。 |
settings.serviceHealthStatusRefreshRate | 服务健康状态的刷新率(以分钟为单位)。仅允许整数。默认值为 5 分钟。 |
settings.serviceHealthIssueKeepDays | 设置 Incident 或 Advisory 在指标中保持已解决状态的时间长度。 |
onedrive.scrambleNames | bool 是否应为单个 onedrive 指标的标签包含 UPN 的混淆版本 |
onedrive.scrambleSalt | 设置用于混淆 UPN 的盐值,已设置默认值,因此 UPN 哈希始终经过加盐处理 |
每个收集器都可以使用以下模式进行禁用:
oneDrive:
enabled: false
teams:
enabled: true
adsync:
enabled: true
exchange:
enabled: true
securescore:
enabled: true
license:
enabled: true
servicehealth:
enabled: true
intune:
enabled: true
entraid:
enabled: true
sharepoint:
enabled: true
通过环境变量
环境变量可用于设置配置参数。如果通过环境变量设置了某个参数,则其优先级高于 配置文件中的设置。
环境变量的名称对应于 YAML 文件中的一个键,
通过在其前面添加 M365_ 并将 . 替换为 _ 来构成。
M365_SERVER_HOST 设置 YAML 文件中的 server.host 参数。
[!CAUTION] 配置提供程序无法处理通过环境变量传递的布尔值。
身份验证
m365-exporter 支持 Azure SDK for Go 支持的所有身份验证方式。
使用密钥的服务主体
| 变量名 | 值 |
|---|---|
AZURE_CLIENT_ID | Azure 服务主体的应用程序 ID |
AZURE_TENANT_ID | 应用程序的 Azure AD 租户 ID |
AZURE_CLIENT_SECRET | Azure 服务主体的密码 |
使用证书的服务主体
| 变量名 | 值 |
|---|---|
AZURE_CLIENT_ID | Azure 服务主体的应用程序 ID |
AZURE_TENANT_ID | 应用程序的 Azure AD 租户 ID |
AZURE_CLIENT_CERTIFICATE_PATH | 包含私钥的证书文件路径(无密码保护) |
使用托管标识
| 变量名 | 值 |
|---|---|
AZURE_CLIENT_ID | 用户分配的托管客户端 ID。如果使用系统分配的标识,则可以避免 |
AZURE_TENANT_ID | 应用程序的 Azure AD 租户 ID |
支持文档
- graph API reference(包含所需权限)
- pagination
- Graph API Explorer(查找 API 端点及其所需权限)
构建
运行 make help 以查看可用的 make 目标。
若要为该项目做出贡献,请参阅 CONTRIBUTING.md 文件。
商业支持
如需商业支持,请联系 Cloudeteer。
许可证
本项目采用 MIT License 授权。