【0】核心参考
【简述】
MSSQL的监控,官网没有提供采集器,所以只能用其他程序来监控,本文就用了 sql-exporter。
它可以理解成一个远程连接数据库的工具,可以用它来连接sql server/mysql 等等数据库,并以SQL查询方式采集SQL查询结果。
SQL_Exporter 是中心化的,可以把对不同实例的agent链接,都放在一台linux服务器上,以便管理、修改。你想想看,如果你更新了采集指标,只需要在该台中心化服务器重启sql_exporter agent采集客户端即可生效。
不像其他 mysql/linux/windows采集器,他们是部署在实际被采集的服务器上的,如果你想要更新采集器(虽然它做的很好了,不需要更新。除此之外就是无法加入自定义的采集指标或者采集项),那么需要到那么多台被采集的客户端机器上去覆盖更新,很痛苦的。
【1】安装配置 sql_exporter
【1.1】下载解压 sql_exporter
#wget https://github.com/free/sql_exporter/releases/download/0.5/sql_exporter-0.5.linux-amd64.tar.gz
mkdir /soft
cd/softwget https://github.com/free/sql_exporter/releases/download/0.5/sql_exporter-0.5.linux-amd64.tar.gz
tar -zxf sql_exporter-0.5.linux-amd64.tar.gzln -s sql_exporter-0.5.linux-amd64 sql_exporter
cd sql_exporter
【1.2】修改配置文件
# Global defaults.
global:
# Subtracted from Prometheus'scrape_timeout to give us some headroom and prevent Prometheus from timing out first.
scrape_timeout_offset: 500ms
# Minimum interval between collector runs: by default (0s) collectors are executed on every scrape.
min_interval: 0s
# Maximum number of open connections to any one target. Metric queries will run concurrently on multiple connections,
# as will concurrent scrapes.
max_connections:10# Maximum number of idle connections to any one target. Unless you use verylongcollection intervals, this should
# always be the same as max_connections.
max_idle_connections:5# The target to monitor and the collectors to execute on it.
target:
# Data source name always has a URI schema that matches the driver name. In some cases (e.g. MySQL)
# the schema gets dropped or replaced to match the driver expected DSN format.
# data_source_name: 'sqlserver://sql_exporter:a123456!@192.168.191.81:1433/?encrypt=disable'
data_source_name:'sqlserver://sa:a123456!@192.168.191.81:1433'# Collectors (referenced by name) to execute on the target.
collectors: [mssql_standard]
# Collector files specifies a list of globs. One collector definition is read from each matchingfile.
collector_files:- "*.collector.yml"
解析:
(1)global
收集器中允许最慢的SQL执行超时时间,注意该超时时间应小于prometheus中的 scrape_time
scrape_timeout_offset: 500ms #用于从 prometheus的 scrape_timeout 中减去一个偏移时间,防止 prometheus 先超时,如果设置了 scrape_timeout,scrape
min_interval: 0s #收集器每隔0运行一次(默认情况下)收集器每隔0运行一次。
max_connections:10 #到任何一个目标的最大打开连接数。采集器信息查询将在多个连接上并发运行,max_idle_connections:5 #到任何一个目标的最大空闲连接数。除非使用很长的收集间隔,否则应该
(2)target
#数据源
data_source_name: 'sqlserver://sa:a123456!@192.168.191.81:1433'
(3)collector
#引用收集器文件
collector_files:
- "*.collector.yml"
【1.3】自带的sql server监控采集器
这里我们配置文件中 已经引用了 配置文件相同目录下的 "*.collector.yml",所以该文件也被包含进来了。
【2】整合 prometheus + sql_exporter
那么这个东西其实是一个采集器啊,但是为什么不能放到windows上呢.......好吧,不管了好像没什么很好的windows采集器,自己也不会做,先用着吧
【2.1】修改prometheus.yml配置文件
【2.2】启动 sql_exporter
(1)封装成系统服务
[Unit]
Description=sql_exporter
[Service]
Type=simple
ExecStart=/soft/sql_exporter/sql_exporter -config.file /soft/sql_exporter/sql_exporter.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
(2)启动、查看
systemctl daemon-reload
systemctl start sql_exporter
systemctl status sql_exporter-l
启动成功,并且 默认端口是 9399
【2.3】核验
如下图,这就成功了啊
【3】结合 grafana 显示
【3.1】导入MSSQL模板