рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд╛рд╖реНрдЯреНрд░реАрдп рдФрд░ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рдЙрджреНрдпрдо рдХреА рдХрд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЕрдХреНрд╕рд░ рдХрд╛рд░реНрдпрд╢реАрд▓ рдФрд░ рдЧреИрд░-рдХрд╛рд░реНрдп рджрд┐рд╡рд╕реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдмрджрд▓рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрдИ рд╕рдВрдЧрдардиреЛрдВ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЙрддреНрдкрд╛рджрди рдХреИрд▓реЗрдВрдбрд░ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрд╛рд░реНрдп рддрдХрдиреАрдХреА рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВред рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЬреЛ рд╕реНрд╡рд╛рдпрддреНрдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЕрдХреНрд╕рд░ рдЙрджреНрдпрдо рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реВрдЪрдирд╛ рдкреНрд░рд╡рд╛рд╣ рдФрд░ рдбреЗрдЯрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдирд┐рдпрдд рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рджреИрдирд┐рдХ рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдордп, рдирд┐рдЧрд░рд╛рдиреА рддрд░реНрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредрдЙрддреНрдкрд╛рджрди рдХреИрд▓реЗрдВрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝реИрдмрд┐рдХреНрд╕ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рдЖрдЗрдП рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдкрд░рд┐рдЪрдп
рдЬрд╝реИрдмрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд╛ рддрд░реНрдХ рдЙрди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВред рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд╛ рддрд░реНрдХ рдпрд╛ рдЕрдиреБрд╕реВрдЪреА рдмрджрд▓рдирд╛ рдПрдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рд╣реИ, рдЬреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рдЬрдм рдХрд╛рд░реНрдп рджрд┐рд╡рд╕ рдХреЗ рдмрдЬрд╛рдп рдЫреБрдЯреНрдЯреА рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░реНрд╕ рдХреЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдХреЛ рдирд┐рдЧрд░рд╛рдиреА рд╕рд░реНрдХрд┐рдЯ рдХреЛ "рд░рдЦрд░рдЦрд╛рд╡" рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рджрд┐рд╡рд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдХрд╛рдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рдирд┐рдЧрд░рд╛рдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЬрд╝реИрдмрд┐рдХреНрд╕ рд╕реЗ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдЯреНрд░рд┐рдЧрд░реНрд╕ рдХреЗ рд▓рдЪреАрд▓реЗ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдЧреНрд▓реЛрдмрд▓ рдореИрдХреНрд░реЛрдЬрд╝
https://habr.com/en/company/zabbix/blog/344492/ рдХреЗ рд╕рд╛рде рд╕реНрдХреИрди рдЪрдХреНрд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ ред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╛рдзрд╛рди
рдПрдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрдиреБрд╕реВрдЪреА рдкрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЪрд╛рд▓реВ / рдмрдВрдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ ред
рдЬрд╝реИрдмрд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдмрд╛рд╣рд░реА рдкреНрд░рднрд╛рд╡реЛрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред
рдЖрдЗрдП рдЖрдВрддрд░рд┐рдХ рдЬрд╝реИрдмрд┐рдХреНрд╕ рддрдВрддреНрд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрд╛рджрди рдХреИрд▓реЗрдВрдбрд░ рдХреЗ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
, . , .
github.com, .
Zabbix :
Zabbix
Zabbix :
:
- Zabbix-agent. Zabbix-agent
- , ,
тДЦ1
.
{$DATEURL} . "HTTP agent" "holiday.date.by.http".
( 1). 1. .

.
"Preprocessing" "$.date".

, "holiday.date.by.http" .
"Calculated" "today.is.a.holiday"

:
last(holiday.date.by.http)=date(system.localtime)
"Numeric(Unsigned)"
, 0 1.
, 0 1 . , "" , . .
, :
" "
" " . .
:
{Zabbix server:system.users.num.last()}>1
{Zabbix server:system.users.num.last()}>1 and {Zabbix server:today.is.a.holiday.last()}=0
.
.
" "
"/".
"today.is.a.holiday" .

.

.
. "{Zabbix server:system.users.num.last()}>1", 1.
"{Zabbix server:proc.num.last()}>20"
""


(, TG, SMS).
. . .
тДЦ2
, Zabbix . , . .
?
1
- , .
2
, .
, .
, . {$HOLIDAY_DATE}. , , Zabbix-agent, {$CURRENT_DATE} .
InfluxDB. , 1 5 .
InfluxDB
, . fuzzytime . .
<item>
<name>Today is a holiday</name>
<type>CALCULATED</type>
<key>influxdb.holiday</key>
<history>1h</history>
<trends>0</trends>
<params>date(system.localtime)={$HOLIDAY_DATE}</params>
<applications>
<application>
<name>InfluxDB DataCheck</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{last()}</expression>
<name>InfluxDB Holiday Activated</name>
<opdata>If Fired - all dependent triggers are disabled</opdata>
<priority>INFO</priority>
<description> </description>
</trigger>
</triggers>
</item>
.
, .
<params>{$CURRENT_DATE}={$HOLIDAY_DATE}</params>
, .
"" , " , Zabbix ?"
, , . Zabbix JSON RPC, , . Zabbix , , . , Zabbix , .

Preprocessing .

Preprocessing Script//Zabbix.Log(2, 'Date Update request value='+value);
var authtoken = '';
var globalmacroid = -1;
var req = new CurlHttpRequest();
req.AddHeader('Content-Type: application/json');
resp = req.Post("{$DATEURL}", '{}');
var holidaydate = JSON.parse(resp).date;
Zabbix.Log(2, 'Found new holiday date='+holidaydate);
resp = req.Post("{$JSONRPC}", '{"jsonrpc": "2.0","method": "user.login","params": {"user": "Calendar","password": "SomePassword"},"id": 1}');
//
if (req.Status() == 200) {
jv = JSON.parse(resp);
if (jv.result)
authtoken= jv.result;
else
return 0;
}
else
return 0;
//
var reqmacros =
{
"jsonrpc": "2.0",
"method": "usermacro.get",
"params": {
"output": "extend",
"globalmacro": true
},
"auth": authtoken,
"id": 1
}
resp = req.Post("{$JSONRPC}", JSON.stringify(reqmacros));
if (req.Status() == 200) {
var jv = JSON.parse(resp);
for(item in jv.result) {
if (jv.result[item].macro == '{\$HOLIDAY_DATE}')
{
globalmacroid = jv.result[item].globalmacroid
Zabbix.Log(2, 'Old Date value: '+jv.result[item].value)
}
}
if (globalmacroid == -1)
return 0;
}
else
{
return 0;
}
//
var changemacros =
{ "jsonrpc": "2.0",
"method": "usermacro.updateglobal",
"params": {
"globalmacroid": globalmacroid,
"value": holidaydate
},
"auth": authtoken,
"id": 1
}
resp = req.Post("{$JSONRPC}", JSON.stringify(changemacros));
if (req.Status() == 200) {
jv = JSON.parse(resp);
if (jv.result.globalmacroids.indexOf(globalmacroid) != -1)
return 1
}
return 0;
"{$HOLIDAY_DATE}" "{$CURRENT_DATE}". , . тАФ . .
, , / , -, / .
P.S.: , WEB , "HTTP agent" .
github.com
UPD: .
" ". 4.X , . , .
┬й Aborche 2020
