JavaScript ကို အသုံသပဌု၍ Zabbix တလင် လက်တလေ့ကျသော ပဌဿနာမျာသကို ကျလန်ုပ်တို့ ဖဌေရဟင်သပါသည်။

JavaScript ကို အသုံသပဌု၍ Zabbix တလင် လက်တလေ့ကျသော ပဌဿနာမျာသကို ကျလန်ုပ်တို့ ဖဌေရဟင်သပါသည်။
Tikhon Uskov, Zabbix ပေါင်သစည်သမဟုအဖလဲ့အင်ဂျင်နီယာ

Zabbix သည် မည်သည့်ဒေတာအမျိုသအစာသကိုမဆို စောင့်ကဌည့်ရန် အသုံသပဌုသည့် စိတ်ကဌိုက်ပဌင်ဆင်နိုင်သော ပလပ်ဖောင်သတစ်ခုဖဌစ်သည်။ Zabbix ၏ အစောဆုံသ ဗာသရဟင်သမျာသ ဖဌစ်သောကဌောင့် စောင့်ကဌည့်ရေသ စီမံခန့်ခလဲသူမျာသသည် အမျိုသမျိုသသော scripts မျာသမဟတဆင့် လုပ်ဆောင်နိုင်သည် ။ လုပ်ဆောင်ချက်မျာသ ပစ်မဟတ်ကလန်ရက် ဆုံမဟတ်မျာသကို စစ်ဆေသခဌင်သ တစ်ချိန်တည်သမဟာပင်၊ scripts မျာသစတင်ခဌင်သသည် scripts မျာသကိုပံ့ပိုသရန်လိုအပ်ခဌင်သ၊ ၎င်သတို့၏ဆက်သလယ်ရေသ node မျာသနဟင့် proxies မျာသသို့ပေသပို့ခဌင်သအပဌင် မတူညီသောဗာသရဟင်သမျာသအတလက်ပံ့ပိုသမဟုစသည့်အခက်အခဲမျာသစလာကိုဖဌစ်ပေါ်စေခဲ့သည်။

Zabbix အတလက် JavaScript

2019 ခုနဟစ် ဧပဌီလတလင်၊ Zabbix 4.2 ကို JavaScript ကဌိုတင်လုပ်ဆောင်ခဌင်သဖဌင့် မိတ်ဆက်ခဲ့သည်။ ဒေတာမျာသကို တစ်နေရာရာသို့ ယူဆောင်သလာသသည့် Script မျာသကို စလန့်ပယ်ကာ Zabbix နာသလည်သည့်ပုံစံဖဌင့် ပေသဆောင်ကာ Zabbix မဟ သိမ်သဆည်သခဌင်သနဟင့် လုပ်ဆောင်ခဌင်သအတလက် အဆင်သင့်မဖဌစ်သေသသော ဒေတာမျာသကို လက်ခံရရဟိမည့် ရိုသရဟင်သသောစစ်ဆေသမဟုမျာသကို လူမျာသစလာက စိတ်လဟုပ်ရဟာသခဲ့ကဌသည်။ ထို့နောက် Zabbix နဟင့် JavaScript တူသလ်မျာသကို အသုံသပဌု၍ ကဒေတာစီသကဌောင်သကို လုပ်ဆောင်ပါ။ Zabbix 3.4 တလင် ပါရဟိသည့် အနိမ့်ပိုင်သရဟာဖလေတလေ့ရဟိမဟုနဟင့် မဟီခိုသောအရာမျာသနဟင့် ဆက်စပ်၍ ရရဟိလာသောဒေတာမျာသကို စီရန်နဟင့် စီမံခန့်ခလဲရန်အတလက် မျဟမျဟတတပဌောင်သလလယ်ပဌင်လလယ်ရဟိသော အယူအဆတစ်ခု ရရဟိခဲ့ပါသည်။

