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

မဟတ်ချက် Add