ITADN
cloudeteer/m365-exporter
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

m365-exporter logo

CI GitHub license Current Release GitHub Repo stars GitHub all releases Go Report Card


[!NOTE] 本仓库作为我们开源计划的一部分,可公开访问。 我们欢迎社区贡献,以配合我们组织的主要开发工作。


m365-exporter

关于

一个用于 Prometheus 指标的 Microsoft 365 导出器。 该导出器使用 Microsoft Graph API 收集有关 Microsoft 365 服务的指标, 并以 Prometheus 可抓取(scrape)的格式导出。

收集器

已实现以下收集器:

名称描述
adsyncEntra ID Connect 健康状态
exchangeExchange Online 指标
intuneIntune 设备
license许可证使用情况
onedriveOneDrive 使用情况
securescoreSecurescore
servicehealth服务健康
teamsTeams
sharepointSharePoint

安装

单一二进制文件

发布页面 下载最新版本。

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 ReaderGlobal Reader

参考:https://learn.microsoft.com/en-us/powershell/exchange/connect-exo-powershell-managed-identity?view=exchange-ps

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.scrambleNamesbool 是否应为单个 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_IDAzure 服务主体的应用程序 ID
AZURE_TENANT_ID应用程序的 Azure AD 租户 ID
AZURE_CLIENT_SECRETAzure 服务主体的密码

使用证书的服务主体

变量名
AZURE_CLIENT_IDAzure 服务主体的应用程序 ID
AZURE_TENANT_ID应用程序的 Azure AD 租户 ID
AZURE_CLIENT_CERTIFICATE_PATH包含私钥的证书文件路径(无密码保护)

使用托管标识

变量名
AZURE_CLIENT_ID用户分配的托管客户端 ID。如果使用系统分配的标识,则可以避免
AZURE_TENANT_ID应用程序的 Azure AD 租户 ID

支持文档

构建

运行 make help 以查看可用的 make 目标。

若要为该项目做出贡献,请参阅 CONTRIBUTING.md 文件。

商业支持

如需商业支持,请联系 Cloudeteer

许可证

本项目采用 MIT License 授权。