内容简介:安装教程请查看链接
安装教程请查看链接
Zabbix3.4系列之二:Linux批量安装客户端Zabbix-agent
Zabbix3.4系列之三:windows批量安装客户端Zabbix-agent
通过 Zabbix模板,用于监视和收集Microsoft SQL Server统计信息。大多数请求是通过Windows性能计数器(`perf_counter`)完成的,一些是通过PowerShell完成的,另一些是通过ODBC完成的。
一、系统要求
Microsoft SQL Server2008-2012数据库
zabbix3.2-3.4
二、模板监控数据特征
-
MS SQL服务的状态
-
服务器统计(共70项):
-
内存
-
高速缓存
-
缓冲管理器
-
访问方法
-
锁
-
错误和失败的工作
-
日志大小
-
通过Powershell(Zabbix代理)或ODBC直接进行数据库发现
三、安装配置
本文配置文件路径为:C:\zabbix\zabbix_agentd.win.conf
本文脚本文件路径为:C:\zabbix\scripts\
1、将下面的配置信息添加到zabbix_agentd.win.conf最后面:
UserParameter = mssql.db.discovery,powershell -NoProfile -ExecutionPolicy Bypass -File“C:\zabbix\scripts\mssql_basename.ps1”
UserParameter = mssql.version,powershell -NoProfile -ExecutionPolicy Bypass -File“C:\zabbix\scripts\ mssql_version.ps1”
2、 将PowerShell脚本(`mssql _ * .ps1`)复制到脚本文件夹C:\zabbix\scripts\
mssql_basename.ps1配置信息
#функция для приведения к формату который понимает zabbix / the function is to bring to the format understands zabbix function convertto-encoding ([string]$from, [string]$to){ begin{ $encfrom = [system.text.encoding]::getencoding($from) $encto = [system.text.encoding]::getencoding($to) } process{ $bytes = $encto.getbytes($_) $bytes = [system.text.encoding]::convert($encfrom, $encto, $bytes) $encto.getstring($bytes) } } #Задаем переменные для подключение к MSSQL. $uid и $pwd нужны для проверки подлинности windows / We define the variables for connecting to MS SQL. $uid и $pwd need to authenticate windows $SQLServer = $(hostname.exe) #$uid = "Login" #$pwd = "Password" #Создаем подключение к MSSQL / Create a connection to MSSQL #Если проверка подлинности windows / If windows authentication #$connectionString = "Server = $SQLServer; User ID = $uid; Password = $pwd;" #Если Интегрированная проверка подлинности / If integrated authentication $connectionString = "Server = $SQLServer; Integrated Security = True;" $connection = New-Object System.Data.SqlClient.SqlConnection $connection.ConnectionString = $connectionString $connection.Open() #Создаем запрос непосредственно к MSSQL / Create a request directly to MSSQL $SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "SELECT name FROM sysdatabases" $SqlCmd.Connection = $Connection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet) > $null $Connection.Close() #Получили список баз. Записываем в переменную. / We get a list of databases. Write to the variable. $basename = $DataSet.Tables[0] #Парсим и передаем список баз в zabbix. В последней строке нужно вывести имя бызы без запятой в конце. / Parse and pass a list of databases in zabbix. In the last line need to display the database name without a comma at the end. $idx = 1 write-host "{" write-host " `"data`":[`n" foreach ($name in $basename) { if ($idx -lt $basename.Rows.Count) { $line= "{ `"{#DBNAME}`" : `"" + $name.name + "`" }," | convertto-encoding "cp866" "utf-8" write-host $line } elseif ($idx -ge $basename.Rows.Count) { $line= "{ `"{#DBNAME}`" : `"" + $name.name + "`" }" | convertto-encoding "cp866" "utf-8" write-host $line } $idx++; } write-host write-host " ]" write-host "}"
mssql_version.ps1脚本内容
$ver = Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3 write-host $ver.Column1
3、 通过Web (配置 - >模板 - >导入)将XML模板文件(`zbx_template_mssql.xml`)导入Zabbix。
zbx_template_mssql.xml模板内容:
zbx_template_mssql.xml模板内容太多,模板下载地址: http://down.51cto.com/data/2452214
4、在“管理 - >常规 - >正则表达式(右侧下拉列表)”中配置正则表达式:
Name: Databases for discovery Expression: ^(master|model|msdb|ReportServer|ReportServerTempDB|tempdb)$ Type: Result is FALSE[object Object]
5、在“管理 - >常规 - >值映射(右侧下拉列表)”中导入“MS SQL Server数据库状态”值映射(`zbx_valuemaps_mssql.xml`)。正常是自动导入的,没有的话请手动添加:
四、 SQLServer性能计数器:
1、Access Methods(访问方法) 用于监视访问数据库中的逻辑页的方法。
Forwarded Records/sec |
每秒通过正向记录指针提取的记录数。 |
Page splits/sec(页分割/秒) |
由于数据更新操作引起的每秒页分割的数量。 |
Workfiles Created/sec: |
每秒创建的工作文件数。 例如,工作文件可用于存储哈希联接和哈希聚合的临时结果。 |
Worktables Created/sec |
每秒创建的工作表数。 例如,工作表可用于存储查询假脱机、LOB 变量、XML 变量和游标的临时结果。 |
Full Scans/sec(全表扫描/秒) |
每秒不受限的完全扫描数。可以是基本表扫描或全索引扫描。如果这个计数器显示的值比1或2高,应该分析你的查询以确定是否确实需要全表扫描,以及S Q L查询是否可以被优化。 |
2、Buffer Manager(缓冲器管理器):
-
存储数据页的内存。
-
用于监视 SQL Server 读取和写入数据库页时的物理 I/O 的计数器。
-
用于借助高速非易失性存储(如固态硬盘 (SSD))扩展缓冲区高速缓存的缓冲池扩展。
监视 SQL Server 使用的内存和计数器有助于确定:
-
是否存在物理内存不足的瓶颈。 如果 SQL Server 无法将经常访问的数据存储在缓存中,则必须从磁盘检索数据。
-
是否可以通过添加更多内存或增加数据缓存或 SQL Server 内部结构的可用内存来提高查询性能。
-
SQL Server 需要从磁盘读取数据的频率。 与其他操作(例如内存访问)相比,物理 I/O 会消耗大量时间。 尽可能减少物理 I/O 可以提高查询性能。
Buffer Cache Hit Ratio |
在“缓冲池”(Buffer Cache/Buffer Pool) 中 没有被读过的页占整个缓冲池 中 所有页的比率。可在高速缓存 中 找到而不需要从磁盘 中 读取的页的百分比。这一比率是高速缓存命 中 总数除以自 SQL Server 实例启动后对高速缓存的查找总数。经过很长时间后,这一比率的变化很小。由于从高速缓存 中 读数据比从磁盘 中 读数据的开销要小得多,一般希望这一数值高一些。通常,可以通过增加 SQL Server 可用的内存数量来提高高速缓存命 中 率。计数器值依应用程序而定,但比率最好为90% 或更高。增加内存直到这一数值持续高于90%,表示90% 以上的数据请求可以从数据缓冲区 中 获得所需数据。 |
Lazy Writes/sec(惰性写/秒) |
惰性写进程每秒写的缓冲区的数量。值最好为0。 |
Page Reads/sec: |
每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理 I/O 的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。 |
Page Writes/sec (.写的页/秒) |
每秒执行的物理数据库写的页数。 |
3、 Locks(锁) 提供有关个别资源类型上的 SQL Server 锁的信息。
锁加在 SQL Server 资源上(如在一个事务 中 进 行的行读取或修改),以防止多个事务并发使用资源。例如,如果一个排它 (X) 锁被一个事务加在某一表的某一行上,在这个锁被释放前,其它事务都不可以修改这一行。尽可能少使用锁可提高并发性,从而改善性能。可以同时监视 Locks 对象的多个实例,每个实例代表一个资源类型上的一个锁。
Number of Deadlocks/sec |
(死锁的数量/秒) 导致死锁的锁请求的数量 |
Average Wait Time(ms) |
(平均等待时间(毫秒)) 线程等待某种类型的锁的平均等待时间 |
Lock Requests/sec |
(锁请求/秒) 每秒钟某种类型的锁请求的数量。 |
Lock Timeouts/sec |
每秒超时的锁请求数,包括对 NOWAIT 锁的请求。 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Zabbix自定义监控脚本配置详解
- frp 控制台监控dashboard配置
- 容器监控实践—Prometheus的配置与服务发现
- 告警系统主脚本,告警系统配置文件,告警系统监控项目
- Zabbix Proxy 分布式监控安装和配置实践
- sourcemap 上传到sentry异常监控系统的配置记录
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。