@zabbix监控Sql Server 数据库及azure云上pass应用(ODBC监控)


在这里插入图片描述

1.ODBC概述

ODBC监控对应于Zabbix前端中的数据库监控类型
ODBC是C语言编写的中间件API,用于访问数据库管理系统(DBMS)。
ODBC是由Microsoft开发的,后来被移植到了其它平台

Zabbix可以查询任何支持ODBC的数据库。
实现这个目标,Zabbix不直接连接数据库,而是使用ODBC接口并在ODBC中设置的驱动程序。
该功能允许出于多种目的,更加有效地监视不同的数据库。
例如,检测特定的数据库队列、使用统计信息等。
Zabbix支持unixODBC,是最常用的开源ODBC API实现之一

2.ODBC安装

安装unixODBC的建议方法是使用Linux操作系统默认包库,在主流的Linux发行版中;
默认情况下unixODBC包含在镜像库中

【ODBC存储库】

RedHat/Fedora及Centos系统上使用yum包管理器安装unixODBC

#zabbix server上下载安装odbc
[root@Zabbix server ~]# yum -y install unixODBC unixODBC-devel



#查看odbc使用方式
[root@Zabbix server ~]# odbcinst 

**********************************************
* unixODBC - odbcinst                        *
**********************************************
*                                            *
* Purpose:                                   *
*                                            *
*      An ODBC Installer and Uninstaller.    *
*      Updates system files, and             *
*      increases/decreases usage counts but  *
*      does not actually copy or remove any  *
*      files.                                *
*                                            *
* Syntax:                                    *
*                                            *
*      odbcinst Action Object Options        *
*                                            *
* Action:                                    *
*                                            *
*      -i         install                    *
*      -u         uninstall                  *
*      -q         query                      *
*      -j         print config info          *
*      -c         call SQLCreateDataSource   *
*      -m         call SQLManageDataSources  *
*      --version  version                    *
*                                            *
* Object:                                    *
*                                            *
*      -d driver                             *
*      -s data source                        *
*                                            *
* Options:                                   *
*                                            *
*      -f file name of template.ini follows  *
*         this (valid for -i)                *
*      -r get template.ini from stdin, not   *
*         a template file                    *
*      -n Driver or Data Source Name follows *
*      -v turn verbose off (no info, warning *
*         or error msgs)                     *
*      -l system dsn                         *
*      -h user dsn                           *
*                                            *
* Returns:                                   *
*                                            *
*      0   Success                           *
*     !0   Failed                            *
*                                            *
* Please visit;                              *
*                                            *
*      http://www.unixodbc.org               *
*      pharvey@codebydesign.com              *
**********************************************

3.安装 unixODBC 驱动程序

zabbix监控,需要为被监控的数据库安装一个unixODBC数据库驱动程序。
unixODBC有一个支持的数据库和驱动程序列表:
【ODBC支持数据库组件列表】

在一些Linux发行版中,数据库驱动程序包含在镜像库中。
在RedHat/Fedora系统上使用yum包管理器安装sql server或者MySQL数据库驱动程序

#sql server驱动程序安装
yum install freetds -y

4.配置 unixODBC

ODBC配置是通过编辑 odbcinstn.ini 和 odbcst.ini 文件完成的

#ODBC配置文件位置查找,可通过命令直接查看
odbcinst


#查看odbc驱动配置
odbc_config --odbcinstini




#ODBC驱动查找
[root@Zabbix server ~]# find / -name 'libtdsodb*'
/usr/lib64/libtdsodbc.so
/usr/lib64/libtdsodbc.so.0
/usr/lib64/libtdsodbc.so.0.0.0

odbcinstst.ini驱动程序配置:

#odbcinstst.ini 用于列明已安装的ODBC数据库驱动程序,在/etc/odbcinst.ini添加SQL Server驱动FreeTDS:
[root@Zabbix server ~]# egrep "^[^#]" /etc/odbcinst.ini 
# PostgreSQL驱动项(默认就有)
[PostgreSQL]
Description	= ODBC for PostgreSQL
Driver		= /usr/lib/psqlodbcw.so
Setup		= /usr/lib/libodbcpsqlS.so
Driver64	= /usr/lib64/psqlodbcw.so
Setup64		= /usr/lib64/libodbcpsqlS.so
FileUsage	= 1


