我想编写一个Zabbix触发器,可以检测我的服务器何时从同一个远程客户端获取太多请求 - 比如简单的DOS攻击。
具体来说,我想检测远程客户端项目当前值的出现次数是否超过最后一分钟的定义阈值。
我尝试过这样的事情
{Server:nginx.access.remote.last()}
但我得错误说表达式不正确。我想它不接受表达式count
作为函数{Server:nginx.access.remote.count(1m,X,eq)}>10000
的参数。
所以最终,我的逻辑就是这个
DECLARE @COLS AS NVARCHAR(MAX)
DECLARE @query AS NVARCHAR(MAX)
SET @COLS=STUFF((select ',' + QUOTENAME(Course) from cst_coursedetails where programid=1 FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,1,'')
SET @query =' SELECT * FROM(SELECT B.COLLCODE, B.COLLNAME,C.Course AS COURSE,D.ROLLNAME, E.ExamType, COUNT (A.HTNO) AS PRECOUNT FROM TableOne AS A
INNER JOIN TableTwo AS B ON A.COLLCODE=B.COLLCODE AND A.PROGRAMID=B.PROGRAMID
INNER JOIN TableThreee AS C ON C.CourseId=A.CourseId
INNER JOIN TableFour AS D ON D.ROLLID=A.ROLLID
INNER JOIN CST_EXAMTYPE AS E ON E.ExamTypeId=A.ExamTypeId
WHERE A.STATUSID !=17 AND a.ProgramId=1 AND A.ROLLID IN(1,2,3) AND A.EXAMTYPEID IN(1) GROUP BY B.COLLNAME,B.COLLCODE,C.Course,d.ROLLNAME ,E.ExamType
)SRC
PIVOT(
SUM(PRECOUNT) FOR COURSE IN('+@COLS+')
)AS PIV'
其中X应该是当前值,但我不知道如何将值放在表达式中。
我将不胜感激任何帮助和建议。感谢。