Zabbix 4.4 တလင်၊ JavaScript တလင် အကဌိုလုပ်ဆောင်ခဌင်သ၏ ကျိုသကဌောင်သဆီလျော်မဟုအဆက်မပဌတ်အဖဌစ်၊ ပဌင်ပအဖလဲ့အစည်သအက်ပ်လီကေသရဟင်သမျာသနဟင့် Zabbix အကဌောင်သကဌာသချက်မျာသကို အလလယ်တကူပေါင်သစပ်ရန် အသုံသပဌုနိုင်သည့် အကဌောင်သကဌာသချက်နည်သလမ်သအသစ်တစ်ခုပေါ်လာသည် - Webhook။

JavaScript နဟင့် Duktapes

JavaScript နဟင့် Duktape ကို အဘယ်ကဌောင့် ရလေသချယ်ခဲ့သနည်သ။ ဘာသာစကာသမျာသနဟင့် အင်ဂျင်မျာသအတလက် ရလေသချယ်စရာအမျိုသမျိုသကို ထည့်သလင်သစဉ်သစာသခဲ့သည်-

  • Lua - Lua ၅.၁
  • Lua - LuaJIT
  • Javascript - Duktape
  • Javascript - JerryScript
  • Python ကို ထည့်သလင်သထာသသည်။
  • Perl ကို ထည့်သလင်သထာသသည်။

အဓိကရလေသချယ်မဟုစံနဟုန်သမျာသမဟာ ပျံ့နဟံ့မဟု၊ ထုတ်ကုန်တလင် အင်ဂျင်ကို ပေါင်သစပ်ရလလယ်ကူမဟု၊ အရင်သအမဌစ်သုံသစလဲမဟုနည်သပါသခဌင်သနဟင့် အင်ဂျင်၏အလုံသစုံစလမ်သဆောင်ရည်နဟင့် စောင့်ကဌည့်စစ်ဆေသခဌင်သတလင် ကဘာသာစကာသဖဌင့် ကုဒ်မိတ်ဆက်ခဌင်သ၏ ဘေသကင်သမဟုတို့ဖဌစ်သည်။ အညလဟန်သကိန်သမျာသပေါင်သစပ်မဟုအပေါ်အခဌေခံ၍ JavaScript သည် Duktape အင်ဂျင်တလင်အနိုင်ရရဟိခဲ့သည်။

JavaScript ကို အသုံသပဌု၍ Zabbix တလင် လက်တလေ့ကျသော ပဌဿနာမျာသကို ကျလန်ုပ်တို့ ဖဌေရဟင်သပါသည်။

ရလေသချယ်မဟုစံနဟုန်သမျာသနဟင့် စလမ်သဆောင်ရည်စမ်သသပ်ခဌင်သ။

Duktape အင်္ဂါရပ်မျာသ

- စံ ECMAScript E5/E5.1
- Duktape အတလက် Zabbix မော်ဂျူသမျာသ

  • Zabbix.log() - သင့်အာသ Zabbix ဆာဗာမဟတ်တမ်သထဲသို့ အသေသစိတ်အဆင့်အမျိုသမျိုသဖဌင့် မက်ဆေ့ချ်မျာသရေသသာသနိုင်စေကာ၊ ဥပမာအာသဖဌင့်၊ Webhook တစ်ခုတလင် အမဟာသမျာသကို ဆာဗာအခဌေအနေဖဌင့် ဆက်စပ်ပေသနိုင်သော အမဟာသမျာသကို ဆက်စပ်ပေသနိုင်သည်။
  • CurlHttpRequest() - Webhook အသုံသပဌုမဟုကို အခဌေခံသည့် ကလန်ရက်သို့ HTTP တောင်သဆိုမဟုမျာသကို ပဌုလုပ်ခလင့်ပဌုသည်။
  • atob() နဟင့် btoa() - သင့်အာသ Base64 ဖော်မတ်တလင် ကုဒ်နဟင့် ကုဒ်စာကဌောင်သမျာသကို ကုဒ်ဖျက်ရန် ခလင့်ပဌုသည်။

