随着需求和环境的不断变化,企业由基础设施监控,慢慢转向数据库、中间件更贴近应用级监控,因此监控领域的童鞋的能力要求在不断的提高,所以今天要介绍的就是怎么监控微软的Sql Server的监控,为你的监控能力添砖加瓦。
写在前面
笔者在做这篇文章的时候,特意翻了很多互联网上的资料,有很多关于Sql Server的监控内容,但是有很多重复且又无法实现的文章。本着分享的姿态就写了这一篇文章。
正文
ODBC
首先介绍ODBC是什么吧,网上的介绍是:ODBC就是是为解决异构数据库间的数据共享而产生的,现已成为WOSA(The Windows Open System Architecture(Windows开放系统体系结构))的主要部分和基于Windows环境的一种数据库访问接口标准。ODBC 为异构数据库访问提供统一接口,允许应用程序以SQL 为数据存取标准,存取不同DBMS管理的数据;使应用程序直接操纵DB中的数据,免除随DB的改变而改变。用ODBC 可以访问各类计算机上的DB文件,甚至访问如Excel 表和ASCI I数据文件这类非数据库对象。说句听的懂的人话:就是一种针对不同的数据库连接工具,目前针对sql server比较好的解决方案。当然也可以通过PowerShell执行生成的XML文件导入到zabbix也可以,但推荐还是ODBC,目前Zabbix官方提供监控Sql Server的方法就是ODBC的方式。
本文环境
- Linux版本:CentOS 8.2
- Zabbix版本:5.2.2
- Windows系统:2019
- 数据库:Sql Server 2019
- ODBC版本:
- ODBC驱动版本:17
安装ODBC驱动
由于CentOS自带ODBC软件,无需安装,如果是CentOS8以下(不包含8)安装ODBC软件yum -y update unixODBC unixODBC-devel安装微软ODBC源,如果是CentOS7,就将下面的数字改为7curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo安装微软相关组件(ACCEPT_EULA=Y为接受政策,必写)ACCEPT_EULA=Y dnf -y install msodbcsql17ACCEPT_EULA=Y dnf -y install mssql-tools导入变量echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profileecho 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrcsource ~/.bashrc
查看驱动文件
vim /etc/odbcinst.ini
添加数据源
vim /etc/odbc.ini
安装zabbix插件
在zabbix官网下载zabbix agent for windows。
测试连接数据库
用isql命令 Kasar为odbc.ini里的[]名称,后面为账户名称isql Kasar sa 123.com -v
Zabbix前端添加监控
添加ODBC的MSSQL模板(如果没有可以私信我)
修改模板的宏
由于官方自带的模板用户名密码为通用,所以需要自行配置,调整的地方如下图,首先图中的DSN部分为odbc.ini里的[]内容,其次为用户名密码。
验证
查看最新数据,正常就OK了
添加自定义语句
查询sqlserver连接数select COUNT(1) from sysprocesses where dbid in (select dbid from sysdatabases-- where name='master') ##这里切记要单独一行
需要注意的是键值这一块,可以写变量,也可以写具体的值,第一个是描述,可以随便填写,第二个就是odbc.ini[]里的内容,第三个可以不用填写。db.odbc.select[,,]
遇到的问题
这种属于账号没有权限连接,所以需要去数据库调整权限,给public权限即可,另外如果是Centos7的报错可能不一样,会出现类似{administrator|---},基本都会是权限问题。
写在最后
经过我长时间的测试,基本都OK,包括基于之前的SQL server版本也可以,遇到的一些问题都是权限问题,各位如果感兴趣可以测试,另外数据库的监控只是基础监控,如果需要更深度的监控语句,可以让业务方提出要求,你们执行就好了,如果我的文章对您有用欢迎关注和转发哦,谢谢啦