เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจธเจพเจฐเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจธเจคเจฟ เจธเจผเฉเจฐเฉ€ เจ…เจ•เจพเจฒ! เจ•เฉเจ เจฎเจนเฉ€เจจเฉ‡ เจชเจนเจฟเจฒเจพเจ‚, เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจจเจตเฉ‡เจ‚ เจ“เจชเจจ-เจธเฉ‹เจฐเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจจ เจฒเจˆ เจ—เฉเจฐเจพเจซเจพเจจเจพ เจชเจฒเฉฑเจ—เจ‡เจจ, เจœเจฟเจธเจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚ DevOpsProdigy KubeGraf. เจชเจฒเฉฑเจ—เจ‡เจจ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเฉˆ GitHub 'เจคเฉ‡ เจœเจจเจคเจ• เจญเฉฐเจกเจพเจฐ. เจ…เจคเฉ‡ เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจกเฉ‡ เจจเจพเจฒ เจ‡เจน เจ•เจนเจพเจฃเฉ€ เจธเจพเจ‚เจเฉ€ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจชเจฒเฉฑเจ—เจ‡เจจ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‡เจ†, เจ…เจธเฉ€เจ‚ เจ•เจฟเจนเฉœเฉ‡ เจŸเฉ‚เจฒ เจตเจฐเจคเฉ‡ เจ…เจคเฉ‡ เจตเจฟเจ•เจพเจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉŒเจฐเจพเจจ เจธเจพเจจเฉ‚เฉฐ เจ•เจฟเจนเฉœเฉ€เจ†เจ‚ เจฎเฉเจธเจผเจ•เจฒเจพเจ‚ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเจฟเจ†เฅค เจšเจฒเจพเจ‚ เจšเจฒเจฆเฉ‡ เจนเจพเจ‚!

เจญเจพเจ— 0 - เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€: เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฌเจฟเฉฐเจฆเฉ‚ เจคเฉฑเจ• เจ•เจฟเจตเฉ‡เจ‚ เจชเจนเฉเฉฐเจšเฉ‡?

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ†เจชเจฃเจพ เจชเจฒเฉฑเจ—เจ‡เจจ เจฒเจฟเจ–เจฃ เจฆเจพ เจตเจฟเจšเจพเจฐ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ…เจšเจพเจจเจ• เจนเฉ€ เจ†เจ‡เจ† เจธเฉ€เฅค เจธเจพเจกเฉ€ เจ•เฉฐเจชเจจเฉ€ 10 เจธเจพเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉฑเจงเจฐเจพเจ‚ เจฆเฉ€ เจœเจŸเจฟเจฒเจคเจพ เจฆเฉ‡ เจตเฉˆเจฌ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐ เจฐเจนเฉ€ เจนเฉˆเฅค เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจฆเฉŒเจฐเจพเจจ, เจ…เจธเฉ€เจ‚ เจตเฉฑเจ–-เจตเฉฑเจ– เจจเจฟเจ—เจฐเจพเจจเฉ€ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจตเฉฑเจกเฉ€ เจฎเจพเจคเจฐเจพ เจตเจฟเฉฑเจš เจฎเฉเจนเจพเจฐเจค, เจฆเจฟเจฒเจšเจธเจช เจ•เฉ‡เจธ เจ…เจคเฉ‡ เจคเจœเจฐเจฌเจพ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจชเฉเฉฑเจ›เจฟเจ†: "เจ•เฉ€ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ‹เจˆ เจœเจพเจฆเฉ‚เจˆ เจธเฉฐเจฆ เจนเฉˆ, เจคเจพเจ‚ เจœเฉ‹, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจน เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจจ, "เจ‡เจธ เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจญเฉเฉฑเจฒ เจœเจพเจ“"?".. k8s เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจฒเจˆ เจ‰เจฆเจฏเฉ‹เจ— เจฆเจพ เจฎเจฟเจ†เจฐ, เจฌเฉ‡เจธเจผเฉฑเจ•, เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจฐเจฟเจนเจพ เจนเฉˆ Prometheus + Grafana เจธเฉเจฎเฉ‡เจฒเฅค เจ…เจคเฉ‡ เจ‡เจธ เจธเจŸเฉˆเจ• เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจนเฉฑเจฒเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจธเจพเจงเจจเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจตเฉฑเจกเจพ เจธเจฎเฉ‚เจน เจนเฉˆ: เจชเฉเจฐเฉ‹เจฎเฉ€เจฅเฉ€เจ…เจธ-เจ“เจชเจฐเฉ‡เจŸเจฐ, เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ-เจฎเจฟเจ•เจธเจฟเจจ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจกเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ, เจ—เฉเจฐเจพเจซเจพเจจเจพ-เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ-เจเจชเฅค