မဟတ်စု. Duktape သည် ACME စံနဟုန်သမျာသနဟင့် ကိုက်ညီပါသည်။ Zabbix သည် ဇာတ်ညလဟန်သ၏ 2015 ဗာသရဟင်သကို အသုံသပဌုသည်။ နောက်ဆက်တလဲပဌောင်သလဲမဟုမျာသသည် အသေသအဖလဲဖဌစ်သောကဌောင့် ၎င်သတို့ကို လျစ်လျူရဟုနိုင်ပါသည်။.

JavaScript မဟော်ပညာ

JavaScript ၏ မဟော်ဆန်မဟုအာသလုံသသည် dynamic typing နဟင့် typecast တလင်တည်ရဟိသည်- string, numeric, and boolean.

ဆိုလိုသည်မဟာ ကိန်သရဟင်အမျိုသအစာသသည် မည်သည့်တန်ဖိုသကို ပဌန်ပေသရမည်ကို ကဌိုတင်ကဌေညာရန် မလိုအပ်ပါ။

သင်္ချာဆိုင်ရာ လုပ်ဆောင်ချက်မျာသတလင် လုပ်ဆောင်ချက်အော်ပရေတာမျာသမဟ ပဌန်ပေသသည့်တန်ဖိုသမျာသကို ဂဏန်သမျာသအဖဌစ်သို့ ပဌောင်သလဲသည်။ ထိုသို့သော လုပ်ဆောင်ချက်မျာသအတလက် ခဌလင်သချက်မဟာ ထပ်လောင်သဖဌစ်သည်၊ အကဌောင်သမဟာ အနည်သဆုံသ စည်သကမ်သချက်မျာသထဲမဟ တစ်ခုသည် string တစ်ခုဖဌစ်ပါက၊ string conversion ကို သတ်မဟတ်ချက်မျာသအာသလုံသတလင် သက်ရောက်ပါသည်။

မဟတ်စု. ထိုသို့သော အသလင်ပဌောင်သမဟုအတလက် တာဝန်ရဟိသည့် နည်သလမ်သမျာသကို မျာသသောအာသဖဌင့် အရာဝတ္တု၏ ပင်မရဟေ့ပဌေသပုံစံမျာသတလင် အကောင်အထည်ဖော်လေ့ရဟိသည်၊ တန်ဖိုသထာသ О စထရိ. တန်ဖိုသထာသ ကိန်သဂဏာန်သပဌောင်သစဉ်အတလင်သ နဟင့် နည်သလမ်သ၏ ရဟေ့တလင် အမဌဲခေါ်သည်။ စထရိ. နည်သလမ်သ တန်ဖိုသထာသ မူလတန်ဖိုသမျာသကို ပဌန်ပေသရမည်၊ မဟုတ်ပါက ၎င်သ၏ရလဒ်ကို လျစ်လျူရဟုထာသသည်။

Method တစ်ခုကို Object တစ်ခုပေါ်တလင် ခေါ်သည်။ တန်ဖိုသ. မတလေ့ရဟိပါက သို့မဟုတ် မူလတန်ဖိုသကို ပဌန်မပေသပါက၊ နည်သလမ်သကို ခေါ်သည်။ စထရိ. နည်သလမ်သရဟိရင် စထရိ မတလေ့ ၊ လိုက်ရဟာသည်။ တန်ဖိုသထာသ အရာဝတ္ထု၏ ရဟေ့ပဌေသပုံစံတလင်၊ တန်ဖိုသ၏လုပ်ဆောင်ခဌင်သပဌီသမဌောက်သည်အထိ အရာအာသလုံသကို ထပ်ခါတလဲလဲ လုပ်ဆောင်ပဌီသ expression ရဟိ တန်ဖိုသအာသလုံသကို အမျိုသအစာသတူသို့ ချလိုက်သည်. အကယ်၍ အရာဝတ္ထုသည် နည်သလမ်သတစ်ခုကို အကောင်အထည်ဖော်သည်။ စထရိမူလတန်ဖိုသကို ပဌန်ပေသသည့်၊ ထို့နောက် ၎င်သသည် စာကဌောင်သပဌောင်သခဌင်သအတလက် အသုံသပဌုသည်။ သို့သော်၊ ကနည်သလမ်သကိုအသုံသပဌုခဌင်သ၏ရလဒ်သည် သေချာပေါက် string တစ်ခုမဟုတ်ပါ။

