zabbix监控sql语句执行结果
zabbix吧
全部回复
仅看楼主
level 1
大佬们,我这边用sql server存储考勤数据,现在我怕数据丢失想做一个监控数据的这个一个动作,并配置邮件或者短信报警。
先在数据库内自动执行sql语句查询一段时间内的结果,如没有查询到数据,zabbix执行报警动作,这可行吗?
2023年05月19日 15点05分 1
level 2
应该可以自定义监控项,监控内容是执行mysql查询命令,查询某张表记录条数。然后监控项可以预处理计算差值
2023年05月20日 10点05分 2
感谢感谢,意思是监控SQL语句返回的记录
2023年05月20日 10点05分
level 9
可以实现你的需求,具体步骤如下:
在 SQL Server 中创建一个 SQL 代理作业,该作业包含你要执行的查询语句。可以使用 SQL Server Management Studio 来创建代理作业。
在 Zabbix 中创建一个监控项,该监控项的类型为“External check”,并将其命名为“SQL Job Status”。
编写一个 PowerShell 脚本,用于检查 SQL 代理作业的运行状态,并将结果返回给 Zabbix。脚本内容如下:
$jobName = "Your SQL Job Name"$serverName = "Your SQL Server Name"$jobStatus = (Invoke-Sqlcmd -ServerInstance $serverName -Query "exec msdb..sp_help_job @job_name='$jobName'" | Select-Object -ExpandProperty current_execution_status)if ($jobStatus -eq 1) { Write-Output "1"} else { Write-Output "0"}
将 PowerShell 脚本保存在 Zabbix Server 的某个目录下,例如“C:\Monitoring\Scripts”。
在 Zabbix 中创建一个动作,该动作的类型为“Remote command”,并将其命名为“SQL Job Failure Alert”。
在动作的“Operations”选项卡中,添加一个操作,该操作的类型为“Remote command”,并在“Command”字段中输入以下命令:
网页链接 -ExecutionPolicy Bypass -File "C:\Monitoring\Scripts\sql_job_check.ps1"
在动作的“Conditions”选项卡中,添加一个条件,该条件的类型为“Trigger”,并选择“SQL Job Status”监控项。
在条件的“Expression”字段中输入以下表达式:
{SQL Job Status.last()}=0
在条件的“Recovery operations”字段中,添加一个操作,该操作的类型为“Remote command”,并在“Command”字段中输入以下命令:
echo "SQL Job has recovered" | sendmail -t your@youremail
保存并测试你的 Zabbix 配置。
此时,你的 Zabbix 服务器将定期执行 PowerShell 脚本来检查 SQL Server 中的代理作业是否正在运行。如果代理作业失败,Zabbix 将通过电子邮件发送警报。如果代理作业恢复正常,Zabbix 将再次发送电子邮件,提示代理作业已恢复。
2023年06月02日 04点06分 3
1