เบชเบฐเบเบฒเบเบเบตเบเบธเบเบเบปเบ! เบชเบญเบเบชเบฒเบกเปเบเบทเบญเบเบเปเบญเบเบซเบเปเบฒเบเบตเป, เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเบตเบเบเบปเบงเปเบเบเบเบฒเบ open-source เปเบซเบกเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบปเปเบฒเปเบเบเบฒเบเบเบฐเบฅเบดเบ - plugin Grafana เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเบเบฒเบก kubernetes, เบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบญเบตเปเบเบงเปเบฒ. . เบฅเบฐเบซเบฑเบเปเบซเบผเปเบ plugin เปเบกเปเบเบกเบตเบขเบนเป . เปเบฅเบฐเปเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเปเบเปเบเบเบฑเบเบเบฑเบเบเปเบฒเบเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบ plugin, เปเบเบทเปเบญเบเบกเบทเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบฅเบฐเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบปเบเปเบเบเบฐเบเบงเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ. เปเบโเบเบฑเบโเปเบฅเบตเบ!
เบเบฒเบเบเบต 0 - เปเบเบฐเบเปเบฒ: เบเบงเบเปเบฎเบปเบฒเบกเบฒเบฎเบญเบเบเบธเบเบเบตเปเปเบเปเปเบเบงเปเบ?
เบเบงเบฒเบกเบเบดเบเบเบตเปเบเบฐเบเบฝเบ plugin เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบญเบเบชเปเบฒเบฅเบฑเบ Grafan เปเบเปเบกเบฒเบซเบฒเบเบงเบเปเบฎเบปเบฒเปเบเบเบเบฑเบเปเบญเบตเบ. เบเปเบฅเบดเบชเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบดเบเบเบฒเบกเปเบเบเบเบฒเบเปเบงเบฑเบเปเบเบเปเบเบญเบเบฅเบฐเบเบฑเบเบเปเบฒเบเปเบเบญเบเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบซเบผเบฒเบเบเบงเปเบฒ 10 เบเบต. เปเบเบฅเบฐเบซเบงเปเบฒเบเปเบงเบฅเบฒเบเบตเป, เบเบงเบเปเบฎเบปเบฒเปเบเปเบชเบฐเบชเบปเบกเบเบงเบฒเบกเบเปเบฒเบเบฒเบเบเปเบฒเบเบงเบเบซเบฅเบฒเบ, เบเปเบฅเบฐเบเบตเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบ, เปเบฅเบฐเบเบฐเบชเบปเบเบเบฒเบเปเบเบเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบเบปเบเบเบฒเบเบเบดเบเบเบฒเบกเบเปเบฒเบเป. เปเบฅเบฐเปเบเบเบฒเบเบเบธเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฒเบกเบเบปเบงเปเบญเบเบงเปเบฒ: "เบกเบตเปเบเบทเปเบญเบเบกเบท magic เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเบเบฒเบก Kubernetes, เบเบฑเปเบเบเบฑเปเบ, เบเปเบญเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเปเบงเบปเปเบฒเบงเปเบฒ, "เบเบฑเปเบเบกเบฑเบเปเบฅเบฐเบฅเบทเบกเบกเบฑเบ"? .. เบกเบฒเบเบเบฐเบเบฒเบเบญเบธเบเบชเบฒเบซเบฐเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเบเบฒเบก k8s, เปเบเปเบเบญเบ, เบกเบตเบกเบฒเบเบปเบเบเบฒเบเปเบฅเปเบง เบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบญเบ Prometheus + Grafana. เปเบฅเบฐเปเบเบฑเบเบเบฒเบเปเบเปเปเบเบเบตเปเบเปเบญเบกเบเบตเปเบเบฐเปเบฎเบฑเบเบชเปเบฒเบฅเบฑเบ stack เบเบตเป, เบกเบตเบเบธเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบญเบเบเบฐเปเบเบเบเปเบฒเบเปเบเบญเบเปเบเบทเปเบญเบเบกเบท: prometheus-operator, เบเบธเบเบเบญเบ dashboards kubernetes-mixin, grafana-kubernetes-app.
plugin grafana-kubernetes-app เปเบเบดเปเบเบเบทเบงเปเบฒเปเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒ, เปเบเปเบกเบฑเบเบเปเปเปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบซเบผเบฒเบเบเบงเปเบฒเบซเบเบถเปเบเบเบตเปเบฅเบฐ, เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบชเบฐเบเบฑเบเปเบซเบกเปเบเบญเบ node-exporter เปเบฅเบฐ kube-state-metrics. เปเบฅเบฐเปเบเบเบฒเบเบเบธเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฑเบเบชเบดเบเปเบ: "เบเบงเบเปเบฎเบปเบฒเบเปเปเบเบงเบเบเบฑเบเบชเบดเบเปเบเบเบญเบเบเบปเบเปเบญเบเบเป?"
เปเบเบงเบเบงเบฒเบกเบเบดเบเบญเบฑเบเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบชเบดเบเปเบเบเบฐเบเบดเบเบฑเบเปเบ plugin เบเบญเบเบเบงเบเปเบฎเบปเบฒ:
- เบเบฒเบเบชเบฐเปเบเบเบเบฒเบเบเบญเบ "เปเบเบเบเบตเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ": เบเบฒเบเบเปเบฒเบชเบฐเปเบซเบเบตเบเบตเปเบชเบฐเบเบงเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเบเบธเปเบก, เบเบฑเบเบเบธเปเบกเปเบเบ namespaces, deployments ... ;
- เบเบฒเบเบชเบฐเปเบเบเบเบฒเบเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเบฑเปเบ "เบเบฒเบเบเบฑเบเปเบเป - เบเปเบฅเบดเบเบฒเบ (+ เบเบญเบ)".
- เบเบฒเบเปเบเบดเปเบเปเบซเบฑเบเบเบฒเบเบเบญเบเบเบฒเบเปเบเบเบขเบฒเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบธเปเบกเปเบเบเบปเปเบงเบเบธเปเบกเบเบญเบเบเบธเปเบก.
- เบเบฒเบเปเบเบฑเบเบเปเบฒเบเปเปเบกเบนเบ metrics เปเบฅเบฐเบเปเปเบกเบนเบเบเบฒเบเบซเบผเบฒเบเปเบซเบผเปเบ: Prometheus เปเบฅเบฐ k8s api server.
- เบเบฒเบเบเบดเบเบเบฒเบกเบเบฑเบเบชเบญเบเบชเปเบงเบเบเบญเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบ (เบเบฒเบเบเปเบฒเปเบเปเปเบงเบฅเบฒ CPU, เบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ, เบฅเบฐเบเบปเบเบเปเบญเบเบเบญเบเปเบเปเบ, เปเบเบทเบญเบเปเบฒเบ) เปเบฅเบฐเปเบซเบเบเบปเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ - เปเบเบเบฐเบเบฒเบเบฒเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบชเบธเบเบฐเบเบฒเบ, เบเปเบฒเบเบงเบเบเบฒเบเบเปเบฒเบฅเบญเบเบเบตเปเบกเบตเบขเบนเป, เบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบเบงเบฒเบกเบเปเบญเบก / เบเบตเบงเบดเบ.
เบชเปเบงเบเบเบต 1: "Plugin Grafana" เปเบกเปเบเบซเบเบฑเบ?
เบเบฒเบเบกเบธเบกเปเบเบดเปเบเบเปเบฒเบเบงเบดเบเบฒเบเบฒเบ, plugin เบชเปเบฒเบฅเบฑเบ Grafana เปเบกเปเบเบเบปเบงเบเบงเบเบเบธเบกเบกเบธเบก, เปเบเบดเปเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเปเบกเบนเบ Grafana (/var/grafana/plugins/ /dist/module.js) เปเบฅเบฐเบชเบฒเบกเบฒเบเปเบซเบฅเบเปเบเบฑเบเปเบกเบเบนเบ SystemJS. เบเบญเบเบเบฒเบเบเบฑเปเบเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบเบงเบเบเบฐเบกเบตเปเบเบฅเป plugin.json เบเบตเปเบกเบตเบเปเปเบกเบนเบ meta เบเบฑเบเบซเบกเบปเบเบเปเบฝเบงเบเบฑเบ plugin เบเบญเบเบเปเบฒเบ: เบเบทเป, เบฎเบธเปเบ, เบเบฐเปเบเบ plugin, เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ repository / site / เปเบเบญเบฐเบเบธเบเบฒเบ, เบเบฒเบเบเบถเปเบเบเบฑเบ, เปเบฅเบฐเบญเบทเปเบเป.

module.ts

plugin.json
เบเบฑเปเบเบเบตเปเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเบเบฒเบเบซเบเปเบฒเบเป, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบ plugin.type = app. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ plugins เบชเปเบฒเบฅเบฑเบ Grafana เบชเบฒเบกเบฒเบเบกเบตเบชเบฒเบกเบเบฐเปเบเบ:
เบเบฐเบเบฐเบเปเบฒเบกเบฐ: เบเบฐเปเบเบเบเบฑเปเบเบญเบดเบเบเบปเปเบงเปเบเบเบตเปเบชเบธเบ - เบกเบฑเบเปเบเบฑเบเบเบฐเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบดเปเบเปเบซเบฑเบ metrics เปเบ, เปเบเปเปเบเบทเปเบญเบชเปเบฒเบ dashboards เบเปเบฒเบเป.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: เบเบปเบงเปเบเบทเปเบญเบกเบเปเป plugin เบเบฑเบเบเบฒเบเปเบซเบผเปเบเบเปเปเบกเบนเบ (เบเบปเบงเบขเปเบฒเบ: Prometheus-datasource, ClickHouse-datasource, ElasticSearch-datasource).
app: เบเบฑเปเบเบญเบดเบเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเปเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเปเบฒเบเบซเบเปเบฒเบเบญเบเบเปเบฒเบเปเบญเบเบเบฒเบเปเบ Grafana, เบชเปเบฒเบเบซเบเปเบฒ html เบเบญเบเบเปเบฒเบเปเบญเบเปเบฅเบฐเปเบเบปเปเบฒเปเบเบดเบเปเบซเบผเปเบเบเปเปเบกเบนเบเบเปเบงเบเบเบปเบเปเบญเบเปเบเบทเปเบญเบชเบฐเปเบเบเบเปเปเบกเบนเบเบเปเบฒเบเป. เบเบญเบเบเบฒเบเบเบตเป, plugins เบเบญเบเบเบฐเปเบเบเบญเบทเปเบเป (เปเบซเบผเปเบเบเปเปเบกเบนเบ, เบเบฐเบเบฒเบ) เปเบฅเบฐ dashboards เบเปเบฒเบเปเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเปเบเบฑเบ dependencies.

เบเบปเบงเบขเปเบฒเบเบเบฒเบเบเบถเปเบเบเบฑเบ plugin เบเบฑเบ type=app.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบฑเบ JavaScript เปเบฅเบฐ TypeScript เปเบเบฑเบเบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบผเปเบเบผเบก (เบเบงเบเปเบฎเบปเบฒเปเบฅเบทเบญเบเบกเบฑเบ). เบเบฒเบเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบ plugins hello-world เบเบญเบเบเบธเบเบเบฐเปเบเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป : repository เบเบตเปเบเบฐเบเบญเบเบกเบต starter-packs เบเปเบฒเบเบงเบเบซเบฅเบฒเบ (เบกเบตเปเบเบดเบเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบปเบเบฅเบญเบเบเบญเบ plugin เปเบ React) เบเบฑเบ builders เบเบตเปเบเบดเบเบเบฑเปเบเปเบงเปเบเปเบญเบเปเบฅเบฐ configured.
เบเบฒเบเบเบต 2: เบเบฒเบเบเบฐเบเบฝเบกเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเปเบญเบเบเบดเปเบ
เปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเปเบฝเบงเบเบฑเบ plugin, เบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบธเปเบก kubernetes เบเบตเปเบกเบตเปเบเบทเปเบญเบเบกเบทเบเบตเปเบเบดเบเบเบฑเปเบเปเบงเปเบเปเบญเบเบเบฑเบเบซเบกเบปเบ: prometheus, node-exporter, kube-state-metrics, grafana. เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบงเบเปเบเปเบฎเบฑเบเบเบฒเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบเบขเปเบฒเบเปเบงเบงเบฒ, เบเปเบฒเบเบเบฒเบเปเบฅเบฐเบเปเบฒเบกเบฐเบเบฒเบ, เปเบฅเบฐเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเปเบซเบผเบเบเบทเบเปเบซเบกเป, เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเปเบกเบนเบ Grafana เบเบงเบเบเบทเบเบเบดเบเบเบฑเปเบเปเบเบเบเบปเบเบเบฒเบเปเบเบทเปเบญเบเบเบญเบเบเบนเปเบเบฑเบเบเบฐเบเบฒ.
เบงเบดเบเบตเบเบตเปเบชเบฐเบเบงเบเบเบตเปเบชเบธเบ, เปเบเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบฎเบฑเบเบงเบฝเบเปเบเบเปเบญเบเบเบดเปเบเบเบฑเบ kubernetes เปเบกเปเบ . เบเบฑเปเบเบเบญเบเบเปเปเปเบเปเบกเปเบเบเบฒเบเบเบดเบเบเบฑเปเบเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบ Prometheus + Grafana เปเบเบเปเบเป prometheus-operator. IN เบเบฑเปเบเบเบญเบเบเบฒเบเบเบดเบเบเบฑเปเบ prometheus-operator เปเบ minikube เปเบกเปเบเปเบเปเบญเบฐเบเบดเบเบฒเบเบขเปเบฒเบเบฅเบฐเบญเบฝเบ. เปเบเบทเปเบญเปเบเบตเบเปเบเปเบเบงเบฒเบกเบเบปเบเบเบปเบ, เบเปเบฒเบเบเปเบญเบเบเปเบฒเบเบปเบเบเบฒเบฅเบฒเบกเบดเปเบเบต เบเบงเบฒเบกเบเบปเบเบเบปเบ: เบเบงเบฒเบกเบเบดเบ เปเบเปเบเบฅเป charts/grafana/values.yaml, เปเบเบตเปเบก PV เปเบฅเบฐ PVC เบเบญเบเบเปเบฒเบเปเบญเบ เปเบฅเบฐเบฅเบฐเบเบธเบเบงเบเบกเบฑเบเบขเบนเปเปเบเบเบฒเบฅเบฒเบกเบดเปเบเบต persistence.existingClaim
script เบเบฒเบเปเบเบตเบเบเบปเบง minikube เบชเบธเบเบเปเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป:
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: เบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบปเบงเบเบดเบ
เบฎเบนเบเปเบเบเบงเบฑเบเบเบธ
เปเบเบเบฒเบเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ plugin, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเบญเบฐเบเบดเบเบฒเบเบเบธเบเบซเบเปเบงเบเบเบฒเบ Kubernetes เบเบทเปเบเบเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเบฎเบนเบเปเบเบเบเบญเบเบซเปเบญเบเบฎเบฝเบ TypeScript: pod, deployment, daemonset, statefulset, job, cronjob, service, node, namespace. เปเบเปเบฅเบฐเบเบฑเปเบเบฎเบฝเบเปเบซเบผเบปเปเบฒเบเบตเปเบชเบทเบเบเบญเบเบกเบฒเบเบฒเบเบซเปเบญเบเบฎเบฝเบ BaseModel เบเบปเปเบงเปเบ, เปเบเบดเปเบเบญเบฐเบเบดเบเบฒเบเปเบเบดเบเบเบปเบงเบชเปเบฒเบ, เบเบปเบงเบเปเบฒเบฅเบฒเบ, เบงเบดเบเบตเบเบฒเบเบเบฑเบเบเบธเบ เปเบฅเบฐเบเปเบฝเบเบเบฒเบเปเบเบดเปเบเปเบซเบฑเบ. เปเบเปเบฅเบฐเบเบฑเปเบเบฎเบฝเบเบญเบฐเบเบดเบเบฒเบเบเบงเบฒเบกเบชเบณเบเบฑเบเบเบตเปเบเบดเบเบเบฑเบเบเบฑเบเปเปเบงเบเบเบฒเบเบญเบทเปเบ, เบเบปเบงเบขเปเบฒเบ, เบฅเบฒเบเบเบทเปเบเบญเบเบเบฑเบเบชเบณเบฅเบฑเบเปเปเบงเบเบเบฒเบเบเบญเบเบเบฒเบเบเบฑเบเบเบฐเปเบเบ.
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, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบชเบฐเปเบเบเบซเบผเบทเบเปเบฒเบเบปเบ metrics entity เบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเปเบเบฎเบนเบเปเบเบเบเบตเปเบชเบฐเบเบงเบเปเบฅเบฐเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเป. เบเบปเบงเบขเปเบฒเบ, เบฎเบนเบเปเบเบเบเบปเบเบเบฐเบฅเบดเบเบเบญเบ nodes cpu เบเบตเปเบชเบฒเบกเบฒเบเบเบฑเบเบชเบฑเบเปเบเป:
get cpuAllocatableFormatted(){
let cpu = this.data.status.allocatable.cpu;
if(cpu.indexOf('m') > -1){
cpu = parseInt(cpu)/1000;
}
return cpu;
}เบซเบเปเบฒ
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบซเบเปเบฒ plugin เบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบซเบกเบปเบเปเบกเปเบเปเบเปเบญเบฐเบเบดเบเบฒเบเปเบเปเบเบทเปเบญเบเบเบปเปเบเปเบ pluing.json เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบเบฒเบ dependencies:

เปเบเบเบฅเบฑเบญเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบซเบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบฅเบฐเบเบธ PAGE NAME (เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเบเบฐเบเบทเบเบเปเบฝเบเปเบเบฑเบ slug เปเบเบเบซเบเปเบฒเบเบตเปเบเบฐเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเป); เบเบทเปเบเบญเบเบญเบปเบเบเบฐเบเบญเบเบเบตเปเบฎเบฑเบเบเบดเบเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบญเบเบซเบเปเบฒเบเบตเป (เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบญเบปเบเบเบฐเบเบญเบเบเบทเบเบชเบปเปเบเบญเบญเบเปเบเบเบฑเบ module.ts); เบเบฒเบเบเบตเปเบเบญเบเปเบเบดเบเบเบปเบเบเบฒเบเบเบญเบเบเบนเปเปเบเปเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเปเบฒเบเบตเปเบกเบตเบขเบนเป เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเบณเบเบฒเบเบชเบณเบฅเบฑเบเปเบเบเบเปเบฒเบเบเปเบฒเบ.
เปเบเบญเบปเบเบเบฐเบเบญเบเบเบตเปเบฎเบฑเบเบเบดเบเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบญเบเบซเบเปเบฒ, เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเปเบฒเบเบปเบ templateUrl, เบเปเบฒเบเปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเปเบเบฅเป html เบเปเบงเบ markup. เบเบฒเบเปเบเบเบปเบงเบเบงเบเบเบธเบก, เปเบเบเบเปเบฒเบเบเบฒเบเบชเบฑเบเบขเบฒเบเบตเปเบเบถเปเบเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเบดเบ 2 เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเปเบฒเบเบกเบธเบกเบเบตเปเบชเปเบฒเบเบฑเบ:
- backendSrv - เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเปเบเบญเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Grafana API;
- datasourceSrv - เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเปเบเบญเบเบเปเบญเบเบเบดเปเบเบเบฑเบเปเบซเบผเปเบเบเปเปเบกเบนเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบเบดเบเบเบฑเปเบเบขเบนเปเปเบ Grafana เบเบญเบเบเปเบฒเบ (เบเบปเบงเบขเปเบฒเบเปเบเบฑเปเบเบงเบดเบเบตเบเบฒเบ .getAll() - เบชเบปเปเบเบเบทเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเปเบซเบผเปเบเบเปเปเบกเบนเบเบเบตเปเบเบดเบเบเบฑเปเบเบเบฑเบเบซเบกเบปเบ; .get( ) - เบชเบปเปเบเบเบทเบเบงเบฑเบเบเบธเบเบปเบงเบขเปเบฒเบเบเบญเบเปเบซเบผเปเบเบเปเปเบกเบนเบเบชเบฐเปเบเบฒเบฐ.



เบชเปเบงเบเบเบต 4: เปเบซเบผเปเบเบเปเปเบกเบนเบ
เบเบฒเบเบเบฑเบเบชเบฐเบเบฐเบเบญเบ Grafana, เปเบซเบผเปเบเบเปเปเบกเบนเบเปเบกเปเบ plugin เบเบฝเบงเบเบฑเบเบเบฑเบเบชเบดเปเบเบญเบทเปเบเป: เบกเบฑเบเบกเบตเบเบธเบเปเบเบปเปเบฒเบเบญเบเบเบปเบเปเบญเบ module.js, เบกเบตเปเบเบฅเปเบเบตเปเบกเบตเบเปเปเบกเบนเบ meta plugin.json. เปเบกเบทเปเบญเบเบฑเบเบเบฐเบเบฒ plugin เบเปเบงเบ type = app, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบปเบงเบเบฑเบเบเบฑเบเบเบฑเบเปเบซเบผเปเบเบเปเปเบกเบนเบเบเบตเปเบกเบตเบขเบนเป (เบเบปเบงเบขเปเบฒเบ, prometheus-datasource) เปเบฅเบฐเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบญเบ, เปเบเบดเปเบเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบเบเบเบปเบเปเบ plugin directory (dist/datasource/*) เบซเบผเบทเบเบดเบเบเบฑเปเบเปเบเบฑเบ dependency. เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบซเบผเปเบเบเปเปเบกเบนเบเบกเบฒเบเปเบญเบกเบเบฑเบเบฅเบฐเบซเบฑเบ plugin. เบกเบฑเบเบเบฑเบเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบเบเบตเปเบเบฐเบกเบตเปเบกเปเปเบเบ config.html เปเบฅเบฐเบเบปเบงเบเบงเบเบเบธเบก ConfigCtrl, เปเบเบดเปเบเบเบฐเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบซเบเปเบฒเบเบฒเบเบเบฑเปเบเบเปเบฒ instance datasource เปเบฅเบฐเบเบปเบงเบเบงเบเบเบธเบก Datasource, เปเบเบดเปเบเบเบฐเบเบดเบเบฑเบเปเบซเบเบเบปเบเบเบญเบเปเบซเบผเปเบเบเปเปเบกเบนเบเบเบญเบเบเปเบฒเบ.
เปเบ plugin KubeGraf, เบเบฒเบเบเบธเบเปเบเปเบเบญเบเบเบญเบเบเบนเปเปเบเป, เปเบซเบผเปเบเบเปเปเบกเบนเบเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบธเปเบก kubernetes เบเบตเปเบเบฐเบเบดเบเบฑเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเปเปเปเบเบเบตเป (เบฅเบฐเบซเบฑเบเปเบซเบผเปเบเปเบกเปเบเบกเบตเบขเบนเป. ):
- เบเบฒเบโเปเบเบฑเบโเบเปเบฒโเบเปเปโเบกเบนเบโเบเบฒเบ k8s api-server (เบเบฒเบโเปเบเปโเบฎเบฑเบโเบฅเบฒเบโเบเบทเปโเบเบญเบ namespacesโ, เบเบฒเบโเบเปเบฒโเปเบเป ... )
- เบเบฒเบเบฎเปเบญเบเบเป proxying เบเบฑเบ prometheus-datasource (เปเบเบดเปเบเบเบทเบเปเบฅเบทเบญเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ plugin เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบธเปเบกเบชเบฐเปเบเบฒเบฐ) เปเบฅเบฐเบฎเบนเบเปเบเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเปเบเบทเปเบญเบเปเบฒเปเบเปเบเปเปเบกเบนเบเบเบฑเบเปเบเบซเบเปเบฒเบเบปเบเบเบตเปเปเบฅเบฐเปเบ dashboards.
- เบเบฒเบเบญเบฑเบเปเบเบเบเปเปเบกเบนเบเปเบเปเปเบฒเบเบฅเบฑเบเบญเบดเบเบเบปเบเบเบตเป (เบเปเบงเบเบญเบฑเบเบเบฒเปเบซเบผเบเบเปเปเบกเบนเบเปเปเปเบเบตเปเบเบณเบเบปเบเปเบงเป).
- เบเปเบฒเปเบเบตเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบเบทเปเบญเบชเปเบฒเบเปเบเปเบเปเบกเปเปเบเบเปเบ grafana-dashboards (metriFindQuery() method)



- เบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบธเปเบก 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"};
})
}เบเบธเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบกเปเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบเบปเบเปเบเบเบฒเบเบเบงเบเบชเบญเบเปเบฅเบฐเบเบฒเบเบญเบฐเบเบธเบเบฒเบเบชเปเบฒเบฅเบฑเบเปเบซเบผเปเบเบเปเปเบกเบนเบ. เปเบเบเบเบปเบเบเบฐเบเบด, เบญเบญเบเบเบฒเบเบเปเบญเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเปเบญเบปเบเบเบฐเบเบญเบเบเปเปเบกเบนเบ Grafana เบเบตเปเบกเบตเปเบเบเบชเปเบฒเบHttpSettings เปเบเบทเปเบญเบเปเบฒเบเบปเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบซเบผเปเบเบเปเปเบกเบนเบเบชเบธเบเบเปเบฒเบ. เบเบฒเบเบเปเบฒเปเบเปเบญเบปเบเบเบฐเบเบญเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบซเบผเปเบเบเปเปเบกเบนเบ http เปเบเบเบเบฒเบเบฅเบฐเบเบธ url เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบทเปเบเบเบฒเบเบเบญเบเบเบฒเบเบเบงเบเบชเบญเบเบเบงเบฒเบกเบเบทเบเบเปเบญเบ / เบเบฒเบเบญเบฐเบเบธเบเบฒเบ: login-password, เบซเบผเบท client-cert/client-key. เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเปเบฒเบซเบเบปเบเบเปเบฒเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบเปเบเป token bearer (เบกเบฒเบเบเบฐเบเบฒเบ de facto เบชเปเบฒเบฅเบฑเบ k8s), เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเปเบฎเบฑเบเบเบฒเบเบเบฑเบเปเบฅเบฑเบเบเปเบญเบ.
เปเบเบทเปเบญโเปเบเปโเปเบโเบเบฑเบโเบซเบฒโเบเบตเปโ, เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเปเบฒโเปเบเปโเบเบปเบโเปเบ Grafana "Plugin Routesโ" เบเบตเปโเบกเบตโเบขเบนเปโเปเบ (เบฅเบฒเบโเบฅเบฐโเบญเบฝเบโเปเบเบตเปเบกโเปเบเบตเบกโเปเบเปโเบเบตเปโ. ). เปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบเปเบซเบผเปเบเบเปเปเบกเบนเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฐเบเบฒเบเบเบธเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเปเบฒเบเบปเบเปเบชเบฑเปเบเบเบฒเบเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบปเบงเปเบเบ grafana. เบเบปเบงเบขเปเบฒเบ, เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐ endpoint เปเบเปเบฅเบฐเบเบปเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบ headers เบซเบผเบท urls เบเบตเปเบกเบตเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบญเบ template, เบเปเปเบกเบนเบเบเบตเปเบชเบฒเบกเบฒเบเปเบญเบปเบฒเบกเบฒเบเบฒเบเบเปเบญเบ jsonData เปเบฅเบฐ secureJsonData (เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบฅเบฐเบซเบฑเบเบเปเบฒเบเบซเบผเบท tokens เปเบเบฎเบนเบเปเบเบเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบ). เปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเปเบฒเบเบฒเบกเปเบเบฑเปเบ: /__proxy/api/v1/namespaces เบเบฐเบเบทเบเบชเบปเปเบเบเปเปเบเบฑเบ url เบเบญเบเปเบเบเบเบญเบก
/api/v8/namespaces เบเปเบงเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบ: Bearer header.


เบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบ, เปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ k8s api เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบนเปเปเบเปเบเบตเปเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ readonly, manifests เบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบเบตเปเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบขเบนเปเปเบ .
เบชเปเบงเบเบเบต 5: เบเปเบญเบ

เปเบกเบทเปเบญเบเปเบฒเบเปเบเปเบเบฝเบ plugin Grafana เบเบญเบเบเปเบฒเบเปเบญเบ, เบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบเปเบฅเปเบง, เบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบเบตเบเปเบเบตเบเบเปเปเบชเบฒเบเบฒเบฅเบฐเบเบฐ. เปเบ Grafana เบเบตเปเปเบกเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบญเบ plugins เบกเบตเบขเบนเปเบเบตเปเบเบตเป
เปเบเบทเปเบญเปเบซเปเบเบฑเปเบเบญเบดเบเบเบญเบเบเปเบฒเบเบกเบตเบขเบนเปเปเบเบฎเปเบฒเบเบเบตเปเปเบเบฑเบเบเบฒเบเบเบฒเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฎเบฑเบ PR เปเบ เปเบเบเบเบฒเบเปเบเบตเปเบกเปเบเบทเปเบญเบซเบฒเปเบเบเบเบตเปเปเบชเปเปเบเบฅเป repo.json:

เบเปเบญเบเบเบตเปเบชเบฐเบเบฑเบเปเบกเปเบเบชเบฐเบเบฑเบเบเบญเบ plugin เบเบญเบเบเปเบฒเบ, url เปเบกเปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ repository, เปเบฅเบฐ commit เปเบกเปเบ hash เบเบญเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเบตเปเบชเบฐเบเบฑเบเบชเบฐเปเบเบฒเบฐเบเบญเบ plugin เบเบฐเบกเบตเปเบซเป.
เปเบฅเบฐเบขเบนเปเบเบตเปเบเบปเบเบเบฐเบฅเบดเบเบเปเบฒเบเบเบฐเปเบซเบฑเบเบฎเบนเบเบเบฒเบเบเบตเปเบเบฐเปเบชเบตเบเปเบเบฑเปเบ:

เบเปเปเบกเบนเบเบชเปเบฒเบฅเบฑเบเบกเบฑเบเบเบฐเบเบทเบเบเบฑเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฒเบ Readme.md, Changelog.md เปเบฅเบฐเปเบเบฅเป plugin.json เบเบญเบเบเปเบฒเบเบเปเบงเบเบเปเบฒเบญเบฐเบเบดเบเบฒเบ plugin.
เบเบฒเบเบเบต 6: เปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบเบฒเบเบชเบฐเบซเบฅเบธเบ
เบเบงเบเปเบฎเบปเบฒเบเปเปเปเบเปเบขเบธเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ plugin เบเบญเบเบเบงเบเปเบฎเบปเบฒเบซเบผเบฑเบเบเบฒเบเบเปเบญเบ. เปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบงเบเบชเบญเบเบเบฒเบเบเปเบฒเปเบเปเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบญเบ cluster nodes เบขเปเบฒเบเบเบทเบเบเปเบญเบ, เปเบเบฐเบเปเบฒเบเบธเบเบชเบปเบกเบเบฑเบเปเบซเบกเปเปเบเบทเปเบญเบเบฑเบเบเบธเบ UX, เปเบฅเบฐเบเบฑเบเปเบเปเบฎเบฑเบเบเปเบฒเบเบดเบเบปเบกเบเปเบฒเบเบงเบเบซเบฅเบฒเบเบเบตเปเปเบเปเบฎเบฑเบเบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบดเบเบเบฑเปเบ plugin เบเบฑเบเปเบเบเบฅเบนเบเบเปเบฒเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบฅเบฐเบเบฒเบเบเบปเบเปเบ GitHub (เบเปเบฒเบเปเบฒเบเบญเบญเบเปเบ. เบเบฑเบเบซเบฒเบซเบผเบทเบเบฒเบเบฎเปเบญเบเบเปเบเบญเบเบเปเบฒเบ, เบเปเบญเบเบเบฐเบเบตเปเบเบซเบผเบฒเบ :)
เบเบงเบเปเบฎเบปเบฒเบซเบงเบฑเบเบงเปเบฒเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเปเบเบปเปเบฒเปเบเปเบเบทเปเบญเบเบกเบทเบเบตเปเบเบฐเปเบชเบตเบเปเบเบฑเปเบ Grafana เปเบฅเบฐ, เบเบฒเบเบเบต, เบเบฝเบ plugin เบเบญเบเบเปเบฒเบเปเบญเบ.
เบเบญเบโเปเบ!)
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com