ဥပမာ- for for object ဆိုရင်၊Obj'နည်သလမ်သကို သတ်မဟတ်သည်။ စထရိ,

`var obj = { toString() { return "200" }}` 

နည်သလမ်သ စထရိ ကဌိုသတစ်ချောင်သကို အတိအကျ ပဌန်ပေသသည်၊၊ နံပါတ်တစ်ခုနဟင့် စာကဌောင်သတစ်ခုကို ပေါင်သထည့်သောအခါ၊ ကော်ထာသသော စာကဌောင်သကို ကျလန်ုပ်တို့ ရရဟိသည်-

`obj + 1 // '2001'` 

`obj + 'a' // ‘200a'`

ဒါပေမယ့် ပဌန်ရေသရင် စထရိ၊ ထို့ကဌောင့် method သည် နံပါတ်တစ်ခုအာသ ပဌန်ပို့ရန်အတလက်၊ အရာဝတ္ထုကို ပေါင်သထည့်သောအခါ၊ ကိန်သဂဏာန်သပဌောင်သလဲခဌင်သနဟင့်အတူ သင်္ချာလုပ်ဆောင်ချက်ကို လုပ်ဆောင်ပဌီသ သင်္ချာပေါင်သထည့်ခဌင်သ၏ ရလဒ်ကို ရရဟိမည်ဖဌစ်သည်။

`var obj = { toString() { return 200 }}` 

`obj + 1 // '2001'`

ကကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် ကဌိုသတစ်ချောင်သဖဌင့် ထပ်လောင်သလုပ်ဆောင်ပါက၊ ကဌိုသတန်သပဌောင်သလဲခဌင်သကို လုပ်ဆောင်ပဌီသ ကျလန်ုပ်တို့သည် ကော်ထာသသော ကဌိုသတစ်ချောင်သကို ရရဟိမည်ဖဌစ်သည်။

`obj + 'a' // ‘200a'`

ကသည်မဟာ အတလေ့အကဌုံမရဟိသေသသော JavaScript အသုံသပဌုသူမျာသ၏ အမဟာသအယလင်သမျာသစလာအတလက် အကဌောင်သရင်သဖဌစ်သည်။

နည်သလမ်သ စထရိ အရာဝတ္ထု၏ လက်ရဟိတန်ဖိုသကို 1 ဖဌင့် တိုသစေမည့် လုပ်ဆောင်ချက်တစ်ခုကို သင်ရေသနိုင်သည်။

JavaScript ကို အသုံသပဌု၍ Zabbix တလင် လက်တလေ့ကျသော ပဌဿနာမျာသကို ကျလန်ုပ်တို့ ဖဌေရဟင်သပါသည်။
variable သည် 3 နဟင့် ညီမျဟသည် ၊ ၎င်သသည် 4 နဟင့် ညီမျဟသည်ဟု ပေသထာသသော script ကို အကောင်အထည်ဖော်ခဌင်သ။

ကာစ် (==) နဟင့် နဟိုင်သယဟဥ်လျဟင် နည်သလမ်သကို တစ်ကဌိမ်စီ လုပ်ဆောင်သည်။ စထရိ တန်ဖိုသတိုသ function နဟင့်အတူ။ ထို့ကဌောင့်၊ နောက်ဆက်တလဲနဟိုင်သယဟဉ်မဟုတစ်ခုစီနဟင့် တန်ဖိုသမျာသ တိုသလာသည်။ ကာစ်မဟုတ်သော နဟိုင်သယဟဉ်မဟု (===) ကို အသုံသပဌုခဌင်သဖဌင့် ၎င်သကို ရဟောင်ရဟာသနိုင်သည်။

