Prometheus 监控服务 SQL Server Exporter 接入

Microsoft SQL Server Exporter 是社区专门为采集 Microsoft SQL Server(简称:MSSQL) 数据库监控指标而设计开发,通过 MSSQL Exporter 上报性能和健康状况等的指标数据,用于监控大盘展示和异常报警。腾讯云可观测平台 Prometheus 提供了与 MSSQL Exporter 集成及开箱即用的 Grafana 监控大盘。

相关产品
Prometheus 监控服务 产品页,含版本规格、价格与购买入口。

一、操作场景

注意:说明:

注意:如果需要监控的 MSSQL 是腾讯云 云数据库 SQL Server,推荐使用集成中心 云监控集成,支持一键采集云产品指标。

二、操作步骤

1. 登录 Prometheus 监控服务控制台。

2. 在实例列表中,选择对应的 Prometheus 实例。

3. 进入实例详情页,选择数据采集 > 集成中心。

4. 在集成中心找到并单击 MSSQL,即会弹出一个安装窗口,在安装页面填写指标采集名称和地址等信息,并单击保存即可。

三、配置说明

参数 说明
名称 集成名称,命名规范如下:名称具有唯一性。名称需要符合下面的正则:'^a-z0-9?(\\.a-z0-9?)*$'。
用户名 MSSQL 的用户名称,账号创建及授权请参见 账号创建及授权。
密码 MSSQL 的密码。
域名 MSSQL 的服务域名。
端口 MSSQL 的服务端口。
标签 给指标添加自定义 Label。

四、方式二:自定义安装

注意:说明:

注意:为了方便安装管理 Exporter,推荐使用腾讯云 容器服务 来统一管理。

五、前提条件

·在 Prometheus 实例对应地域及私有网络(VPC)下,创建腾讯云容器服务 Kubernetes 集群,并为集群创建 命名空间。

·在 Prometheus 监控服务控制台 选择对应的 Prometheus 实例,然后在数据采集 > 集成容器服务中找到对应容器集群完成关联集群操作。可参见指引 关联集群。

六、操作步骤

步骤1:Exporter 部署

1. 登录 容器服务控制台。

2. 在左侧菜单栏中单击集群。

3. 单击需要获取集群访问凭证的集群 ID/名称,进入该集群的管理页面。

4. 执行以下 部署 MSSQL Exporter > 验证 步骤完成 Exporter 部署。

步骤2:部署 MSSQL Exporter

1. 在左侧菜单中选择工作负载 > Deployment,进入 Deployment 管理页面。

2. 在页面右上角单击 YAML 创建资源,创建 YAML 配置,选择对应的命名空间来进行部署服务,可以通过控制台的方式创建。如下以 YAML 的方式部署 Exporter, 配置示例如下:

apiVersion: apps/v1kind: Deploymentmetadata: labels: k8s-app: mssql-exporter # 根据业务需要调整成对应的名称,建议加上 MSSQL 实例的信息 name: mssql-exporter # 根据业务需要调整成对应的名称,建议加上 MSSQL 实例的信息 namespace: mssql-demo # 根据业务需要调整成对应的命名空间spec: replicas: 1 selector: matchLabels: k8s-app: mssql-exporter # 根据业务需要调整成对应的名称,建议加上 MSSQL 实例的信息 template: metadata: labels: k8s-app: mssql-exporter # 根据业务需要调整成对应的名称,建议加上 MSSQL 实例的信息 spec: containers: – name: mssql-exporter image: ccr.ccs.tencentyun.com/rig-agent/common-image:mssql-exporter-v1.3.0 imagePullPolicy: IfNotPresent env: – name: SERVER value: "127.0.0.1" # 根据业务需要调整成对应的 MSSQL 的域名 – name: PORT value: "1433" # 根据业务需要调整成对应的 MSSQL 的端口 – name: USERNAME value: user # 根据业务需要调整成对应的 MSSQL 的用户名 – name: PASSWORD value: "123456" # 根据业务需要调整成对应的 MSSQL 的密码 – name: EXPOSE value: "4000" # 暴露指标端口,根据业务需要调整成对应的端口 ports: – containerPort: 4000 # 开放上述环境变量 EXPOSE 所对应的端口 name: metric-port terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst imagePullSecrets: – name: qcloudregistrykey restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30

步骤3:验证

1. 在 Deployment 页面单击上述步骤创建的 Deployment,进入 Deployment 管理页面。

2. 单击日志页签,无报错信息输出即可:

3. 单击 Pod 管理页签进入 Pod 页面。

4. 在右侧的操作项下单击远程登录,即可登录 Pod,在命令行窗口中执行以下 wget 命令对应 Exporter 暴露的地址,可以正常得到对应的 MSSQL 指标。如发现未能得到对应的数据,请检查连接串是否正确,具体如下:

wget -qO- http://localhost:4000/metrics

执行结果如下:

步骤4:添加采集任务

1. 登录 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。

2. 选择数据采集 > 集成容器服务,选择已经关联的集群,通过数据采集配置 > 新建自定义监控 > YAML 编辑来添加采集配置。

3. 通过服务发现添加 PodMonitors 来定义 Prometheus 抓取任务,YAML 配置示例如下:

apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: mssql-exporter # 填写一个唯一名称 namespace: cm-prometheus # 按量实例: 集群的 namespace; 包年包月实例(已停止售卖): namespace 固定,不要修改 spec: podMetricsEndpoints: – interval: 30s port: metric-port # 填写pod yaml中Prometheus Exporter对应的Port的Name path: /metrics # 填写Prometheus Exporter对应的Path的值,不填默认/metrics relabelings: – action: replace sourceLabels: – instance regex: (.*) targetLabel: instance replacement: 'crs-xxxxxx' # 调整成对应的 MSSQL 实例 ID namespaceSelector: # 选择要监控 mssql exporter pod所在的namespace matchNames: – mssql-demo selector: # 填写要监控pod的Label值,以定位目标pod matchLabels: k8s-app: mssql-exporter

七、腾讯云 SQL Server

1. 登录 腾讯云 SQL Server 控制台,选择对应 SQL Server 实例进入管理页面。

2. 在管理页面选择账号管理,然后单击创建账号。

填写账号的名称、密码,账号类型选择普通账号。接着选择需要监控的数据库,并将权限设置为只读。最后单击确定即可完成账号的创建。

八、其他 SQL Server 服务

SQL Server 监控账号需要被授予 VIEW SERVER STATE 和 VIEW ANY DEFINITION 权限。如果还需要监控某个数据库,则还需在该数据库授予相应的 db_datareader 权限。在确保客户端计算机与 SQL Server 数据库服务器连通的前提下,可以使用 SSMS 客户端或 sqlcmd 命令行工具连接到数据库,具体的连接操作指南请参见 腾讯云 SQL Server 产品文档。以下的账号创建操作均基于 SSMS 客户端进行。

1. 在 SSMS 客户端选择文件 > 连接对象资源管理器。

以 {ip,port} 的形式填写服务器名称,身份验证选择 SQL Server 身份验证,接着填写登录名和密码,加密选择可选,最后单击连接完成数据库服务器的连接。

2. 右击上一步连接的数据库,单击新建查询。

在右侧面板中输入 SQL 语句,然后单击执行即可运行该语句。

3. 创建一个 SQL Server 账号,并授予其 VIEW SERVER STATE 和 VIEW ANY DEFINITION 权限。以下示例命令展示了如何创建一个账号名和密码均为 monitor 的监控账号,并授予其监控所需的权限。

USE master;IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = 'monitor') CREATE LOGIN [monitor] WITH PASSWORD=N'monitor', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;GRANT VIEW SERVER STATE TO [monitor];GRANT VIEW ANY DEFINITION TO [monitor];

命令执行结果如下:

4. 要获取某个数据库的监控数据,需要在该数据库中为监控账号创建一个同名的数据库用户,并授予其 db_datareader 角色权限。以下示例展示了如何在名为 prometheus 的数据库中为监控账号 monitor 创建相应的数据库用户并授予权限的命令。

USE prometheus;CREATE USER [monitor] FOR LOGIN [monitor];EXEC sp_addrolemember N'db_datareader', N'monitor';

命令执行结果如下:

九、前提条件

Prometheus 实例已绑定 Grafana 实例。

十、操作步骤

1. 登录 腾讯云可观测平台 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。

2. 在实例基本信息页面,找到绑定的 Grafana 地址,打开并登录,然后在 database 文件夹中找到 mssql 实例监控面板,查看实例相关监控数据:

十一、配置告警

腾讯云 Prometheus 托管服务支持告警配置,可根据业务实际的情况来添加告警策略。详情请参见 新建告警策略。

十二、附录:MSSQL Exporter 环境变量配置

名称 描述
SERVER 必需,MSSQL 服务 IP 或域名
PORT MSSQL 服务端口,默认1433
USERNAME 必需,MSSQL 服务用户名
PASSWORD 必需,MSSQL 服务密码
ENCRYPT 强制加密设置,默认为 true
TRUST_SERVER_CERTIFICATE 是否信任服务器的证书设置,默认为 true
DEBUG 逗号分隔的启用日志列表,可选 currently supports app 和 metrics
赞 (0)
上一篇 4天前
下一篇 4天前