# Mysql驱动项(默认就有)
[MySQL]                                  # 数据库驱动名
Description	= ODBC for MySQL             # 数据库驱动描述
Driver		= /usr/lib/libmyodbc5.so     # 数据库驱动程序库文件位置
Setup		= /usr/lib/libodbcmyS.so
Driver64	= /usr/lib64/libmyodbc5.so
Setup64		= /usr/lib64/libodbcmyS.so
FileUsage	= 1


# SQL Server驱动项(新增项)
[FreeTDS]  
Description = ODBC for SQL Server
Driver = /usr/lib64/libtdsodbc.so.0
Setup = /usr/lib64/libtdsS.so
FileUsage = 1

odbc.ini 自定义数据源:多台设备可直接添加到此配置中

#添加数据源(默认再/etc/odbc.ini,找不到旧find)
[root@Zabbix server ~]# find / -name 'odbc.ini*'
/etc/odbc.ini
/usr/share/doc/freetds-libs-1.3.3/samples-odbc/odbc.ini
/usr/share/man/man5/odbc.ini.5.gz





#配置数据源(配置默认配置即可)
[root@Zabbix server ~]# egrep [^#] /etc/odbc.ini 
[mssql]
Driver = FreeTDS
Server = zeny.database.windows.net
Port = 1433
TDS_Version = 8.0
#Database = zeny


[zeny1]          
Driver = FreeTDS
Server = 192.168.1.5
PORT = 1433
TDS_Version = 8.0


[zeny2]
Driver = FreeTDS
Server = 127.0.0.1
PORT = 1433
TDS_Version = 8.0












《配置以上配置即可,略过以下配置即可》
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
####################################################################################
[root@Zabbix server ~]# egrep "^[^#|^;]" /usr/share/doc/freetds-libs-1.3.3/samples-odbc/odbc.ini
[ODBC Data Sources]
JDBC = Sybase JDBC Server


[JDBC]                                           # 数据源名称
Driver          = /usr/local/lib/libtdsodbc.so   # 数据库驱动程序名称
Description     = Sybase JDBC Server             # 数据源描述
Trace           = No                             
Servername      = JDBC
Database        = pubs2
UID             = guest


[Default]
Driver          = /usr/local/lib/libtdsodbc.so



[MSSQL]                             # 数据源名称
Driver = FreeTDS                      # 数据库驱动程序名称
Server = zeny.database.windows.net    # 数据库服务器 IP/DNS
Port = 1433                           # 数据库连接端口
Database = zeny                       # 数据库名称
TDS_Version = 8.0                     # 数据库版本
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

相关参数详解:

在这里插入图片描述

5.ODBC验证

验证ODBC连接是否正常工作,应该测试到数据库的连接,这可以通过isql实用程序(包含在unixODBC包中)如下所示:

#通过账号密码测试:(如下所示成功)
__________________________________________________________________________________________________________________________________________
shell> tsql -S zeny.database.windows.net -U admin-zeny
Password: 
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> SELECT Name from sys.databases;      #查看所有库
2> go
Name
master
zeny
(2 rows affected)
1> CREATE DATABASE zenyDB;              #创建数据库
2> go
3> SELECT Name from sys.databases;
4> go
Name
master
zeny
zenyDB
(3 rows affected)
1> quit
________________________________________________________________________________________________________________
shell> tsql -S 192.168.1.5 -U sa -P hzl@20144
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> select name from sys.databases;
2> go
name
master
tempdb
model
msdb
TESTDB
zeny
(6 rows affected)
1> 
_____________________________________________________________________________________________________________________________________________
shell> tsql -S 127.0.0.1 -U sa -P hzl@20144
locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> select name from sys.databases;
2> go
name
master
tempdb
model
msdb
(4 rows affected)
1> 






#配置信息查看
[root@Zabbix server ~]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8




#查看版本
shell> isql --v
unixODBC 2.3.1





#验证(只需要isql命令加上数据源名称即可)isql -v DSN <username> <password>
isql -v DSN
#测试功能信息状态
tsql -C

