Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

အားလုံးမင်္ဂလာပါ! လွန်ခဲ့သောလအနည်းငယ်က ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့ဟုခေါ်သော kubernetes ကို စောင့်ကြည့်ရန်အတွက် Grafana ပလပ်အင်ကို ထုတ်လုပ်ရန်အတွက် ကျွန်ုပ်တို့၏ open-source ပရောဂျက်အသစ်ကို စတင်ခဲ့သည်။ DevOpsProdigy KubeGraf. ပလပ်အင်အရင်းအမြစ်ကုဒ်ကို တွင်ရနိုင်သည်။ GitHub ရှိ အများသူငှာ သိုလှောင်မှု. ဤဆောင်းပါးတွင် ကျွန်ုပ်တို့သည် ပလပ်အင်ကို ဖန်တီးပုံ၊ ကျွန်ုပ်တို့အသုံးပြုခဲ့သည့် ကိရိယာများနှင့် ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အတွင်း ကြုံတွေ့ခဲ့ရသည့် ချို့ယွင်းချက်များအကြောင်း သင့်အား မျှဝေလိုပါသည်။ သွားကြရအောင်!

အပိုင်း 0 - နိဒါန်း- ဤအချက်ကို ကျွန်ုပ်တို့ မည်သို့ရောက်ရှိခဲ့သနည်း။

Grafan အတွက်ကျွန်ုပ်တို့၏ကိုယ်ပိုင် plugin ရေးရန်စိတ်ကူးသည်ကျွန်ုပ်တို့ထံမတော်တဆရောက်ရှိခဲ့သည်။ ကျွန်ုပ်တို့၏ကုမ္ပဏီသည် ရှုပ်ထွေးမှုအဆင့်အမျိုးမျိုးရှိသည့် ဝဘ်ပရောဂျက်များကို စောင့်ကြည့်နေသည်မှာ 10 နှစ်ကျော်ပြီဖြစ်သည်။ ဤကာလအတွင်း၊ ကျွန်ုပ်တို့သည် များပြားလှသော ကျွမ်းကျင်မှု၊ စိတ်ဝင်စားစရာကောင်းသည့် အခြေအနေများနှင့် စောင့်ကြည့်ရေးစနစ်များကို အသုံးပြုရာတွင် အတွေ့အကြုံများစွာကို စုဆောင်းထားသည်။ တစ်ချိန်ချိန်၌ ကျွန်ုပ်တို့သည် မိမိကိုယ်ကို မေးခဲ့သည်- "သူတို့က "သတ်မှတ်ပြီး မေ့ပစ်လိုက်ပါ" ဟုပြောသည့်အတိုင်း Kubernetes ကို စောင့်ကြည့်ရန် မှော်ကိရိယာတစ်ခု ရှိသလား။" ။ Prometheus + Grafana ပေါင်းစပ်။ ဤ stack အတွက် အဆင်သင့်လုပ်ထားသော ဖြေရှင်းနည်းများအနေနှင့်၊ ကိရိယာအမျိုးအစားများစွာ အစုံလိုက်ရှိသည်- prometheus-operator၊ kubernetes-mixin dashboards အစုံ၊ grafana-kubernetes-app။

grafana-kubernetes-app plugin သည် ကျွန်ုပ်တို့အတွက် စိတ်ဝင်စားစရာအကောင်းဆုံးရွေးချယ်မှုဖြစ်ပုံရသည်၊ သို့သော် ၎င်းကို တစ်နှစ်ကျော်ကြာအောင် ပံ့ပိုးမပေးခဲ့သည့်အပြင် node-exporter နှင့် kube-state-metrics ဗားရှင်းအသစ်များနှင့်လည်း အလုပ်မဖြစ်နိုင်ပါ။ တစ်ချိန်ချိန်တွင် ကျွန်ုပ်တို့ဆုံးဖြတ်ခဲ့သည်- "ကျွန်ုပ်တို့၏ကိုယ်ပိုင်ဆုံးဖြတ်ချက်ကို မချသင့်ဘူးလား"