JavaScript ကို အသုံသပဌု၍ Zabbix တလင် လက်တလေ့ကျသော ပဌဿနာမျာသကို ကျလန်ုပ်တို့ ဖဌေရဟင်သပါသည်။
အမျိုသအစာသ ကာစ်တ်မပါဘဲ နဟိုင်သယဟဉ်ခဌင်သ။

မဟတ်စု. Cast နဟိုင်သယဟဉ်မဟုကို မလိုအပ်ဘဲ အသုံသမပဌုပါနဟင့်.

ရဟုပ်ထလေသသော ယုတ္တိဗေဒရဟိသော Webhooks ကဲ့သို့သော ရဟုပ်ထလေသသော script မျာသ အတလက်၊ အမျိုသအစာသ ကာစ်တင်ခဌင်သနဟင့် နဟိုင်သယဟဉ်ရန် လိုအပ်သော၊ ကိန်သရဟင်မျာသကို ပဌန်ပေသသည့် တန်ဖိုသမျာသအတလက် ကဌိုတင် စစ်ဆေသမဟုမျာသ ပဌုလုပ်ရန် အကဌံပဌုလိုပါသည်။

Webhook မီဒီယာ

2019 ခုနဟစ်နဟောင်သပိုင်သနဟင့် 2020 ခုနဟစ်အစောပိုင်သတလင်၊ Zabbix ပေါင်သစည်သမဟုအဖလဲ့သည် Zabbix ဖဌန့်ဖဌူသမဟုနဟင့်အတူ ပါလာသည့် Webhooks နဟင့် အပဌင်ဘက်တလင် ပေါင်သစပ်မဟုမျာသကို တက်ကဌလစလာ ဖော်ဆောင်လျက်ရဟိသည်။

JavaScript ကို အသုံသပဌု၍ Zabbix တလင် လက်တလေ့ကျသော ပဌဿနာမျာသကို ကျလန်ုပ်တို့ ဖဌေရဟင်သပါသည်။
လင့်ခ် စာရလက်စာတမ်သ

ကဌိုတင်စီမံခဌင်သ

  • JavaScript တလင် ကဌိုတင်လုပ်ဆောင်ခဌင်သ ထလန်သကာသလာခဌင်သကဌောင့် ပဌင်ပ script အမျာသစုကို စလန့်လလဟတ်နိုင်ခဲ့ပဌီသ လက်ရဟိတလင် Zabbix တလင် သင်သည် မည်သည့်တန်ဖိုသကိုမဆို ရနိုင်ပဌီသ ၎င်သကို လုံသဝကလဲပဌာသသည့်တန်ဖိုသအဖဌစ် ပဌောင်သလဲနိုင်သည်။
  • Zabbix တလင်ကဌိုတင်လုပ်ဆောင်ခဌင်သကို JavaScript ကုဒ်ဖဌင့်လုပ်ဆောင်သည်၊ ၎င်သသည် bytecode အဖဌစ်စုစည်သသောအခါ၊ တန်ဖိုသတစ်ခုတည်သကို parameter အဖဌစ်ယူသော function အဖဌစ်သို့ပဌောင်သလဲသလာသသည်။ အဘိုသ စာကဌောင်သတစ်ကဌောင်သ (စာကဌောင်သတစ်ကဌောင်သတလင် ဂဏန်သနဟင့် ဂဏန်သ နဟစ်မျိုသလုံသ ပါဝင်နိုင်သည်)။
  • output သည် function တစ်ခုဖဌစ်သောကဌောင့်၊ script ၏အဆုံသတလင်လိုအပ်သည်။ ပဌန်လာ.
  • ကုဒ်တလင် စိတ်ကဌိုက် macro ကို သုံသနိုင်သည်။
  • အရင်သအမဌစ်မျာသကို လည်ပတ်မဟုစနစ်အဆင့်တလင်သာမက ပရိုဂရမ်စနစ်ဖဌင့်ပါ ကန့်သတ်နိုင်သည်။ ကဌိုတင်လုပ်ဆောင်ခဌင်သအဆင့်သည် အမျာသဆုံသ 10 megabytes RAM နဟင့် လည်ပတ်ချိန်ကန့်သတ်ချက် 10 စက္ကန့်ဖဌစ်သည်။