#显示连接信息: tsql -S DSN -U <username> -P <password>
tsql -H DSN -p 1433 -U sa -P hzl@2022
osql -S DSN -U <username> -P <password>

6.zabbix web配置

【zabbix部署安装】

zabbix配置,正常添加主机即可
注:云上资源直接使用DNS即可,有配置IP,可直接使用IP地址即可

在这里插入图片描述

在这里插入图片描述

mssql监控配置宏
注:不同的mssql,需要使用不同的DSN

在这里插入图片描述

在这里插入图片描述

sql server主机数据监控验证

在这里插入图片描述

在这里插入图片描述

mssql01主机数据监控验证

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

7.MSSQL自定义项监控

mssql监控项添加,添加自定义监控配置

在这里插入图片描述

测试配置的监控项是否有误,及配置的返回值状态

在这里插入图片描述

数据检查:如下所示一个简单的监控配置🆗了,如有其他的需求,也可自定义配置监控

在这里插入图片描述

### 配置 Zabbix 监控 SQL Server 的状态与性能 #### 一、环境准备 为了成功配置 Zabbix监控 SQL Server,需先完成必要的软件安装和配置工作。以下是具体操作: 1. **Zabbix 主机操作系统** 使用 CentOS Stream 8 作为 Zabbix 主机的操作系统[^1]。 2. **Zabbix 版本** 确保使用的 Zabbix 是版本 6.0 或更高版本,因为这些版本提供了更强大的数据库监控能力。 3. **SQL Server 版本** 支持 Microsoft SQL Server 2008 R2 及以上版本。 4. **ODBC 安装与配置** - ODBC 接口用于间接访问 SQL Server 数据库,而不是通过直接连接的方式。 - 在 Linux 上推荐使用 unixODBC,这是最常用的开源 ODBC API 实现之一[^3]。 #### 安装步骤: ```bash sudo yum install unixODBC freetds unixODBC-devel -y ``` 5. **FreeTDS 配置** 修改 FreeTDS 配置文件 `/usr/local/freetds/etc/freetds.conf` 中的 `tds version` 参数为 `8.0`,以兼容 SQL Server 2008 R2 和更新版本[^4]。 ```ini [global] tds version = 8.0 ``` --- #### 二、创建自定义脚本进行数据采集 可以通过编写批处理脚本 (`.bat`) 结合 Zabbix Agent 进行数据采集并发送到服务器端[^2]。 ##### 脚本示例 (`check_sql.bat`) ```batch @echo off setlocal enabledelayedexpansion :: 设置变量 set DB_SERVER=your_server_name set DB_NAME=your_database_name set USER=your_username set PASSWORD=your_password :: 查询 SQL Server 并返回结果 sqlcmd -S %DB_SERVER% -d %DB_NAME% -U %USER% -P %PASSWORD% -Q "SELECT COUNT(*) FROM your_table WHERE condition='value'" -h-1 -W > output.txt :: 将结果写入日志 type output.txt exit /b %ERRORLEVEL% ``` 此脚本会执行指定的 SQL 查询并将结果保存至临时文件中以便后续读取。 --- #### 三、配置 Zabbix Agent 编辑 Zabbix Agent 配置文件 `/etc/zabbix/zabbix_agentd.conf` 添加如下内容来调用上述脚本: ```conf UserParameter=custom.sql.check[*],/path/to/check_sql.bat $1 ``` 重启 Zabbix Agent 后即可生效。 --- #### 四、设置触发器与告警规则 在 Zabbix Web 界面中新增模板或导入现有模板,并针对所需指标设定阈值条件。例如,当某张表中的记录数超过预设范围时即触发警告通知机制。 --- #### 五、高级功能扩展——利用 ODBC 接口 如果希望进一步提升灵活性,则可通过 UnixODBC 提供的支持构建更为复杂的查询逻辑。这不仅限于简单的计数值获取,还可以涉及诸如事务延迟时间测量等方面的应用场景分析。 --- ### 注意事项 - 确认防火墙已开放必要端口(默认情况下为 TCP 1433),使得两者之间能够正常通信。 - 测试阶段建议启用调试模式观察交互过程是否存在异常情况发生。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值