[背景知识]
笔者近期服务的客户中,其中一个是传统行业的Infra运维团队,很关注AD、Exchange、SQL Server等方案的监控。因此我们需要快速构建对这几个方案的监控能力。
1. AD简介
AD,全称是Active Directory,它是Microsfot提供的一项功能服务,它充当集中存储库并存储与用户、计算机、服务器和组织内的其他资源等对象相关的所有数据,主要功能是提供一种在域环境中对用户和机器进行身份验证的方法。使用 Active Directory,可以远程管理用户、工作站及其权限等资源。详情可参考:
learn.microsoft.com/zh-cn/troub…
Active Directory 结构和存储体系结构由四个部分组成:
l Active Directory 域和林 : 林、域和组织单位 (OU) 构成了 Active Directory 逻辑结构的核心元素。林定义单个目录并表示安全边界。林包含域;
l Active Directory 的域名系统 (DNS) 支持 : DNS 为域控制器位置提供名称解析服务,并提供 Active Directory 可用于提供可反映组织结构的命名约定的分层设计;
l 图式 : 架构提供对象定义,这些定义用于创建存储在目录中的对象;
l 数据存储 : 数据存储是目录中管理每个域控制器上数据的存储和检索的部分;
Active Directory 数据结构和存储体系结构:
2. Exchange简介
毋庸置疑,邮件是一个企业对内、对外进行沟通协作的重要方式。试想,如果企业的邮件服务中断,或者出现非常缓慢等现象,对于企业的正常经营肯定会产生巨大影响。因此大型企业会选择商业化、高度稳定的邮件服务解决方案,Exchange Server就是微软面向企业的一个邮件解决方案。详情请参考learn.microsoft.com/zh-cn/excha…
Exchange 2016 架构由多个角色组成,每个角色都有不同的功能和责任。下面是 Exchange 2016 的主要角色:
Mailbox Server:存储和处理用户邮箱数据,包括邮件、日历、联系人等。
l Client Access Service:处理客户端请求并提供访问用户邮箱的服务。
l Mailbox Transport Service:处理用户之间的邮件传输。
l Mailbox Database:存储用户邮箱数据的地方。
l Client Access Server:处理客户端请求并提供访问用户邮箱的服务。
Outlook Web App:Web 界面,允许用户通过浏览器访问邮箱。
l Exchange ActiveSync:用于移动设备同步邮箱数据。
l Exchange Web Services:用于开发和集成 Exchange 功能的 Web 服务。
Edge Transport Server:处理与外部邮件系统的邮件传输,提供安全的邮件过滤和反垃圾邮件功能。
3. 观测云简介
观测云是面向各行业用户提供统一高效的数字化可观测服务的SaaS服务商。观测云的统一采集器——DataKit是一款开源、一体式的数据采集 Agent,它提供全平台操作系统(Linux/Windows/macOS)支持,拥有全面数据采集能力。它具备很强的第三方数据集成能力,包括:Telegraf、Prometheus、Statsd、Fluentd、Filebeat、Tracing 相关(OpenTelemetry、DDTrace、Zipkin、Jaeger、SkyWalking、Pinpoint)等。基于DataKit强大的数据接入能力,我们能快速实现对AD、Exchange产品指标、日志的采集,从而实现在观测云上对这些数据进行分析。
[实现过程]
第一步,寻找合适的prometheus-exporter
在本项目中,我们计划使用prometheus数据接入方案来进行数据接入。因此我们首先在Github上找到了windows-exporter这个项目,项目地址为
从项目给出的Collector清单来看,该exporter支持ad、adcs、adfs、exchange等方案的监控。这些collector默认是未开启的状态,因此需要在使用过程中注意enable这些collector.
该Exporter的下载、安装比较简单,我们选择exe版本的安装包并在windows server上进行安装。
第二步,启动windows-exporter
登录windows server后,使用Powershell执行exporter的启动命令,并且根据实际使用需要enable需要的参数。本文中打开了ad,adcs,adfs,exchange的采集collector,如下图所示。如果成功,powershell应该有定时刷新的日志产生。
本次使用的命令为
D:\edgeDownload>.\windows_exporter-0.24.0-386.exe --collectors.enabled "[defaults],ad,adcs,adfs,exchange" --collectors.exchange.enabled=TransportQueues,HttpProxy,ActiveSync,AvailabilityService,OutlookWebAccess,Autodiscover,WorkloadManagement,RpcClientAccess
第三步,安装观测云Datakit并采集exporter数据
进入观测云工作空间,在“DataKit”界面将windows版的安装命令复制,并在windows server的powershell中执行,即可一键完成DataKit安装。
接下来需要开启DataKit的prometheus监控插件,进入DataKit的promtheus插件目录,即C:\Program Files\datakit\conf.d\prom,根据prom.conf.sample复制出一个prom.conf配置文件。
打开prom.conf,修改如下参数:
urls=’http://127.0.0.1:9182/metrics’
source=’prom’
这两个参数的含义是,DataKit会通过该URL来不断采集exporter捕捉到的性能数据,同时指定数据源名称为prom,方便后续在观测云上进行搜索。
修改完成后在powershell中执行datakit monitor -R命令,重启datakit使新的配置生效。
通过datakit monitor命令可以对DataKit的插件状态、数据实时采集状态进行监控,如下图所示,左侧的prom表示DataKit已经打开了prometheus插件,右侧的prom/prom表示正在采集我们需要的指标。
第四步,在观测云上观察采集到的数据
登录观测云,在“基础设施-主机”可以查看该windows server相关的指标、进程、事件等数据,如下所示:
对于刚才采集到的AD、Exchange相关数据,可以在“指标-指标管理”中找到。对应指标集为prom,如下所示:
AD相关指标
Exchange相关指标
第五步,采集AD、Exchange相关日志
毫无疑问,AD和Exchange的日志也是运维团队非常关心的内容,Exchange的重要日志包括:
| 日志类型 | 文件名 | 路径 | 关键字示例 |
|---|---|---|---|
| Transport 日志 | MessageTrackingLog<日期>.log | C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\MessageTracking | Sender, Recipient, Subject, Message ID, Source IP, Event ID |
| 邮件数据 | E00.log, E01.log, ... | C:\Program Files\Microsoft\Exchange Server\V15\Mailbox<数据库名称> | Transaction ID, Database ID, Operation, Error Codes |
| 安全日志 | Security<日期>.log | C:\Program Files\Microsoft\Exchange Server\V15\Logging\Diagnostics | Authentication, Login Failures, Unauthorized Access |
AD的重要日志可参考官网说明
learn.microsoft.com/zh-cn/troub…
例如我们希望采集Exchange的MessageTracking日志,首先找到该日志的文件路径。
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\MessageTracking
接下来在DataKit的日志插件目录(C:\Program Files\datakit\conf.d\log)下复制出logging.conf文件
如上图中的红框,定义好logfiles和source,然后执行datakit service -R重启即可生效。
第六步,仪表板配置
在windows-exporter的说明文档中,我们可以看到该exporter支持采集的AD、Exchange的相关指标清单。但更重要的是,我们需要将日常需要重点监控的指标展示在仪表板上,以便团队可以实时查看。
例如:Exchange需要重点关注的指标有
| 指标 | 含义 | 指标意义 |
|---|---|---|
| windows_exchange_owa_current_unique_users | Number of unique users currently logged on to Outlook Web App | 监控使用OWA的活动用户数量 |
| windows_net_packets_outbound_errors_total | 主机网卡出方向的错误数 | 正常情况下,网卡不应该有错误package数量,这个数如果不为0,意味着网络层面有错误 |
| windows_exchange_workload_active_tasks | Number of active tasks currently running in the background for workload management | Workload的活动任务数 |
| windows_exchange_workload_queued_tasks | Number of workload management tasks that are currently queued up waiting to be processed | 显示当前正在排队等待处理的工作负载管理任务数。 |
| usage_total | CPU利用率 | CPU利用率,反映负载 |
| available | 可用内存数 | 可用内存数,反映负载 |
当确定好需要展现的指标后,就可以通过观测云强大的仪表板功能构建自定义的监控看板。观测云提供了30余种图表类型,不需要修改代码,只需要拖拉拽即可快速完成仪表板的编辑,大幅降低了仪表板制作的成本。
30余种仪表板组件
指定数据集、数据指标
如下是本次配置的AD、Exchange仪表板:
Exchange仪表板
AD仪表板
[总结]
通过上述六个步骤,我们很快实现了AD、Exchange的性能指标和日志的采集与分析,相信大家能感受到观测云DataKit优秀的数据接入能力和仪表板快速构建的能力。如果您也希望体验观测云的丰富功能,欢迎点击注册,开始您的可观测之旅。