ကျွန်ုပ်တို့၏ plugin တွင် မည်သည့်စိတ်ကူးများကို အကောင်အထည်ဖော်ရန် ဆုံးဖြတ်ခဲ့သည်-

  • “အက်ပ်လီကေးရှင်းမြေပုံ” ကို ပုံဖော်ခြင်း- အမည်နေရာများ၊ ဖြန့်ကျက်မှုများဖြင့် အုပ်စုဖွဲ့ထားသော အစုအဝေးရှိ အက်ပ်လီကေးရှင်းများ၏ အဆင်ပြေသောတင်ပြမှု၊
  • "ဖြန့်ကျက်ခြင်း - ဝန်ဆောင်မှု (+ ဆိပ်ကမ်းများ)" ကဲ့သို့သော ချိတ်ဆက်မှုများကို ပုံဖော်ခြင်း။
  • cluster node များတစ်လျှောက် အစုလိုက်အပလီကေးရှင်းများ ဖြန့်ကျက်ခြင်းကို မြင်ယောင်ခြင်း။
  • အရင်းအမြစ်များစွာမှ မက်ထရစ်များနှင့် အချက်အလက်များကို စုဆောင်းခြင်း- Prometheus နှင့် k8s api ဆာဗာ။
  • အခြေခံအဆောက်အဦအပိုင်း (CPU အချိန်၊ မန်မိုရီ၊ ဒစ်ခ်စနစ်ခွဲ၊ ကွန်ရက်) နှင့် အပလီကေးရှင်း ယုတ္တိဗေဒ- ကျန်းမာရေး အခြေအနေ ပေါ့ဒ်များ၊ ရရှိနိုင်သော ပုံစံတူ အရေအတွက်၊ အသက်ရှင်ခြင်း/အဆင်သင့် စစ်ဆေးမှုများ ဖြတ်သန်းခြင်းဆိုင်ရာ အချက်အလက်များ။

အပိုင်း 1- "Grafana ပလပ်အင်" ဆိုတာ ဘာလဲ။

နည်းပညာပိုင်းဆိုင်ရာအမြင်အရ Grafana အတွက် plugin သည် Grafana data directory တွင်သိမ်းဆည်းထားသည့် angular controller တစ်ခုဖြစ်သည်။/var/grafana/plugins/ /dist/module.js) နှင့် SystemJS module တစ်ခုအဖြစ် တင်နိုင်သည်။ ထို့အပြင် ဤလမ်းညွှန်တွင် သင့်ပလပ်အင်နှင့်ပတ်သက်သည့် မက်တာအချက်အလက်အားလုံးပါဝင်သော plugin.json ဖိုင်တစ်ခုရှိသင့်သည်- အမည်၊ ဗားရှင်း၊ ပလပ်အင်အမျိုးအစား၊ သိုလှောင်မှု/ဆိုက်/လိုင်စင်၊ မှီခိုမှုစသည်ဖြင့် ချိတ်ဆက်မှုများ ရှိသင့်သည်။

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း
module.ts

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း
plugin.json

ဖန်သားပြင်တွင် သင်တွေ့မြင်ရသည့်အတိုင်း၊ ကျွန်ုပ်တို့သည် plugin.type = အက်ပ်ကို သတ်မှတ်ထားသည်။ Grafana အတွက် ပလပ်အင်များသည် အမျိုးအစားသုံးမျိုးရှိနိုင်သောကြောင့်ဖြစ်သည်။

panel က- အသုံးအများဆုံး ပလပ်အင် အမျိုးအစား - ၎င်းသည် အမျိုးမျိုးသော ဒက်ရှ်ဘုတ်များ တည်ဆောက်ရာတွင် အသုံးပြုသည့် မည်သည့် မက်ထရစ်များကိုမဆို မြင်သာစေရန် အကန့်တစ်ခုဖြစ်သည်။
ဒေတာအရင်းအမြစ်: အချို့သောဒေတာအရင်းအမြစ်သို့ ပလပ်အင်ချိတ်ဆက်ကိရိယာ (ဥပမာ၊ Prometheus-datasource၊ ClickHouse-datasource၊ ElasticSearch-datasource)။
app ကို- Grafana တွင် သင့်ကိုယ်ပိုင် ရှေ့တန်းအပလီကေးရှင်းကို တည်ဆောက်ရန်၊ သင့်ကိုယ်ပိုင် html စာမျက်နှာများကို ဖန်တီးရန်နှင့် ဒေတာအမျိုးမျိုးကို မြင်သာစေရန် ဒေတာအရင်းအမြစ်ကို ကိုယ်တိုင်ဝင်ရောက်ကြည့်ရှုခွင့်ပေးသည့် ပလပ်အင်တစ်ခု။ ထို့အပြင်၊ အခြားအမျိုးအစားများ (ဒေတာအရင်းအမြစ်၊ အကန့်) နှင့် အမျိုးမျိုးသော ဒက်ရှ်ဘုတ်များကို မှီခိုမှုအဖြစ် အသုံးပြုနိုင်သည်။

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း
type=app ဖြင့် ဥပမာ ပလပ်အင် မှီခိုမှု.