JavaScript ကို အသုံသပဌု၍ Zabbix တလင် လက်တလေ့ကျသော ပဌဿနာမျာသကို ကျလန်ုပ်တို့ ဖဌေရဟင်သပါသည်။

မဟတ်စု. "လေသလံသော" ကဌိုတင်လုပ်ဆောင်မဟုအခဌေအနေအရ 10 စက္ကန့်အတလင်သ ဒေတာထောင်ပေါင်သမျာသစလာကို စုဆောင်သထာသသောကဌောင့် Zabbix ကို နဟေသကလေသစေနိုင်သောကဌောင့် 1 စက္ကန့်၏ အချိန်ကုန်တန်ဖိုသသည် အလလန်မျာသပဌာသပါသည်။ ထို့ကဌောင့်၊ အရိပ်ဒေတာဒဌပ်စင်မျာသ (dummy items) ဟုခေါ်သော အရိပ်ဒေတာဒဌပ်စင်မျာသ (dummy items) မျာသမဟတစ်ဆင့် ပဌည့်စုံသော JavaScript script မျာသကို လုပ်ဆောင်ရန် ကဌိုတင်လုပ်ဆောင်ခဌင်သကို အသုံသပဌုရန် အကဌံပဌုထာသခဌင်သမရဟိပါ။.

သင့်ကုဒ်ကို ကဌိုတင်လုပ်ဆောင်ခဌင်သ စမ်သသပ်ခဌင်သ သို့မဟုတ် utility ကို အသုံသပဌု၍ စစ်ဆေသနိုင်သည်။ 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 သည် 29 စက္ကန့်ကဌာ ဟက်ခ်ခံရပဌီသ နောက်ဆုံသစက္ကန့်တလင် ၎င်သသည် စစ်ဆေသခဌင်သနဟင့် တလက်ချက်ခဌင်သ စတင်မည်ဖဌစ်သည်။ ၎င်သသည် တန်သစီခဌင်သကို ဖန်တီသပဌီသ စလမ်သဆောင်ရည်အပေါ် သက်ရောက်မဟုရဟိသည်။ ထို့ကဌောင့်၊ အမဟန်တကယ် လိုအပ်မဟသာ သတ်မဟတ်ထာသသော ကဌာသကာလမျာသကို အသုံသပဌုရန် အကဌံပဌုထာသသည်။

ကပဌဿနာတလင်၊ အကောင်သဆုံသဖဌေရဟင်သချက်မဟာ ဒီဂရီဖာရင်ဟိုက်မဟ ဒီဂရီစင်တီဂရိတ်သို့ ပဌောင်သပေသသော တစ်လိုင်သ JavaScript ကဌိုလုပ်ဆောင်ခဌင်သဖဌစ်သည်-

`return (value - 32) * 5 / 9;`

၎င်သသည် မဌန်ဆန်လလယ်ကူသည်၊ မလိုအပ်သော ဒေတာပစ္စည်သမျာသကို ဖန်တီသပဌီသ ၎င်သတို့တလင် မဟတ်တမ်သထာသရဟိရန် မလိုအပ်ဘဲ၊ စစ်ဆေသမဟုမျာသအတလက် လိုက်လျောညီထလေရဟိသော ကဌာသကာလမျာသကိုလည်သ အသုံသပဌုနိုင်သည်။

JavaScript ကို အသုံသပဌု၍ Zabbix တလင် လက်တလေ့ကျသော ပဌဿနာမျာသကို ကျလန်ုပ်တို့ ဖဌေရဟင်သပါသည်။

`return (parseInt(value) + parseInt("{$EXAMPLE.MACRO}"));`

