写点什么

Prometheus Exporter (十六)Microsoft SQL Server Exporter

作者:耳东@Erdong
  • 2021 年 12 月 04 日
  • 本文字数:2030 字

    阅读完需:约 7 分钟

Prometheus Exporter (十六)Microsoft SQL Server Exporter

本文已经收录在 Prometheus 合集 Prometheus 都可以采集那些指标?-- 常用 Exporter 合集 中。


前边聊了 MySQL 和 Postgres ,接着我们来看看 Microsoft SQL 的监控吧。这个是我写的关系型数据库监控里最后一个了,工作中遇到 Microsoft SQL 的机会实在太少。Prometheus 官方和社区都没有给出 Microsoft SQL 的 Exporter ,官方推荐了 awaragi 编写的 Exporter 。


awaragi 编写的 Exporter 官方地址是:https://github.com/awaragi/prometheus-mssql-exporter ,最新版本不详。这个 Exporter 看上去是用 JavaScript 写的,并且将镜像上传到 Docker Hub 。这个有记载的最新版本是 0.4.1,发行于 4 年前,但是作者在 6 个月(当前是 2021 年 12 月)前发布了一个 Tag 是 latest 的版本。所以我也不知道最新版本是什么。首先声明一下,我还没有使用该 Exporter 对 Microsoft SQL 进行监控,但是看在 Prometheus 推荐的份上,我觉得可以看一下。

安装运行

这个 Exporter 也支持二进制和容器运行。


在运行前,需要创建监控使用的账号和密码。这个账户和密码需要有如下权限:


  • GRANT VIEW ANY DEFINITION TO

  • GRANT VIEW SERVER STATE TO


如果要使用二进制运行的话,首先需要一个 Nodejs 环境,按照 Dockerfile 描述,建议使用 8.4.0 版本。然后下载这个仓库的代码。接着设置用于启动的环境变量


SERVER=sqlserver PORT=sqlport<1433> USERNAME=sqluser PASSWORD=sqluserpassword EXPOSE=webport<4000> 
复制代码


接着启动 Node 进程


node ./index.js
复制代码


也可以通过环境变量来打开 Debug 模式来进行调试,DEBUG 有两个参数可选,appmetrics ,可以都使用,也可以二选一。比如 :


DEBUG=app,metrics SERVER=192.168.56.101 USERNAME=SA PASSWORD=qkD4x3yy node ./index.js
复制代码


守护进程,开机自起什么的,各位观众老爷自己处理吧。


如果使用 容器进行启动,那么可以参考下面的启动参数


docker run -e SERVER=192.168.56.101 -e USERNAME=SA -e PASSWORD=qkD4x3yy -e DEBUG=app -p 4000:4000 --name prometheus-mssql-exporter awaragi/prometheus-mssql-exporter
复制代码


这个镜像支持下面的启动参数,并且默认是通过 4000 的端口来暴露监控数据。


  • SERVER Microsoft SQL 数据库的 IP 地址

  • PORT Microsoft SQL 数据库的端口,缺省是 1433

  • USERNAME 创建好的监控用的用户名

  • PASSWORD 创建好的监控用的用户名对应的密码

  • DEBUG 打开 Debug 模式来进行调试,DEBUG 有两个参数可选,appmetrics ,可以都使用,也可以二选一。

指标

使用这个 Exporter 可以获取到如下监控指标:


  • mssql_instance_local_time Number of seconds since epoch on local instancemssql_connections{database,state} Number of active connections

  • mssql_deadlocks Number of lock requests per second that resulted in a deadlock since last restart

  • mssql_user_errors Number of user errors/sec since last restart

  • mssql_kill_connection_errors Number of kill connection errors/sec since last restart

  • mssql_database_state{database} State of each database (0=online 1=restoring 2=recovering 3=recovery pending 4=suspect 5=emergency 6=offline 7=copying 10=offline secondary)

  • mssql_log_growths{database} Total number of times the transaction log for the database has been expanded last restart

  • mssql_database_filesize{database,logicalname,type,filename} Physical sizes of files used by database in KB, their names and types (0=rows, 1=log, 2=filestream,3=n/a 4=fulltext(prior to version 2008 of MS SQL Server))

  • mssql_page_life_expectancy Indicates the minimum number of seconds a page will stay in the buffer pool on this node without references. The traditional advice from Microsoft used to be that the PLE should remain above 300 seconds

  • mssql_io_stall{database,type} Wait time (ms) of stall since last restart

  • mssql_io_stall_total{database} Wait time (ms) of stall since last restart

  • mssql_batch_requests Number of Transact-SQL command batches received per second. This statistic is affected by all constraints (such as I/O, number of users, cachesize, complexity of requests, and so on). High batch requests mean good throughput

  • mssql_page_fault_count Number of page faults since last restart

  • mssql_memory_utilization_percentage Percentage of memory utilization

  • mssql_total_physical_memory_kb Total physical memory in KB

  • mssql_available_physical_memory_kb Available physical memory in KB

  • mssql_total_page_file_kb Total page file in KB

  • mssql_available_page_file_kb Available page file in KB


这个监控指标数量相对 MySQL 来说,少很多了。

小结

这个 Exporter 我基本上没有使用过,大家使用过程中有问题的话,可以联系作者,看看能否处理。

发布于: 3 小时前阅读数: 8
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Prometheus Exporter (十六)Microsoft SQL Server Exporter