JavaScript နှင့် TypeScript နှစ်မျိုးလုံးကို ပရိုဂရမ်းမင်းဘာသာစကားအဖြစ် သင်အသုံးပြုနိုင်သည် (ကျွန်ုပ်တို့ရွေးချယ်ထားသည်)။ သင်တတ်နိုင်သော မည်သည့်အမျိုးအစားမဆို hello-world plugins အတွက် ပြင်ဆင်မှုများ link ကိုရှာပါ။: ဤသိမ်းဆည်းမှုတွင် ကြိုတင်ထည့်သွင်းပြီး ပြင်ဆင်ထားသော တည်ဆောက်သူများနှင့်အတူ (React တွင် ပလပ်အင်တစ်ခု၏ စမ်းသပ်ဥပမာတစ်ခုပင် ရှိသည်) အများအပြားပါဝင်ပါသည်။

အပိုင်း 2- ဒေသတွင်းပတ်ဝန်းကျင်ကို ပြင်ဆင်ခြင်း။

ပလပ်အင်ကို လုပ်ဆောင်ရန်၊ ကြိုတင်ထည့်သွင်းထားသော ကိရိယာအားလုံးပါရှိသော kubernetes အစုအဝေးတစ်ခု လိုအပ်ပါသည်- prometheus၊ node-exporter၊ kube-state-metrics၊ grafana။ ပတ်ဝန်းကျင်ကို လျင်မြန်စွာ၊ လွယ်ကူစွာနှင့် သဘာဝအတိုင်း တည်ဆောက်ထားသင့်ပြီး ပြန်လည်စတင်ရန် သေချာစေရန်၊ Grafana ဒေတာလမ်းညွှန်ကို developer ၏စက်မှ တိုက်ရိုက်တပ်ဆင်သင့်သည်။

ကျွန်တော်တို့ရဲ့အမြင်အရတော့ Kubernetes နဲ့ ပြည်တွင်းမှာ အလုပ်လုပ်ဖို့ အဆင်ပြေဆုံးနည်းလမ်းက မီနီကူဘီ. နောက်တစ်ဆင့်မှာ Prometheus-operator ကို အသုံးပြု၍ Prometheus + Grafana ပေါင်းစပ်မှုကို ထည့်သွင်းရန်ဖြစ်သည်။ IN ဤဆောင်ပါး minikube တွင် prometheus-operator တပ်ဆင်ခြင်းလုပ်ငန်းစဉ်ကို အသေးစိတ်ဖော်ပြထားသည်။ စွဲမြဲမှုကိုဖွင့်ရန်၊ သင်သည် သတ်မှတ်ချက်ကို သတ်မှတ်ရပါမည်။ persistence: အမှန် ဇယားများ/grafana/values.yaml ဖိုင်တွင်၊ သင့်ကိုယ်ပိုင် PV နှင့် PVC တို့ကို ပေါင်းထည့်ကာ persistence.existingClaim ကန့်သတ်ဘောင်တွင် ၎င်းတို့ကို သတ်မှတ်ပါ။

ကျွန်ုပ်တို့၏ နောက်ဆုံး minikube လွှင့်တင်ခြင်း script သည် ဤကဲ့သို့ဖြစ်သည်-

minikube start --kubernetes-version=v1.13.4 --memory=4096 --bootstrapper=kubeadm --extra-config=scheduler.address=0.0.0.0 --extra-config=controller-manager.address=0.0.0.0
minikube mount 
/home/sergeisporyshev/Projects/Grafana:/var/grafana --gid=472 --uid=472 --9p-version=9p2000.L