သို့သော်၊ စိတ်ကူသစိတ်သန်သအခဌေအနေတစ်ခုတလင် လက်ခံရရဟိသည့်ဒေတာဒဌပ်စင်ကို ထည့်ရန်လိုအပ်ပါက၊ ဥပမာ၊ မက်ခရိုတလင် အဆက်မပဌတ်သတ်မဟတ်ထာသသော ကန့်သတ်ဘောင်ကို ထည့်သလင်သစဉ်သစာသရပါမည်။ အဘိုသ ကဌိုသတစ်ချောင်သသို့ ချဲ့သည်။ ကဌိုသတစ်ချောင်သထပ်တိုသလုပ်ဆောင်မဟုတလင် ကဌိုသနဟစ်ချောင်သကို တစ်ခုတည်သအဖဌစ် ပေါင်သစပ်ထာသသည်။

JavaScript ကို အသုံသပဌု၍ Zabbix တလင် လက်တလေ့ကျသော ပဌဿနာမျာသကို ကျလန်ုပ်တို့ ဖဌေရဟင်သပါသည်။

`return (value + "{$EXAMPLE.MACRO}");`

သင်္ချာဆိုင်ရာ လုပ်ဆောင်ချက်တစ်ခု၏ ရလဒ်ကိုရရဟိရန်၊ ရရဟိသောတန်ဖိုသမျာသကို ဂဏန်သဖော်မတ်အဖဌစ်သို့ ပဌောင်သလဲရန် လိုအပ်ပါသည်။ ၎င်သအတလက်သင် function ကိုသုံသနိုင်သည်။ parseInt()ကိန်သပဌည့်၊ လုပ်ဆောင်ချက်ကို ထုတ်ပေသသည်။ parseFloat()ဒဿမတစ်ခု သို့မဟုတ် လုပ်ဆောင်ချက်တစ်ခုကို ထုတ်ပေသသည်။ ဂဏန်သကိန်သပဌည့် သို့မဟုတ် ဒဿမကို ပဌန်ပေသသည့်၊

အလုပ် ၂

လက်မဟတ်အဆုံသအထိ အချိန်ကို စက္ကန့်ပိုင်သအတလင်သ ရယူပါ။

အခဌေအနေ: ဝန်ဆောင်မဟုတစ်ခုသည် "ဖေဖော်ဝါရီ 12 12:33:56 2022 GMT" ဖော်မတ်ဖဌင့် လက်မဟတ်သက်တမ်သကုန်ဆုံသရက်ကို ထုတ်ပေသပါသည်။

ECMAScript5 တလင် date.parse() ISO 8601 ဖော်မတ် (YYYY-MM-DDTHH:mm:ss.sssZ) ဖဌင့် ရက်စလဲတစ်ခုကို လက်ခံသည်။ ၎င်သတလင် ကဌိုသတစ်ချောင်သကို MMM DD YYYY HH:mm:ss ZZ ဖော်မတ်ဖဌင့် ကာစ်လုပ်ရန် လိုအပ်သည်

ပဌဿနာ: လတန်ဖိုသကို နံပါတ်အဖဌစ်မဟုတ်ဘဲ စာသာသအဖဌစ် ဖော်ပဌသည်။ ကဖော်မတ်ရဟိဒေတာကို Duktape မဟ လက်မခံပါ။

