á˛áŽá áĄáľáŽá, Zabbix áá
á°áľ áĄáľá áááá˛áľ
Zabbix áááááá á áááľ ááἠááá¨áłá°á á¨ááŤáááá áá á á¨áá˝á ááľá¨á ááᢠá¨ááááŞáŤááš á¨áá˘ááľ áľáŞáśá˝ áááŽáŁ á¨ááľáľá á áľá°áłáłáŞáá˝ á¨á°ááŤáŠ áľááŞááśá˝á á¨áááľ á˝ááł áá áŤá¸á áĽááááá˝ á áááá á¨á ááłá¨ áá¨áĽ á áááá˝ áá áźáŽá˝. á á°ááłáłá áá á¨áľááŞááľ áááአá ááŤáł á˝ááŽá˝á á áľá¨áľááᤠá¨áĽááá á ááŤá¨á áľááŞááśá˝á á¨áá°áá á áľáááááľáŁ áá° áááá ááśá˝ áĽá ááŽáá˛áá˝ ááľá¨áľ áĽáá˛áá áá°ááŤáŠ áľáŞáśá˝ áľááá˘
á፠áľááŞááľ ááá˘ááľ
á á¤ááŞá 2019ᣠZabbix 4.2 á¨á፠áľááŞááľ á áľá áá°áľ áá á áľá°áááᢠáĽá á°áá˝ áá¨áá áá° á ááľ áŚáł á¨áááľáąáľá áľááŞááśá˝ á áá°á ᣠá ááá¨áľ áĽá áá˘ááľ á áá¨áłá á áá¸áľ áŤá áᥠáĽá á áá˘ááľ ááá¨áá¸áľ áĽá áááľáŤáľ ááá áŤááá áá¨á á¨ááá á ááá áźáŽá˝á á áá°á ááłáĽ á°á°áľá°ááᢠá¨á፠á¨áá˘ááľ áĽá ááŤáľááŞááľ ááłáŞáŤáá˝á á áá áá áá áá á¨ááἠáĽá¨áľ áŤáľáŹáąá˘ á áá˘ááľ 3.4 áá á¨áłáŠáľ áá á°á á°á¨á áááśá˝ áĽá áĽááá˝ áĽááá˝ áá á ááŁáá á¨á°áá ááá ááἠááá°áá°á áĽá áááľá°áłá°á á áŁá á°áááá á˝áá°-ááłáĽ á ááá°ááá˘
á Zabbix 4.4, á ááŤáľááŞááľ ááľáĽ á áľá-áá°áľ áĽáá° ááááŤáłá ááŁáááľ, á á˛áľ á¨ááłáá፠áá´ áłá¨ - Webhook, ᨠZabbix ááłáááŤáá˝á á¨áśáľá°á ááá áá°áá áŞáŤáá˝ áá á ááá áááááľ ááŤáááá áá˝áá.
ááŤáľááŞááľ áĽá áąááłááľ
á፠áľááŞááľ áĽá áąááłá ááá á°áá¨áĄ? áááááá˝ áĽá áá°áŽá˝ á¨á°ááŤáŠ á ááŤáŽá˝ á°ááľá°áá-
- Lua - Lua 5.1
- Lua - LuaJIT
- ááŤáľááŞááľ - áąááłá
- ááŤáľááŞááľ - á᪠áľááŞááľ
- á¨á°á¨á°á° Python
- á¨á°á¨á°á° ááá
ááááš á¨ááá¨áŤ áááááá˝ ááľáááľáŁ á¤ááá á¨áááą áá á¨ááááľ áááááľáŁ á ááľá°á á¨ááĽáľ áááł áĽá á¨áá°áŠ á á ááá á áááá áĽá á áá ááá áŽáľá áá° ááľáľá á¨ááľá°ááá á°á áááľá˘ á á áááá˝ áĽáá áá á áááľá¨áľ á፠áľááŞááľ á áąááłá áá°á áá á á¸áááá˘
á¨áá፠ááľáááśá˝ áĽá á¨á áááá áá¨áŤáá˝
á¨áąááłá áŁá áŞáá˝
- áá°á á
- á¨áá˘ááľ áááá˝ ááąááłááĄ
- Zabbix.log () - á¨á°ááŤáŠ á¨ááááŽá˝ á°á¨ááá˝á á ááĽáł áá° áá˘ááľ á áááá áá áĽáá˛á˝á ááá áľáááłá ᣠáá á áľá á°áśá˝á áááááľ áŤáľá˝áá ᣠáááłá á áἠááá á ááľáĽ á¨á áááá áááł ááá˘
- CurlHttpáĽáŤá() - á¨ááĽáá á á ááá á¨á°áá°á¨á°á áľ áá° á ááłá¨ áá¨áĄ á¨á¤á˝á˛á˛á áĽáŤááá˝á áĽáá˛áŤá°áá ááá áľáááłáá˘
- atob() áĽá btoa() - ááĽá¨ááááá˝á á Base64 á áá¸áľ áĽáá˛áá°áአáĽá áĽáá˛ááą áŤáľá˝áááłáá˘
ááľáłááť. áąááłá á¨ACME ááľáááśá˝á áŤáááᢠáá˘á˘ááľ á¨2015 á¨áľááŞááąá áľáŞáľ áá áááᢠááŁá áááŚá˝ áľáá˝ áá¸á, áľááá á˝á ááŁá áá˝áá..
ááŤáľááŞááľ á áľááľ
ááá á¨á፠áľááŞááľ á áľááľ á á°áááá áá°á¨áĽ áĽá á áá°á¨áĽ áá ááᥠááĽá¨áááᣠááĽá áĽá áĄááŤáá˘
áá áááľ á°áááá áá ááááľ áĽá´áľ ááááľ áĽááłáá áľ á áľááľá ááá á áľááá á áá°áá.
á ááłáĽ áľáŤáá˝ ááľáĽ á á°ááŁáŤá áŚááŹá°áŽá˝ á¨á°áááąáľ áááá˝ áá° ááĽáŽá˝ ááá¨áŤá. ááĽáá°áá á áááľ áľáŤáá˝ ááŠááą áá°áá ááᣠááááŤáąá á¨áááśáš á˘áŤááľ á ááą ááĽá¨ááá á¨áá á¨ááĽá¨ááá ááᣠá ááá ááá˝ áá áá°áá áŤáá˘
ááľáłááť. ááĽáá°áá ááááśáš áááŚá˝ á°á áŤá á¨áááľ áá´áá˝ áĽááá áá á áĽáá á¨ááá ááłááá˝ ááľáĽ áá°áá áŤá ᣠáá и áśáŞáá. áá á ááĽá ááᣠáá áľ áĽá áááá á¨áľááą á ááľ á°áĽá áá áŤá áśáŞáá. áá´ áá á¨áĽááľ áĽá´áśá˝á ááááľ á áá áľ, á áá áá፠áá¤áą á˝á ááŁáá.
á ááľ áá´ á á ááľ ááá áá ááŁáá áá. áŤáá°áá ááá áĽááłá áĽá´áľ áŤáá°ááá°, áá´á ááŁáá áśáŞáá. áá´á á¨áá áśáŞáá á áá°ááá, ááá áá á áĽáá ááłá ááľáĽ ᣠáĽá á¨áĽá´áą áá°áľ áĽáľáŞá ááá áľá¨áľ ááá ááá áá°ááá áĽá á áááá ááľáĽ áŤááľ ááá áĽá´áśá˝ áá° á°ááłáłá ááááľ ááŁááá˘. áĽáá áá´á á°ááŁáŤá áŤá°á¨á áśáŞáá, áĽáąá áĽááłá áĽá´áľá á¨ááááľ, á¨ááŤá áááĽá¨ááá ááᣠá¨ááŤáááá áá. ááá áá, áá áá áá´ á¨áá°áá á áá¤áľ á¨ááľ ááĽá¨ááá á áá°áá.
áááłá ááá á¨ááááááá´á ááááťáᢠáśáŞáá,
`var obj = { toString() { return "200" }}`
áá´ áśáŞáá á áľááá á ááľ ááĽá¨ááá ááááłáᣠáĽá ááĽá¨ááá á¨ááĽá áá áľáá¨ááᣠá¨á°áŁá á ááĽá¨ááá áĽááááááĄ
`obj + 1 // '2001'`
`obj + 'a' // â200a'`
áá áĽáá°áá á¨áá áśáŞáá, áľááá áá´á ááĽáá ááááłá, áĽáá á˛á¨áá, á¨ááĽá á á¨áŤ áŤáá á¨ááłáĽ áľáŤ áá¨áááá áĽá á¨ááłáĽ áá¨áá áá¤áąá áááá.
`var obj = { toString() { return 200 }}`
`obj + 1 // '2001'`
á áá áááł, á ááĽá¨ááá áá°ááá á¨á áŤá, á¨ááĽá¨ááá ááááἠáá¨áááá, áĽá á¨á°áŁá á ááĽá¨ááá áĽááááá.
`obj + 'a' // â200a'`
áá áá᪠ááŤáľááŞááľ á°á áááá˝ áĽá ááĽá áľá á°áśá˝ ááááŤáľ áá.
áá´á áśáŞáá á¨áááŠá áá áłá áá á 1 á¨áá¨áá á°ááŁá ááá áá˝ááá˘
á¨áľááŞááą á ááááᣠá°ááááá ᨠ3 áá áĽáŠá á¨áá áĽá ᨠ4 áá áĽáŠá ááá˘
á¨áŤáľáľ (==) áá á˛ááłá°á áľááą á áĽáŤááłááą áá áá¨áááá áśáŞáá á¨áá áá¨áá á°ááŁá áá. á áá áá á¨áľ, á áĽáŤááłááą ááŁá áá˝á˝á, ááá áá¨ááŤá. áá ᨠcast áŤááá áá á áá á áá áá ááľáá¨áľ ááťáá (===)á˘
áá˝á˝á áŤá á áááľ ááá°áľ
ááľáłááť. á¨Cast áá˝á˝áá áłáŤáľááá á áá áá.
á¨á°ááłá°á á áááᎠáá áĽáá° Webhooks áá ááľáĽáľáĽ áľááŞááśá˝ á¨á áááľ ááá°áľ áá áááłá°á ááááá á°ááááŽá˝á á¨ááááą áĽá á áááŁáŁáá˝á áĽá áľá á°áśá˝á á¨ááŤáľá°áááą áĽá´áśá˝á á áľááľá ááá ááá¨áŤáá˘
Webhook áá˛áŤ
á 2019 áááŁá°á áĽá á 2020 ááááŞáŤ áá á¨áá˘ááľ áá á°áľ áĄáľá á¨áá˘ááľ áľáááľ áá á¨áááĄáľá Webhooks áĽá á¨áłáĽá á᪠áá á°áśá˝á á áááľ áĽá¨á°áŤ ááá˘
áááá á˛áŤáŤ Jira á áááááľ á´áľá á¨áá á áá Microsoft áĄáľáá˝ áŚááľáá áŚá˛á áá¤áľ áľáááľ Usážá¨á ááá á áááááą SINGL4 áľáááą á´áááŤá áááľ Zendesk
á ááá áá°
á áľá-áá°áľ
- á ááŤáľááŞááľ ááľáĽ á¨á áľá-áá°áľ áá°áľ áááŁáľ á áĽáááášá ááŤá áľááŞááśá˝ ááá°á á áľá˝áá ᣠáĽá á á áá áá á áá˘ááľ ááľáĽ áááááá áĽá´áľ ááááľ áĽá áá° áášá á¨á°áᨠáĽá´áľ áááἠáá˝ááá˘
- á áá˘ááľ ááľáĽ á áľá-áá°áľ á á፠áľááŞááľ áŽáľ áá°áá áŤá ᣠáá° áŁááľáŽáľ á˛á ááá á ááľ áá á áĽá´áľ áĽáá° áááŞáŤ áá° áááľáľ á°ááŁá ááá¨áŤáᢠáá áĽáá° ááĽá¨ááá (ááĽá¨ááá áááąáá á áá áĽá ááĽá ááá áá˝áá).
- áá¤áą á°ááŁá áľááá á áľááŞááą áá¨á¨áť áá áŤáľáááá ááááľ.
- á áŽáą ááľáĽ áĽá áááŽáá˝á áá áá ááťáá.
- ááĽáśá˝ á áľááá° ááá á°á¨á áĽáť áłááá á ááŽááŤá ááá°áĄ áá˝áá. á¨á áľá-áá°áą á°á¨á á¨áá°áá 10 áááŁááľ áŤá áĽá á¨10 á°á¨ááľ á¨áŠáŤ áá á°ááľá§áá˘
ááľáłááť. á¨10 á°á¨ááľ áá ááĽá፠áá á áŁá áĽá ááᣠááááŤáąá áááłá á áşáá˝ á¨ááá አá¨ááἠááĽáá˝á á 1 á°á¨ááľ ááľáĽ âá¨áŁáľâ á áá á áľá áá°áľ áááł áá°áĽá°áĽ áá˘ááľá ááŤááá¨á áá˝ááᢠáľááá ᣠáá á¨á፠áľááŞááľ áľááŞááśá˝á áááľáá¸á á áľá-áá°áľá ááá áá áĽá áłáł á¤ááááśá˝ á ááŁááľ (áąá ááĽáá˝) á áŠá áĽáá˛á°áŤ á ááá¨ááá˘.
áŽáľáá á á áľá-áá°áľ áá¨áŤ ááá áááááŤáá á áá áá áá¨ááἠáá˝ááᢠzabbix_js:
`zabbix_js -s *script-file -p *input-param* [-l log-level] [-t timeout]`
`zabbix_js -s script-file -i input-file [-l log-level] [-t timeout]`
`zabbix_js -h`
`zabbix_js -V`
á°ááŁáŤá á°ááŁáŤáľ
ááá 1
á¨á°á°áá ááĽá ááá á á áľá-áá°áľ áá°áŠá˘
áááłá á´ááşá¨áľ ááľáĽ ááá¨áá¸áľ á¨áááľ áá áá á ááŤáááľ á¨á´áá°áŠ áŤááá˘
á¨áá á ááľ á¨áááľ áá áá á á˛á᪠ááŤáááľ á¨áá°á áľáĽ áá áĽáááĽáŤááᢠá¨á፠á ááᣠááá á áá áá ááŤáááľá áá° á´ááşá¨áľ á¨áááá áá á¨ááἠááĽá (á¨á°á°á)á˘
á˝ááŽá˝:
- á¨ááἠáááá˝á ááŁááľ áĽá áááá áĽá´áśá˝ á áá¨á ááą ááľáĽ áá¨áá¸áľ á áľááá áá.
- á ááá ááľáĽ á¨áá°áá áĽá áĽá á áá á¨áááá ᨠ"ááá " á¨ááἠááĽá áĽá áá°á°áá á¨ááἠááĽá ááá°áśá˝ áá ááľáááľ á ááĽááľ. áŤáá áá፠ᣠá¨á°á°áá ááĽá áá°ááá°áá áááł áááľ ááá á¨áá°ááá áá ááľááľ áá˝áá ᣠáá á á¨ááľáľá áá¤áśá˝á á áľá°áááááľ áááŤá á˘
á ááą áááľá á¨á°áááá á¨áá°áť ááá°áśá˝ á ááŤá áá ááá°áśá˝á á áá°áá á¨á°á°áá áĽá áá¨ááá á¨á°áá áá áĽá á áá áááááá ááá¨ááἠ(á áĽá áááł á¨áááľ áá á á á˛á᪠ááŤáááľ)á˘
ááá áá áááłá áĽá ááĽá áŤáá¸áá ááłáŞáŤáá˝ áááá°á˝ á áĽááąá á¨á°á ááá áĽá áźáŠ á ᨠ30 á°á¨ááľ á ááľ áá áá¨áááá, Zabbix "hacks" á 29 á°á¨ááľ, áĽá á áá¨á¨áťá á°á¨ááľ ááá°á˝ áĽá ááľááľ ááááŤá. áá áá¨á áááĽáŤá áĽá á ááááá áááłáᢠáľááá , á áľááá á áľááá á¨áá áĽáť áá ááá°áśá˝á áá áá ááá¨áŤá.
á áá á˝áá ááľáĽáŁ áĽáŠá áááľá á˛á᪠ááŤáááľá áá° á˛á᪠á´ááşá¨áľ á¨áááá áŁáá ááľ ááľáá ááŤáľááŞááľ á áľá áá°áľ ááá˘
`return (value - 32) * 5 / 9;`
ááŁá áĽá ááá ááᣠá ááľááá á¨ááἠááĽáá˝á ááá á áĽá á áĽááą áá áłáŞá ááľááἠá áŤáľáááááľáᣠáĽá áĽáá˛áá á°áááá ááá°áśá˝á ááźáŽá˝ áá áá áá˝ááá˘
`return (parseInt(value) + parseInt("{$EXAMPLE.MACRO}"));`
ááá áá ᣠá áááłá áááł ááľáĽ á¨á°áá ááá á¨ááἠá áŤá áá¨á á áľááá á¨áá ᣠáááłá ᣠá áááŽá ááľáĽ á¨á°ááá¸á ááááá áá áá ᣠáá¤áą áááľ ááľáĽ áááŁáľ á áá áľá˘ áá áá° áááľ áá°áá. á ááĽá¨ááá áá°áá áááᣠáááľ áááśá˝ á ááá áá° á ááľ ááŁááŤáá˘
`return (value + "{$EXAMPLE.MACRO}");`
á¨ááłáĽ áľáŤá áá¤áľ áááááľ á¨á°áááľá á¨áĽá´áśá˝ ááááśá˝ áá° á¨ááĽá á áá¸áľ áááἠá áľááá áá. ááá á á°ááŁáŠá áá áá áá˝áá parseInt()á˘áá˛ááᣠá°ááŁá áŤáááŤáᢠparseFloat(), áĽáąá á áľááŽá˝ ááá á°ááŁáá áááĽáŤá ááĽáá˘áá˛áá ááá á áľááŽá˝ á¨ááááľá˘
á°ááŁá 2
á¨ááľáá áá¨ááą áá¨á¨áť áľá¨áľ á á°á¨ááśá˝ ááľáĽ áááá áŤááá˘
áááłá ááľ á áááááľ á "ááĽáŠá᪠12 12áĄ33áĄ56 2022 áá¤áá˛" á áá¸áľ á¨ááľáá áá¨ááľ á¨ááŤá áá áľá áá áá°áŁáá˘
á ECMAScript5 date.parse() ááá á ISO 8601 á áá¸áľ ááá áá (ááá-áá-á˛á˛á¤á˝á¤á˝áĄáááĄss.sssZ)ᢠááĽá¨ááá áá° áĽáą á MMM DD áááá á¤á˝á¤á˝áĄmmáĄss ZZ á áá¸áľ ááŁá á áľááá ááá˘
á˝áá: á¨áአáá áĽáá° ááĽá áłááá áĽáá° á˝áá áá á¨áááá¸á. á áá á áá¸áľ áŤáá ááἠá áąááłá á°ááŁáááľ á¨áááá˘
á¨áááľá ááłá:
-
á ááááŞáŤ á°á¨á á ááľ áĽá´áľ á¨áááľáľ á°áááá ááááťá (ááá áľááŞááľ á áá á á°á¨á á¨á°áá¨áአá¨á°ááááŽá˝ ááá፠áá)á˘
-
á ááááŞáŤá ááľáá ááľáĽ ááá á ááŤááľá ááľáĽ áĽááááá áá áĽá áá´áá á áá áá á¨áŚáłáá˝ áá áááŤáŠáľ á°áá á. áľááá ᣠáĽáŤááłááą á¨áľááľá á áŤáᣠá¨á áá 0 áááŽáŁ á¨áŚáł á ááľ áĽá á áá áŤáá á ááľ á¨áá ááĽá¨ ááá áá á¨ááááľá áľ áľááľá áĽáááááᢠáá¨ááá (0) - áá, áá¨ááá (1) - ááĽá, áá¨ááá (2) - áá áŤáá ááĽá¨ááá ááá° á¨á፠á áá áĽáŤááłááą á¨áá á áŤá á áľááľáŠ ááľáĽ áŁáá áá¨á á áá áá°á¨áľá áľ áá˝ááá˘
`var split = value.split(' '),`
- áĽáŤááłááą áá (á áá á á°á á°á¨á°á) á áľááľá (ᨠ0 áĽáľá¨ 11) áŤáá áŚáł á áá áá ááááłáᢠá¨á˝áá áĽá´áľá áá° á ááá áĽá´áľ áááá¨á á ááą áá° áá á˘áá´ááľ áá¨ááŤá (ááááŤáąá ááŤáśá˝ ᨠ1 ááᎠá¨á°áá አáá¸á)ᢠá áá áááł, á¨á ááą áá¨áá áá áŤáá á áááá˝ á á áá ááľáĽ ááá°áłá, ááááŤáąá á áá áá፠á ááľ ááĽá¨ááá ááĽá áłááá ááĽá áŤááá. áá¨á¨áť áá áĽá áĽáá°áááá ááŤá() - áááľ ááááá˝á áĽáť ááá°á áľááľáá á¨áá¨á¨áťá ááá¨áĄ (áá á áŁá áááľ á áá ááĽá áááŤáľ á áľááá áá)á˘
`MONTHS_LIST = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],`
`month_index = ('0' + (MONTHS_LIST.indexOf(split[0]) + 1)).slice(-2),`
- á á°áá˘á á á°á á°á¨á°á á á°ááá°á á¨ááĽá¨ááááá˝ áá¨áá á¨á°áááľ áĽá´áśá˝ á ISO á áá¸áľ ááĽá¨ááá áĽáááĽáŤáá.
`ISOdate = split[3] + '-' + month_index + '-' + split[1] + 'T' + split[2],`
á áá¤áą á áá¸áľ áŤáá áá¨á ᨠ1970 áĽáľá¨ á ááľ áá áľá¨áľ áŤáá á¨á´áŽááśá˝ ááĽá áá. á á°áá áá á áá¸áľ á á°áá°ááą áááłáá˝ ááľáĽ áá¨áá ááá áá áá˝á á¨áááťá áá ᣠááááŤáąá Zabbix á áááŽáá˝ áĽáť áĽáá˛á አááá áľáááłáᢠ{áá} и {áá}ááá áĽá á°ááąá áá°á áá ááš á áá á áá¸áľ á¨ááááľá˘
- á¨á፠á¨á ááá áá á á፠áľááŞááľ á áŠáááľ áłáááľ áá á°á ááááľ ááááľ áĽá á¨á°ááá á¨ááľáá áá¨ááľ ááĽá፠áá áááľ á¨ááľáá áá¨ááą áĽáľáŞáŤáá áľá¨áľ á¨ááá°á¨ááśá˝á ááĽá áááááľ áĽáá˝áááá˘
`now = Date.now();`
- á Zabbix ááľáĽ á°á¨ááśá˝ áááááľ á¨á°áá ááá áá á áşá áĽááŤáááá˘
`return parseInt((Date.parse(ISOdate) - now) / 1000);`
ááľá á´ ááľáĽáŁ á¨áááá á áááá˝ áááá˝ áľá˝ááá á¨áá¨á¨áťááá˝ ááľá áľ á áááááľ áá ááľáĽ á¨á°á¨ááśá˝ áĽááľ áá á¨ááááľ á¨á ááá˝ áľáĽáľáĽ áá¨á°ááᣠáááłá á áłáááłáľ ááľáĽá˘ áľááá ááľá á´á á¨ááľáá áá¨ááą á á ááľ áłáááľ ááľáĽ áĽáá°ááŤáá áŤáłáááá˘
ááľáłááť. áá á ááá áľáŠá¨áľ ááľáĄ parseInt() á°ááŁá ááľáĽ ááááľá¨ááá°á¨ááśá˝ áááá á¨áááŁáá ááááá ááĽá áá° á˘áá˛áá áááá¨áᢠáĽáá˛áá áá áá áá˝áá parseFloat() áĽá ááááá ááἠáŤá¨ááš.
ááá: hab.com