grafana-kubernetes-app เจชเจฒเฉฑเจ—เจ‡เจจ เจธเจพเจกเฉ‡ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจฆเจฟเจฒเจšเจธเจช เจตเจฟเจ•เจฒเจช เจœเจพเจชเจฆเจพ เจธเฉ€, เจชเจฐ เจ‡เจน เจ‡เฉฑเจ• เจธเจพเจฒ เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจจเฉ‹เจก-เจเจ•เจธเจชเฉ‹เจฐเจŸเจฐ เจ…เจคเฉ‡ เจ•เจฟเจŠเจฌ-เจธเจŸเฉ‡เจŸ-เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจฆเฉ‡ เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ…เจธเฉ€เจ‚ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ: "เจ•เฉ€ เจธเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเจพ เจซเฉˆเจธเจฒเจพ เจจเจนเฉ€เจ‚ เจฒเฉˆเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ?"

เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจ เจตเจฟเฉฑเจš เจ•เจฟเจนเฉœเฉ‡ เจตเจฟเจšเจพเจฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ:

  • "เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฎเฉˆเจช" เจฆเจพ เจตเจฟเจœเจผเฉ‚เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจ: เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจชเฉ‡เจธเจผเจ•เจพเจฐเฉ€, เจจเจพเจฎ-เจธเจฅเจพเจจเจพเจ‚, เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจฆเฉเจ†เจฐเจพ เจธเจฎเฉ‚เจนเจฌเฉฑเจง ...;
  • "เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ - เจธเจฐเจตเจฟเจธ (+เจชเฉ‹เจฐเจŸ)" เจตเจฐเจ—เฉ‡ เจ•เจจเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฟเจœเจผเฉ‚เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจเฅค
  • เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‹เจกเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจฒเฉฑเจธเจŸเจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเฉฐเจก เจฆเจพ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃเฅค
  • เจ•เจˆ เจธเจฐเฉ‹เจคเจพเจ‚ เจคเฉ‹เจ‚ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจ…เจคเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเจพ เจธเฉฐเจ—เฉเจฐเจนเจฟ: Prometheus เจ…เจคเฉ‡ k8s api เจธเจฐเจตเจฐเฅค
  • เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจญเจพเจ—เจพเจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ (CPU เจธเจฎเจพเจ‚, เจฎเฉˆเจฎเฉ‹เจฐเฉ€, เจกเจฟเจธเจ• เจธเจฌ-เจธเจฟเจธเจŸเจฎ, เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚) เจ…เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจคเจฐเจ• - เจชเฉŒเจกเจพเจ‚ เจฆเฉ€ เจธเจฟเจนเจค-เจธเจฅเจฟเจคเฉ€, เจ‰เจชเจฒเจฌเจง เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ†, เจœเฉ€เจตเจฟเจคเจคเจพ/เจคเจฟเจ†เจฐเจคเจพ เจŸเฉˆเจธเจŸ เจชเจพเจธ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€เฅค

เจญเจพเจ— 1: "Grafana เจชเจฒเฉฑเจ—เจ‡เจจ" เจ•เฉ€ เจนเฉˆ?

เจคเจ•เจจเฉ€เจ•เฉ€ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, Grafana เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจ เจ‡เฉฑเจ• เจ•เฉ‹เจฃ เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ Grafana เจกเฉ‡เจŸเจพ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ (/var/grafana/plugins//dist/module.js) เจ…เจคเฉ‡ เจ‡เฉฑเจ• SystemJS เจฎเฉ‹เจกเฉ€เจŠเจฒ เจตเจœเฉ‹เจ‚ เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจจเจพเจฒ เจนเฉ€ เจ‡เจธ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• plugin.json เจซเจพเจˆเจฒ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจกเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจ เจฌเจพเจฐเฉ‡ เจธเจพเจฐเฉ€ เจฎเฉˆเจŸเจพ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจตเฉ‡: เจจเจพเจฎ, เจธเฉฐเจธเจ•เจฐเจฃ, เจชเจฒเฉฑเจ—เจ‡เจจ เจ•เจฟเจธเจฎ, เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€/เจธเจพเจˆเจŸ/เจฒเจพเจ‡เจธเฉˆเจ‚เจธ, เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚, เจ†เจฆเจฟ เจฆเฉ‡ เจฒเจฟเฉฐเจ•เฅค

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ
module.ts

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ
plugin.json

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจธเจ•เฉเจฐเฉ€เจจเจธเจผเฉŒเจŸ เจตเจฟเฉฑเจš เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจธเฉ€เจ‚ plugin.type = เจเจช เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ Grafana เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจ เจคเจฟเฉฐเจจ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ:

เจชเฉˆเจจเจฒ เจจเฉ‚เฉฐ: เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเฉ€ เจธเจญ เจคเฉ‹เจ‚ เจ†เจฎ เจ•เจฟเจธเจฎ - เจ‡เจน เจ•เจฟเจธเฉ‡ เจตเฉ€ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจฆเฉ€ เจ•เจฒเจชเจจเจพ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉˆเจจเจฒ เจนเฉˆ, เจœเฉ‹ เจตเฉฑเจ–-เจตเฉฑเจ– เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค
เจกเจพเจŸเจพ เจธเจฐเฉ‹เจค: เจชเจฒเฉฑเจ—เจ‡เจจ เจ•เฉเจจเฉˆเจ•เจŸเจฐ เจ•เฉเจ เจกเจพเจŸเจพ เจธเจฐเฉ‹เจค (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, Prometheus-datasource, ClickHouse-datasource, ElasticSearch-datasource)เฅค
เจเจช: เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ Grafana เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ†เจชเจฃเฉ€ เจ–เฉเจฆ เจฆเฉ€ เจซเจฐเฉฐเจŸเจเจ‚เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ, เจ†เจชเจฃเฉ‡ เจ–เฉเจฆ เจฆเฉ‡ html เจชเฉฐเจจเฉ‡ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจกเฉ‡เจŸเจพ เจฆเฉ€ เจ•เจฒเจชเจจเจพ เจ•เจฐเจจ เจฒเจˆ เจกเฉˆเจŸเจพเจธเฉ‹เจฐเจธ เจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจเจ•เจธเฉˆเจธ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค เจจเจพเจฒ เจนเฉ€, เจนเฉ‹เจฐ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจ (เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค, เจชเฉˆเจจเจฒ) เจ…เจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฐเจญเจฐเจคเจพ เจตเจœเฉ‹เจ‚ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ
เจŸเจพเจˆเจช=เจเจช เจฆเฉ‡ เจจเจพเจฒ เจชเจฒเฉฑเจ—เจ‡เจจ เจจเจฟเจฐเจญเจฐเจคเจพ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ.

เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพ เจตเจœเฉ‹เจ‚ JavaScript เจ…เจคเฉ‡ TypeScript เจฆเฉ‹เจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจšเฉเจฃเจฟเจ† เจนเฉˆ)เฅค เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจนเฉˆเจฒเฉ‹-เจตเจฐเจฒเจก เจชเจฒเฉฑเจ—เจ‡เจจ เจฒเจˆ เจคเจฟเจ†เจฐเฉ€เจ†เจ‚ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจฒเจฟเฉฐเจ• เจฒเฉฑเจญเฉ‹: เจ‡เจธ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉ‚เจฐเจต-เจธเจฅเจพเจชเจค เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจฟเจค เจฌเจฟเจฒเจกเจฐเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจฟเฉฑเจš เจธเจŸเจพเจฐเจŸเจฐ-เจชเฉˆเจ• (เจฐเจฟเจเจ•เจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเฉ€ เจ‡เฉฑเจ• เจชเฉเจฐเจฏเฉ‹เจ—เจพเจคเจฎเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจตเฉ€ เจนเฉˆ) เจธเจผเจพเจฎเจฒ เจนเจจเฅค

เจญเจพเจ— 2: เจธเจฅเจพเจจเจ• เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจคเจฟเจ†เจฐ เจ•เจฐเจจเจพ

เจชเจฒเฉฑเจ—เจ‡เจจ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจพเจฐเฉ‡ เจชเฉ‚เจฐเจต-เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เฉ€เจคเฉ‡ เจŸเฉ‚เจฒเจธ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• kubernetes เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ: prometheus, node-exporter, kube-state-metrics, grafana. เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ, เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจ…เจคเฉ‡ เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฅเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจนเฉŒเจŸ-เจฐเฉ€เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจ—เฉเจฐเจพเจซเจพเจจเจพ เจกเฉ‡เจŸเจพ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจฆเฉ€ เจฎเจธเจผเฉ€เจจ เจคเฉ‹เจ‚ เจธเจฟเฉฑเจงเจพ เจฎเจพเจŠเจ‚เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจธเจพเจกเฉ€ เจฐเจพเจ เจตเจฟเฉฑเจš, เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเจพเจฒ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจคเจฐเฉ€เจ•เจพ เจนเฉˆ minikube. เจ…เจ—เจฒเจพ เจ•เจฆเจฎ เจชเฉเจฐเฉ‹เจฎเฉ€เจฅเฉ€เจ…เจธ-เจ“เจชเจฐเฉ‡เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเฉ‹เจฎเฉ€เจฅเฉ€เจ…เจธ + เจ—เฉเจฐเจพเจซเจพเจจเจพ เจธเฉเจฎเฉ‡เจฒ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค IN เจ‡เจน เจฒเฉ‡เจ– เจฎเจฟเจจเฉ€เจ•เจฟเจŠเจฌ 'เจคเฉ‡ เจชเฉเจฐเฉ‹เจฎเฉ€เจฅเฉ€เจ…เจธ-เจ“เจชเจฐเฉ‡เจŸเจฐ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเจพ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจตเจฐเจฃเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจธเจฅเจฟเจฐเจคเจพ เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจธเจฅเจฟเจฐเจคเจพ: เจธเฉฑเจš เจนเฉˆ charts/grafana/values.yaml เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš, เจ†เจชเจฃเฉ€ เจ–เฉเจฆ เจฆเฉ€ PV เจ…เจคเฉ‡ PVC เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ persistence.existingClaim เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจตเจฟเฉฑเจš เจฆเจฟเจ“

เจธเจพเจกเฉ€ เจ…เฉฐเจคเจฟเจฎ เจฎเจฟเจจเฉ€เจ•เจฟเจŠเจฌ เจฒเจพเจ‚เจš เจธเจ•เฉเจฐเจฟเจชเจŸ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ:

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 เจ‡เจ•เจพเจˆเจ†เจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ เจœเจฟเจนเจจเจพเจ‚ เจจเจพเจฒ เจ…เจธเฉ€เจ‚ TypeScript เจ•เจฒเจพเจธเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจพเจ‚เจ—เฉ‡: เจชเฉŒเจก, เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ, เจกเฉˆเจฎเจจเจธเฉˆเฉฑเจŸ, เจธเจŸเฉ‡เจŸเจซเฉเฉฑเจฒเจธเฉˆเฉฑเจŸ, เจจเฉŒเจ•เจฐเฉ€, เจ•เฉเจฐเฉ‹เจจเจœเฉŒเจฌ, เจธเฉ‡เจตเจพ, เจจเฉ‹เจก, เจจเฉ‡เจฎเจธเจชเฉ‡เจธเฅค เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐ เจ‡เฉฑเจ• เจ•เจฒเจพเจธ เจ†เจฎ เจฌเฉ‡เจธ เจฎเจพเจกเจฒ เจ•เจฒเจพเจธ เจคเฉ‹เจ‚ เจตเจฟเจฐเจพเจธเจค เจตเจฟเฉฑเจš เจฎเจฟเจฒเจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ•เฉฐเจธเจŸเจฐเจ•เจŸเจฐ, เจกเจฟเจธเจŸเฉเจฐเจ•เจŸเจฐ, เจฆเจฟเฉฑเจ– เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจ…เจคเฉ‡ เจฌเจฆเจฒเจฃ เจฆเฉ‡ เจขเฉฐเจ—เจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจนเจฐเฉ‡เจ• เจ•เจฒเจพเจธ เจฆเฉ‚เจœเฉ€เจ†เจ‚ เจ‡เจ•เจพเจˆเจ†เจ‚ เจจเจพเจฒ เจจเฉ‡เจธเจŸเจก เจธเจฌเฉฐเจงเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ•เจฟเจธเจฎ เจฆเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ€ เจ‡เจ•เจพเจˆ เจฒเจˆ เจชเฉŒเจกเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€เฅค

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 = [];
   }
}

เจ—เฉˆเจŸเจฐเจพเจ‚ เจ…เจคเฉ‡ เจธเฉ‡เจŸเจฐเจพเจ‚ เจฆเฉ€ เจฎเจฆเจฆ เจจเจพเจฒ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจ…เจคเฉ‡ เจชเฉœเฉเจนเจจเจฏเฉ‹เจ— เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจ‡เจ•เจพเจˆ เจฎเฉˆเจŸเฉเจฐเจฟเจ•เจธ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจœเจพเจ‚ เจธเฉˆเฉฑเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ…เจฒเจพเจ•เฉ‡เจŸเฉ‡เจฌเจฒ cpu เจจเฉ‹เจกเจธ เจฆเฉ€ เจซเจพเจฐเจฎเฉˆเจŸ เจ•เฉ€เจคเฉ€ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ:

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

เจชเฉฐเจจเฉ‡

เจธเจพเจกเฉ‡ เจธเจพเจฐเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจธเจพเจกเฉ‡ pluing.json เจตเจฟเฉฑเจš เจจเจฟเจฐเจญเจฐเจคเจพ เจญเจพเจ— เจตเจฟเฉฑเจš เจตเจฐเจฃเจจ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ:

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจนเจฐเฉ‡เจ• เจชเฉฐเจจเฉ‡ เจฒเจˆ เจฌเจฒเจพเจ• เจตเจฟเฉฑเจš เจธเจพเจจเฉ‚เฉฐ เจชเฉฐเจจเจพ เจจเจพเจฎ เจฆเจฐเจธเจพเจ‰เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ (เจ‡เจธ เจจเฉ‚เฉฐ เจซเจฟเจฐ เจ‡เฉฑเจ• เจธเจฒเฉฑเจ— เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ เจœเจพเจตเฉ‡เจ—เจพ เจœเจฟเจธ เจฆเฉเจ†เจฐเจพ เจ‡เจน เจชเฉฐเจจเจพ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เจ—เจพ); เจ‡เจธ เจชเฉฐเจจเฉ‡ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเจฟเฉฑเจธเฉ‡ เจฆเจพ เจจเจพเจฎ (เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ module.ts เจจเฉ‚เฉฐ เจจเจฟเจฐเจฏเจพเจค เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ); เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ€ เจญเฉ‚เจฎเจฟเจ•เจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจฒเจˆ เจ‡เจธ เจชเฉฐเจจเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ‰เจชเจฒเจฌเจง เจนเฉˆ เจ…เจคเฉ‡ เจธเจพเจˆเจกเจฌเจพเจฐ เจฒเจˆ เจจเฉˆเจตเฉ€เจ—เฉ‡เจธเจผเจจ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚เฅค

เจชเฉฐเจจเฉ‡ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš, เจธเจพเจจเฉ‚เฉฐ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸเจฏเฉ‚เจ†เจฐเจเจฒ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ‰เฉฑเจฅเฉ‡ เจฎเจพเจฐเจ•เจ…เฉฑเจช เจฆเฉ‡ เจจเจพเจฒ html เจซเจพเจˆเจฒ เจฆเจพ เจฎเจพเจฐเจ— เจชเจพเจธ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ, เจจเจฟเจฐเจญเจฐเจคเจพ เจŸเฉ€เจ•เฉ‡ เจฆเฉเจ†เจฐเจพ, เจ…เจธเฉ€เจ‚ 2 เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ•เฉ‹เจฃ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

  • backendSrv - เจ‡เฉฑเจ• เจธเฉ‡เจตเจพ เจœเฉ‹ Grafana API เจธเจฐเจตเจฐ เจจเจพเจฒ เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ;
  • datasourceSrv เจ‡เฉฑเจ• เจธเฉ‡เจตเจพ เจนเฉˆ เจœเฉ‹ เจคเฉเจนเจพเจกเฉ‡ Grafana เจตเจฟเฉฑเจš เจธเจฅเจพเจชเจฟเจค เจธเจพเจฐเฉ‡ เจกเจพเจŸเจพ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเจพเจฒ เจธเจฅเจพเจจเจ• เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, .getAll() เจตเจฟเจงเฉ€ - เจธเจพเจฐเฉ‡ เจ‡เฉฐเจธเจŸเฉŒเจฒ เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ€ เจนเฉˆ; .get() - เจ‡เฉฑเจ• เจ–เจพเจธ เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจตเจธเจคเฉ‚ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค .

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจญเจพเจ— 4: เจกเจพเจŸเจพ เจธเจฐเฉ‹เจค

Grafana เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจนเฉ€ เจชเจฒเฉฑเจ—เจ‡เจจ เจนเฉˆ เจœเฉ‹ เจฌเจพเจ•เฉ€ เจธเจพเจฐเฉ‡ เจนเจจ: เจ‡เจธเจฆเจพ เจ†เจชเจฃเจพ เจเจ‚เจŸเจฐเฉ€ เจชเฉเจ†เจ‡เฉฐเจŸ module.js เจนเฉˆ, เจฎเฉˆเจŸเจพ เจœเจพเจฃเจ•เจพเจฐเฉ€ plugin.json เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจนเฉˆเฅค เจŸเจพเจˆเจช = เจเจช เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจตเจฟเจ•เจธเจฟเจค เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ…เจธเฉ€เจ‚ เจฎเฉŒเจœเฉ‚เจฆเจพ เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจชเฉเจฐเฉ‹เจฎเฉ€เจฅเฉ€เจ…เจธ-เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ) เจ…เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ–เฉเจฆ เจฆเฉ‡ เจฆเฉ‹เจตเจพเจ‚ เจจเจพเจฒ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจธเจฟเฉฑเจงเจพ เจชเจฒเฉฑเจ—เจ‡เจจ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ (dist/datasource/*) เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเจพเจ‚ เจ‡เฉฑเจ• เจจเจฟเจฐเจญเจฐเจคเจพ เจตเจœเฉ‹เจ‚ เจธเจฅเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ เจชเจฒเฉฑเจ—เจ‡เจจ เจ•เฉ‹เจก เจฆเฉ‡ เจจเจพเจฒ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• config.html เจŸเฉˆเจฎเจชเจฒเฉ‡เจŸ เจ…เจคเฉ‡ เจ‡เฉฑเจ• ConfigCtrl เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจนเฉ‹เจฃเจพ เจตเฉ€ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ เจ‡เฉฐเจธเจŸเฉˆเจ‚เจธ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจชเฉฐเจจเฉ‡ เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ, เจœเฉ‹ เจคเฉเจนเจพเจกเฉ‡ เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ เจฆเฉ‡ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจคเจฐเจ• เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

KubeGraf เจชเจฒเฉฑเจ—เจ‡เจจ เจตเจฟเฉฑเจš, เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ เจ‡เฉฑเจ• kubernetes เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจนเฉˆ เจœเฉ‹ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ (เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจ‰เจชเจฒเจฌเจง เจนเฉˆ เจฒเจฟเฉฐเจ•):

  • k8s เจเจชเฉ€เจ†เจˆ-เจธเจฐเจตเจฐ เจคเฉ‹เจ‚ เจกเจพเจŸเจพ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ (เจจเฉ‡เจฎ เจธเจชเฉ‡เจธ, เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ...)
  • เจชเฉเจฐเฉ‹เจฎเฉ€เจฅเฉ€เจ…เจธ-เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ (เจœเฉ‹ เจนเจฐเฉ‡เจ• เจ–เจพเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจฟเฉฑเจš เจšเฉเจฃเจฟเจ† เจ—เจฟเจ† เจนเฉˆ) เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจธเจฅเจฟเจฐ เจชเฉฐเจจเจฟเจ†เจ‚ เจ…เจคเฉ‡ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจกเจพเจ‚ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจœเจตเจพเจฌเจพเจ‚ เจจเฉ‚เฉฐ เจซเจพเจฐเจฎเฉˆเจŸ เจ•เจฐเจจเจพเฅค
  • เจธเจฅเจฟเจฐ เจชเจฒเฉฑเจ—เจ‡เจจ เจชเฉฐเจจเจฟเจ†เจ‚ 'เจคเฉ‡ เจกเจพเจŸเจพ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจเจพ (เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจฐเจฟเจซเจฐเฉˆเจธเจผ เจฆเจฐ เจจเจพเจฒ)เฅค
  • เจ—เฉเจฐเจพเจซเจพเจจเจพ-เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจกเจธ (metriFindQuery() เจตเจฟเจงเฉ€) เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจธเจผเฉ€เจŸ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจเจพ

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

  • เจซเจพเจˆเจจเจฒ 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"};
       })
}

เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจฆเจฟเจฒเจšเจธเจช เจฌเจฟเฉฐเจฆเฉ‚, เจธเจพเจกเฉ€ เจฐเจพเจ เจตเจฟเฉฑเจš, เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจฒเจˆ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจ…เจคเฉ‡ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจฌเจพเจ•เจธ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ, เจ…เจธเฉ€เจ‚ เจ…เฉฐเจคเจฎ เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฒเจˆ เจฌเจฟเจฒเจŸ-เจ‡เจจ เจ—เฉเจฐเจพเจซเจพเจจเจพ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธHttpSettings เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ…เจธเฉ€เจ‚ url เจ…เจคเฉ‡ เจฎเฉ‚เจฒ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ/เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚: เจฒเฉŒเจ—เจ‡เจจ-เจชเจพเจธเจตเจฐเจก, เจœเจพเจ‚ เจ•เจฒเจพเจ‡เฉฐเจŸ-เจธเจฐเจŸ/เจ•เจฒเจพเจ‡เฉฐเจŸ-เจ•เฉเฉฐเจœเฉ€ เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจ•เฉ‡ http เจกเจพเจŸเจพ เจธเจฐเฉ‹เจค เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เฉฑเจ• เจฌเฉ‡เจ…เจฐเจฐ เจŸเฉ‹เจ•เจจ (k8s เจฒเจˆ เจกเฉ€ เจซเฉˆเจ•เจŸเฉ‹ เจธเจŸเฉˆเจ‚เจกเจฐเจก) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจฅเฉ‹เฉœเจพ เจœเจฟเจนเจพ เจŸเจตเฉ€เจ•เจฟเฉฐเจ— เจ•เจฐเจจเจพ เจชเจฟเจ†เฅค

เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจฌเจฟเจฒเจŸ-เจ‡เจจ เจ—เฉเจฐเจพเจซเจพเจจเจพ "เจชเจฒเฉฑเจ—เจ‡เจจ เจฐเฉ‚เจŸเจธ" เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจตเจงเฉ‡เจฐเฉ‡ เจตเฉ‡เจฐเจตเฉ‡ เจ‡เฉฑเจฅเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจค เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจชเฉฐเจจเจพ). เจธเจพเจกเฉ‡ เจกเฉ‡เจŸเจพเจธเฉ‹เจฐเจธ เจฆเฉ€เจ†เจ‚ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจฐเฉ‚เจŸเจฟเฉฐเจ— เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจฆเฉ€ เจ˜เฉ‹เจธเจผเจฃเจพ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจ—เฉเจฐเจพเจซเจพเจจเจพ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจธเจฐเจตเจฐ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจนเจฐเฉ‡เจ• เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจ…เฉฐเจคเจฎ เจฌเจฟเฉฐเจฆเฉ‚ เจฒเจˆ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸเจฟเฉฐเจ— เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจฆเฉ‡ เจจเจพเจฒ เจธเจฟเจฐเจฒเฉ‡เจ– เจœเจพเจ‚ url เจธเฉˆเจŸ เจ•เจฐเจจ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจฒเจˆ เจกเฉ‡เจŸเจพ jsonData เจ…เจคเฉ‡ safeJsonData เจ–เฉ‡เจคเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจฒเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ (เจ‡เจจเจ•เฉเจฐเจฟเจชเจŸเจก เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเจพเจธเจตเจฐเจก เจœเจพเจ‚ เจŸเฉ‹เจ•เจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ)เฅค เจธเจพเจกเฉ‡ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจชเฉเจฐเจธเจผเจจ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ /__proxy/api/v1/namespaces เจซเจพเจฐเจฎ เจฆเฉ‡ url เจจเจพเจฒ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ
เจ…เจงเจฟเจ•เจพเจฐ เจฆเฉ‡ เจจเจพเจฒ /api/v8/เจจเจพเจฎ เจธเจชเฉ‡เจธ: เจฌเฉ‡เจ…เจฐเจฐ เจนเฉˆเจกเจฐเฅค

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, k8s api เจธเจฐเจตเจฐ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจชเฉœเฉเจนเจจ เจฒเจˆ เจชเจนเฉเฉฐเจš เจตเจพเจฒเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจตเจฟเฉฑเจš เจตเฉ€ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจชเจฒเฉฑเจ—เจ‡เจจ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก.

เจญเจพเจ— 5: เจฐเจฟเจฒเฉ€เจœเจผ

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจ‡เฉฑเจ• เจตเจพเจฐ เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเจพ Grafana เจชเจฒเฉฑเจ—เจ‡เจจ เจฒเจฟเจ– เจฒเฉˆเจ‚เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจœเจจเจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจ•เจฐเจตเจพเจ‰เจฃเจพ เจšเจพเจนเฉ‹เจ—เฉ‡เฅค Grafana เจตเจฟเฉฑเจš เจ‡เจน เจ‡เฉฑเจฅเฉ‡ เจ‰เจชเจฒเจฌเจง เจชเจฒเฉฑเจ—เจ‡เจจเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจนเฉˆ grafana.com/grafana/plugins

เจคเฉเจนเจพเจกเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจค เจธเจŸเฉ‹เจฐ 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเฉ‹เจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• PR เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ‡เจน เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€repo.json เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจœเฉ‹เฉœ เจ•เฉ‡:

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจœเจฟเฉฑเจฅเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจคเฉเจนเจพเจกเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจนเฉˆ, url เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฆเจพ เจ‡เฉฑเจ• เจฒเจฟเฉฐเจ• เจนเฉˆ, เจ…เจคเฉ‡ เจ•เจฎเจฟเจŸ เจ•เจฎเจฟเจŸ เจฆเจพ เจนเฉˆเจธเจผ เจนเฉˆ เจœเจฟเจธ เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจ‡เฉฑเจ• เจ–เจพเจธ เจธเฉฐเจธเจ•เจฐเจฃ เจ‰เจชเจฒเจฌเจง เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจ…เจคเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ 'เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจผเจพเจจเจฆเจพเจฐ เจคเจธเจตเฉ€เจฐ เจฆเฉ‡เจ–เฉ‹เจ—เฉ‡ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ:

เจ—เฉเจฐเจพเจซเจพเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจตเจฟเจ•เจพเจธ: เจตเฉฑเจกเฉ‡ เจธเจผเจพเจŸเจธ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจกเฉ‡เจŸเจพ เจคเฉเจนเจพเจกเฉ‡ Readme.md, Changelog.md เจ…เจคเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจ เจตเฉ‡เจฐเจตเฉ‡ เจตเจพเจฒเฉ€ plugin.json เจซเจพเจˆเจฒ เจคเฉ‹เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค

เจญเจพเจ— 6: เจธเจฟเฉฑเจŸเฉ‡ เจฆเฉ€ เจฌเจœเจพเจ

เจ…เจธเฉ€เจ‚ เจฐเฉ€เจฒเฉ€เจœเจผ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจพเจกเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจ เจจเฉ‚เฉฐ เจตเจฟเจ•เจธเจค เจ•เจฐเจจเจพ เจฌเฉฐเจฆ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ. เจ…เจคเฉ‡ เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจ•เจฒเฉฑเจธเจŸเจฐ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ€ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจจ, UX เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจจเจตเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจชเฉ‡เจธเจผ เจ•เจฐเจจ, เจ…เจคเฉ‡ เจธเจพเจกเฉ‡ เจ—เฉเจฐเจพเจนเจ•เจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ…เจคเฉ‡ GitHub (เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ›เฉฑเจกเจฆเฉ‡ เจนเฉ‹) เจฆเฉ‹เจตเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจชเจฒเฉฑเจ—เจ‡เจจ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจ เจซเฉ€เจกเจฌเฉˆเจ• เจฆเฉ€ เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€ เจฎเจพเจคเจฐเจพ เจตเจฟเฉฑเจš เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค เจคเฉเจนเจพเจกเจพ เจฎเฉเฉฑเจฆเจพ เจœเจพเจ‚ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€, เจฎเฉˆเจ‚ เจฌเจนเฉเจค เจ–เฉเจธเจผ เจนเฉ‹เจตเจพเจ‚เจ—เจพ :)

เจ…เจธเฉ€เจ‚ เจ‰เจฎเฉ€เจฆ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เจน เจฒเฉ‡เจ– เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ—เฉเจฐเจพเจซเจพเจจเจพ เจตเจฐเจ—เฉ‡ เจธเจผเจพเจจเจฆเจพเจฐ เจŸเฉ‚เจฒ เจจเฉ‚เฉฐ เจธเจฎเจเจฃ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡, เจธเจผเจพเจ‡เจฆ, เจ†เจชเจฃเฉ€ เจ–เฉเจฆ เจฆเฉ€ เจชเจฒเฉฑเจ—เจ‡เจจ เจฒเจฟเจ–เฉ‹.

เจคเฉเจนเจพเจกเจพ เจงเฉฐเจจเจตเจพเจฆ!)

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