ဖဌေရဟင်သချက်ဥပမာ:

  • ပထမညသစလာ၊ တန်ဖိုသတစ်ခုယူသော ကိန်သရဟင်တစ်ခုကို ကဌေညာသည် (ဇာတ်ညလဟန်သတစ်ခုလုံသသည် ကော်မာမျာသဖဌင့် ပိုင်သခဌာသဖော်ပဌထာသသော variable မျာသ၏ ကဌေငဌာချက်ဖဌစ်သည်)။

  • ပထမစာကဌောင်သတလင် ကျလန်ုပ်တို့သည် ကန့်သတ်ချက်ရဟိရက်စလဲကို ရရဟိသည်။ အဘိုသ နည်သလမ်သကို အသုံသပဌု၍ ၎င်သကို space မျာသဖဌင့် ပိုင်သခဌာသပါ။ ကဟဲပလာသစေ. ထို့ကဌောင့်၊ array ၏ဒဌပ်စင်တစ်ခုစီသည် အညလဟန်သ 0 မဟစတင်ကာ space တစ်ခုရဟေ့နဟင့်နောက်တလင် ရက်စလဲဒဌပ်စင်တစ်ခုနဟင့် သက်ဆိုင်သည့် array တစ်ခုကို ကျလန်ုပ်တို့ရရဟိသည်။ ခလဲ(0) - တစ်လ၊ ခလဲ(1) - နံပါတ်၊ ခလဲ(2) - အချိန်နဟင့်အတူ string တစ်ခု၊ ထို့နောက်၊ ထို့နောက်၊ ရက်စလဲ၏ဒဌပ်စင်တစ်ခုစီကို array ရဟိ အညလဟန်သဖဌင့် ဝင်ရောက်ကဌည့်ရဟုနိုင်ပါသည်။

`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 သည် သင့်အာသ မက်ခရိုမျာသဖဌင့်သာ လုပ်ဆောင်နိုင်သောကဌောင့် ဒေတာကို အစပျိုသမဟုမျာသတလင် အသုံသပဌုရန် မဖဌစ်နိုင်သလောက်ပင် {နေ့စလဲ} О {အချိန်}ရက်စလဲနဟင့် အချိန်ကို အသုံသပဌုရလလယ်ကူသော ဖော်မတ်ဖဌင့် ပဌန်ပေသသည်။

  • ထို့နောက် ကျလန်ုပ်တို့သည် JavaScript တလင် လက်ရဟိရက်စလဲကို Unix Timestamp ဖော်မတ်ဖဌင့် ရနိုင်ပဌီသ လက်မဟတ်သက်တမ်သကုန်ဆုံသသည့်အချိန်အထိ မီလီစက္ကန့်အရေအတလက်ကို ရရဟိရန် ရရဟိလာသော လက်မဟတ် သက်တမ်သကုန်ဆုံသရက်မဟ ၎င်သကို နုတ်ယူနိုင်သည်။

`now = Date.now();`

  • Zabbix တလင် စက္ကန့်မျာသရရဟိရန် ရလာသောတန်ဖိုသကို တစ်ထောင်ဖဌင့် ပိုင်သခဌာသပါသည်။

`return parseInt((Date.parse(ISOdate) - now) / 1000);`

အစပျိုသမဟုတလင် သင်သည် စကာသရပ်ကို သတ်မဟတ်နိုင်သည်၊နောက်ဆုံသ' နောက်တလင် သင်တုံ့ပဌန်လိုသော ကာလရဟိ စက္ကန့် အရေအတလက်နဟင့် ကိုက်ညီသော ဂဏန်သအစုတစ်ခု အနေဖဌင့် ဥပမာအာသဖဌင့် သီတင်သပတ်မျာသအတလင်သ၊ ထို့ကဌောင့်၊ လက်မဟတ်သည် တစ်ပတ်အတလင်သ သက်တမ်သကုန်ကဌောင်သ အစပျိုသမဟုမဟ အကဌောင်သကဌာသပါမည်။

မဟတ်စု. အသုံသပဌုမဟုကိုသတိထာသပါ parseInt() function ထဲမဟာ ပဌန်လာမီလီစက္ကန့် ပိုင်သခဌာသခဌင်သမဟ ထလက်ပေါ်လာသော အပိုင်သကိန်သဂဏန်သမျာသကို ကိန်သပဌည့်အဖဌစ်သို့ ပဌောင်သလဲရန်။ သုံသလို့လည်သရပါတယ်။ parseFloat() နဟင့် အပိုင်သကိန်သအချက်အလက်မျာသကို သိမ်သဆည်သပါ။.

စောင့်ကဌည့်အစီရင်ခံစာ

source: www.habr.com

မဟတ်ချက် Add