အပိုင်း 3- အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှု

အရာဝတ္ထုပုံစံ

ပလပ်အင်ကို အကောင်အထည်ဖော်ရန်အတွက် ပြင်ဆင်မှုတွင်၊ ကျွန်ုပ်တို့နှင့်အတူ လုပ်ဆောင်မည့် အခြေခံ Kubernetes entities အားလုံးကို TypeScript အတန်းများ- pod၊ deployment၊ daemonset၊ statefulset၊ job၊ cronjob၊ service၊ node၊ namespace တို့ကို ဖော်ပြရန် ဆုံးဖြတ်ခဲ့သည်။ ဤအတန်းတစ်ခုစီသည် constructor၊ destructor၊ မြင်နိုင်စွမ်းကို မွမ်းမံခြင်းနှင့် ကူးပြောင်းခြင်းအတွက် နည်းလမ်းများကို ဖော်ပြသည့် ဘုံ BaseModel အတန်းမှ အမွေဆက်ခံပါသည်။ အတန်းတစ်ခုစီသည် အခြားအရာများနှင့် အသိုက်အမြုံရှိသော ဆက်ဆံရေးများကို ဖော်ပြသည်၊ ဥပမာ၊ အမျိုးအစားဖြန့်ကျက်မှုတစ်ခုအတွက် pods စာရင်းတစ်ခု။

import {Pod} from "./pod";
import {Service} from "./service";
import {BaseModel} from './traits/baseModel';

export class Deployment extends BaseModel{
   pods: Array<Pod>;
   services: Array<Service>;

   constructor(data: any){
       super(data);
       this.pods = [];
       this.services = [];
   }
}

getters နှင့် setters များ၏အကူအညီဖြင့်၊ ကျွန်ုပ်တို့သည် အဆင်ပြေပြေဖတ်နိုင်သောပုံစံဖြင့် ကျွန်ုပ်တို့လိုအပ်သော entity metrics ကိုပြသနိုင်သည် သို့မဟုတ် သတ်မှတ်နိုင်ပါသည်။ ဥပမာအားဖြင့်၊ ခွဲဝေသတ်မှတ်နိုင်သော cpu node များ၏ ဖော်မက်လုပ်ထားသည့် အထွက်-

get cpuAllocatableFormatted(){
   let cpu = this.data.status.allocatable.cpu;
   if(cpu.indexOf('m') > -1){
       cpu = parseInt(cpu)/1000;
   }
   return cpu;
}

စာမျက်နှာများ

ကျွန်ုပ်တို့၏ ပလပ်အင်စာမျက်နှာများအားလုံး၏စာရင်းကို မှီခိုမှုကဏ္ဍတွင် ကျွန်ုပ်တို့၏ pluing.json တွင် ကနဦးဖော်ပြထားသည်-

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

စာမျက်နှာတစ်ခုစီအတွက် ပိတ်ဆို့ခြင်းတွင် ကျွန်ုပ်တို့သည် PAGE NAME အား ညွှန်ပြရပါမည် (ထို့နောက် ၎င်းသည် ဤစာမျက်နှာကို ဝင်ရောက်အသုံးပြုနိုင်မည့် ပက်ကျိအဖြစ်သို့ ပြောင်းလဲသွားလိမ့်မည်)။ ဤစာမျက်နှာ၏လုပ်ဆောင်ချက်အတွက် တာဝန်ရှိသော အစိတ်အပိုင်းအမည် (အစိတ်အပိုင်းများစာရင်းကို module.ts သို့ တင်ပို့သည်); ဤစာမျက်နှာနှင့် လုပ်ဆောင်နိုင်သည့် အသုံးပြုသူအခန်းကဏ္ဍကို ညွှန်ပြပြီး ဘေးဘားအတွက် လမ်းညွှန်ချက်ဆက်တင်များ။

စာမျက်နှာ၏လုပ်ဆောင်ချက်အတွက် တာဝန်ရှိသည့် အစိတ်အပိုင်းတွင်၊ ကျွန်ုပ်တို့သည် markup ဖြင့် html ဖိုင်ဆီသို့ လမ်းကြောင်းကို ဖြတ်သန်းပြီး templateUrl ကို သတ်မှတ်ရပါမည်။ ထိန်းချုပ်ကိရိယာအတွင်းတွင် မှီခိုမှုထိုးသွင်းခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် အရေးကြီးသော angular ဝန်ဆောင်မှု 2 ခုအထိ ရယူအသုံးပြုနိုင်သည်-

  • backendSrv - Grafana API ဆာဗာနှင့် အပြန်အလှန် ဆက်သွယ်ပေးသည့် ဝန်ဆောင်မှုတစ်ခု။
  • datasourceSrv - သင့် Grafana တွင် ထည့်သွင်းထားသည့် ဒေတာအရင်းအမြစ်များအားလုံးနှင့် ဒေသဆိုင်ရာ အပြန်အလှန်ဆက်သွယ်မှုကို ပံ့ပိုးပေးသည့် ဝန်ဆောင်မှုတစ်ခု (ဥပမာ၊ .getAll() နည်းလမ်း - ထည့်သွင်းထားသည့် ဒေတာအရင်းအမြစ်များစာရင်းကို ပြန်ပေးသည်; .get( ) - တိကျသောဒေတာရင်းမြစ်တစ်ခု၏ instance object တစ်ခုကို ပြန်ပေးသည်။

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

အပိုင်း 4- ဒေတာအရင်းအမြစ်

Grafana ၏အမြင်အရ၊ datasource သည် အခြားသော plugin အားလုံးနှင့် အတိအကျတူညီပါသည်- ၎င်း၏ကိုယ်ပိုင် entry point module.js ၊ meta information plugin.json ပါသောဖိုင်တစ်ခုရှိသည်။ အမျိုးအစား = အက်ပ်ဖြင့် ပလပ်အင်တစ်ခုကို တီထွင်သောအခါတွင်၊ ကျွန်ုပ်တို့သည် ပလပ်အင်လမ်းညွှန် (dist/datasource/*) တွင် တိုက်ရိုက်သိမ်းဆည်းနိုင်သော သို့မဟုတ် မှီခိုမှုအဖြစ် ထည့်သွင်းနိုင်သည့် ရှိပြီးသားဒေတာအရင်းအမြစ်များ (ဥပမာ၊ prometheus-datasource) နှင့် ကျွန်ုပ်တို့၏ကိုယ်ပိုင်နှစ်ခုလုံးနှင့် အပြန်အလှန်အကျိုးသက်ရောက်နိုင်သည်။ ကျွန်ုပ်တို့၏ကိစ္စတွင်၊ ဒေတာအရင်းအမြစ်သည် plugin ကုဒ်နှင့်အတူလာသည်။ datasource instance configuration page နှင့် datasource controller တို့အတွက်အသုံးပြုမည့် config.html template နှင့် ConfigCtrl controller တစ်ခုရှိရန်လိုအပ်ပါသည်။

KubeGraf ပလပ်အင်တွင်၊ အသုံးပြုသူကြားခံမြင်ကွင်းမှ၊ ဒေတာအရင်းအမြစ်သည် အောက်ပါစွမ်းရည်များကို အကောင်အထည်ဖော်သည့် kubernetes အစုအဝေးတစ်ခု၏ ဥပမာတစ်ခုဖြစ်သည် (အရင်းအမြစ်ကုဒ်ကို ရနိုင်သည် လင့်ခ်):

  • k8s api-server မှ ဒေတာစုဆောင်းခြင်း (namespaces စာရင်း၊ ဖြန့်ကျက်မှုများ...)
  • prometheus-datasource သို့ proxying တောင်းဆိုမှုများ (တိကျသောအစုတစ်ခုစီအတွက် plugin ဆက်တင်များတွင် ရွေးချယ်ထားသော) နှင့် static pages နှင့် dashboards များတွင် data ကိုအသုံးပြုရန်အတွက် formatting တုံ့ပြန်မှုများ။
  • static plugin စာမျက်နှာများတွင် ဒေတာကို အပ်ဒိတ်လုပ်ခြင်း (သတ်မှတ်ထားသော ပြန်လည်ဆန်းသစ်မှုနှုန်းဖြင့်)။
  • grafana-dashboards (metriFindQuery() method) တွင် နမူနာစာရွက်တစ်ခုကို ထုတ်လုပ်ရန် စုံစမ်းမေးမြန်းမှုများ လုပ်ဆောင်နေသည်

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

  • နောက်ဆုံး k8s အစုအဝေးနှင့် ချိတ်ဆက်မှု စမ်းသပ်ခြင်း။
testDatasource(){
   let url = '/api/v1/namespaces';
   let _url = this.url;
   if(this.accessViaToken)
       _url += '/__proxy';
   _url += url;
   return this.backendSrv.datasourceRequest({
       url: _url,
       method: "GET",
       headers: {"Content-Type": 'application/json'}
   })
       .then(response => {
           if (response.status === 200) {
               return {status: "success", message: "Data source is OK", title: "Success"};
           }else{
               return {status: "error", message: "Data source is not OK", title: "Error"};
           }
       }, error => {
           return {status: "error", message: "Data source is not OK", title: "Error"};
       })
}

ကျွန်ုပ်တို့၏အမြင်အရ သီးခြားစိတ်ဝင်စားစရာကောင်းသည့်အချက်မှာ ဒေတာအရင်းအမြစ်အတွက် စစ်မှန်ကြောင်းအထောက်အထားနှင့် ခွင့်ပြုချက်ပေးသည့် ယန္တရားတစ်ခုကို အကောင်အထည်ဖော်ခြင်းဖြစ်သည်။ ပုံမှန်အားဖြင့်၊ ဘောက်စ်ပြင်ပတွင်၊ နောက်ဆုံးဒေတာရင်းမြစ်သို့ဝင်ရောက်ခွင့်ကို configure လုပ်ရန် built-in Grafana အစိတ်အပိုင်း datasourceHttpSettings ကို သုံးနိုင်သည်။ ဤအစိတ်အပိုင်းကိုအသုံးပြုခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် url နှင့် အခြေခံစစ်မှန်ကြောင်းအထောက်အထား/ခွင့်ပြုချက်ဆက်တင်များ- login-password သို့မဟုတ် client-cert/client-key ကိုသတ်မှတ်ခြင်းဖြင့် http ဒေတာရင်းမြစ်သို့ဝင်ရောက်ခွင့်ကို configure လုပ်နိုင်ပါသည်။ bearer token (k8s အတွက် de facto standard) ကို အသုံးပြု၍ access ကို configure လုပ်ရန် စွမ်းရည်ကို အကောင်အထည်ဖော်ရန်အတွက် အနည်းငယ် tweaking လုပ်ရမည်ဖြစ်ပါသည်။

ဤပြဿနာကိုဖြေရှင်းရန် သင်သည် built-in Grafana “Plugin Routes” ယန္တရားအား အသုံးပြုနိုင်သည်။ တရားဝင်စာရွက်စာတမ်းစာမျက်နှာ) ကျွန်ုပ်တို့၏ဒေတာရင်းမြစ်၏ဆက်တင်များတွင်၊ ကျွန်ုပ်တို့သည် grafana ပရောက်စီဆာဗာမှလုပ်ဆောင်မည့်လမ်းကြောင်းသတ်မှတ်စည်းမျဉ်းများကိုကြေငြာနိုင်ပါသည်။ ဥပမာအားဖြင့်၊ တစ်ဦးချင်းစီ၏ အဆုံးမှတ်တစ်ခုစီအတွက် jsonData နှင့် secureJsonData အကွက်များမှ ဒေတာများ (စကားဝှက်များ သို့မဟုတ် တိုကင်များကို ကုဒ်ဝှက်ထားသောပုံစံဖြင့် သိမ်းဆည်းရန်အတွက်) နမူနာပုံစံပြုလုပ်နိုင်ခြေဖြင့် ခေါင်းစီးများ သို့မဟုတ် url များကို သတ်မှတ်နိုင်သည်။ ကျွန်ုပ်တို့၏ဥပမာတွင်၊ မေးမြန်းချက်များကဲ့သို့သော /__proxy/api/v1/namespaces ပုံစံ၏ url သို့ proxy ပေးပါမည်။
ခွင့်ပြုချက်- Bearer ခေါင်းစီးဖြင့် /api/v8/namespaces။

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

သဘာဝအားဖြင့်၊ k8s api server နှင့်အလုပ်လုပ်ရန် ကျွန်ုပ်တို့သည် readonly access ရှိသောအသုံးပြုသူလိုအပ်သည်၊ သင်ရှာဖွေနိုင်သည့်ဖန်တီးမှုအတွက်ဖော်ပြသည်။ plugin အရင်းအမြစ်ကုဒ်.

အပိုင်း 5- ထုတ်ဝေမှု

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

သင့်ကိုယ်ပိုင် Grafana ပလပ်အင်ကို သင်ရေးသားပြီးသည်နှင့် ၎င်းကို လူသိရှင်ကြားဖြစ်စေရန် သင်သဘာဝကျကျ ပြုလုပ်လိုမည်ဖြစ်သည်။ Grafana တွင်၎င်းသည်ဤနေရာတွင်ရရှိနိုင်သော plugins များ၏စာကြည့်တိုက်ဖြစ်သည်။ grafana.com/grafana/plugins

သင်၏ပလပ်အင်ကိုတရားဝင်စတိုးတွင်ရရှိနိုင်စေရန်အတွက်၊ သင်သည် PR တစ်ခုပြုလုပ်ရန်လိုအပ်သည်။ ဤသိုလှောင်ခန်းဤကဲ့သို့သောအကြောင်းအရာကို repo.json ဖိုင်သို့ထည့်ခြင်းဖြင့်-

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

ဗားရှင်းသည် သင့်ပလပ်အင်၏ ဗားရှင်းဖြစ်ပြီး၊ url သည် သိုလှောင်ခန်းသို့ လင့်ခ်တစ်ခုဖြစ်ပြီး commit သည် ပလပ်အင်၏ သီးခြားဗားရှင်းတစ်ခုရရှိနိုင်မည့် commit ၏ hash ဖြစ်သည်။

Output မှာ အံ့သြစရာကောင်းတဲ့ ရုပ်ပုံတစ်ပုံကို တွေ့ရပါလိမ့်မယ်-

Grafana အတွက် ပလပ်အင်တစ်ခု ဖွံ့ဖြိုးတိုးတက်ရေး- ရိုက်ချက်ကြီးများ၏ သမိုင်း

plugin ဖော်ပြချက်ပါရှိသော သင်၏ Readme.md၊ Changelog.md နှင့် plugin.json ဖိုင်တို့မှ ၎င်းအတွက် ဒေတာကို အလိုအလျောက် ဖမ်းယူသွားပါမည်။

အပိုင်း 6: ကောက်ချက်အစား

ထုတ်ဝေပြီးသည့်နောက် ကျွန်ုပ်တို့၏ ပလပ်အင်ကို တီထွင်ဖန်တီးမှု မရပ်တန့်ခဲ့ပါ။ ယခု ကျွန်ုပ်တို့သည် အစုလိုက်အစည်းများ၏ ရင်းမြစ်များအသုံးပြုမှုကို မှန်ကန်စွာ စောင့်ကြည့်စစ်ဆေးနေပြီး UX ကို ပိုမိုကောင်းမွန်လာစေရန် အင်္ဂါရပ်အသစ်များကို မိတ်ဆက်ကာ ကျွန်ုပ်တို့၏ဖောက်သည်များနှင့် GitHub ပေါ်ရှိလူများထံမှ ပလပ်အင်ကို ထည့်သွင်းပြီးနောက် ရရှိလာသော တုံ့ပြန်ချက်အများအပြားကိုလည်း ရယူနေပါသည် (သင်ထွက်သွားပါက၊ မင်းရဲ့ပြဿနာ ဒါမှမဟုတ် ဆွဲထုတ်ဖို့ တောင်းဆိုတာ ငါအရမ်းပျော်နေမှာပါ :)

ဤဆောင်းပါးသည် Grafana ကဲ့သို့ အံ့သြဖွယ်ကောင်းသော tool ကို နားလည်စေပြီး သင့်ကိုယ်ပိုင် plugin ရေးနိုင်လိမ့်မည်ဟု ကျွန်ုပ်တို့ မျှော်လင့်ပါသည်။

ကျေးဇူးတင်ပါသည်!)

source: www.habr.com

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster