Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕

рдирдорд╕реНрддреЗ рд╕рдмреИ! рдХреЗрд╣реА рдорд╣рд┐рдирд╛ рдЕрдШрд┐, рд╣рд╛рдореАрд▓реЗ рдЙрддреНрдкрд╛рджрдирдорд╛ рд╣рд╛рдореНрд░реЛ рдирдпрд╛рдБ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реБрд░реБ рдЧрд░реНтАНрдпреМрдВ - kubernetes рдирд┐рдЧрд░рд╛рдиреАрдХреЛ рд▓рд╛рдЧрд┐ Grafana рдкреНрд▓рдЧрдЗрди, рдЬрд╕рд▓рд╛рдИ рд╣рд╛рдореАрд▓реЗ рднрдирд┐рдиреНрдЫред DevOpsProdigy KubeGrafред рдкреНрд▓рдЧрдЗрди рд╕реНрд░реЛрдд рдХреЛрдб рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫ GitHub рдорд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрдгреНрдбрд╛рд░ред рд░ рдпрд╕ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореА рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдХрд╕рд░реА рдкреНрд▓рдЧрдЗрди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдпреМрдВ, рд╣рд╛рдореАрд▓реЗ рдХреБрди рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ рд░ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдХреНрд░рдордорд╛ рд╣рд╛рдореАрд▓реЗ рдХрд╕реНрддрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рд╛рдордирд╛ рдЧрд░реНрдпреМрдВ рднрдиреНрдиреЗ рдХрдерд╛ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред рдЬрд╛рдФрдВ!

рднрд╛рдЧ 0 - рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ: рд╣рд╛рдореА рдХрд╕рд░реА рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛ рдкреБрдЧреНрдпреМрдВ?

Grafan рдХреЛ рд▓рд╛рдЧреА рд╣рд╛рдореНрд░реЛ рдЖрдлреНрдиреИ рдкреНрд▓рдЧрдЗрди рд▓реЗрдЦреНрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рдВрдпреЛрдЧрд╡рд╢ рд╣рд╛рдореАрд▓рд╛рдИ рдЖрдпреЛред рд╣рд╛рдореНрд░реЛ рдХрдореНрдкрдиреАрд▓реЗ 10 рд╡рд░реНрд╖ рднрдиреНрджрд╛ рдмрдвреА рд╕рдордп рджреЗрдЦрд┐ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░рд╣рд░реБ рдХреЛ рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реБ рдХреЛ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫред рдпрд╕ рд╕рдордпрдорд╛, рд╣рд╛рдореАрд▓реЗ рдзреЗрд░реИ рдорд╛рддреНрд░рд╛рдорд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛, рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдХреЗрд╕рд╣рд░реВ, рд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдЧрдорди рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЕрдиреБрднрд╡ рд╕рдЩреНрдХрд▓рди рдЧрд░реЗрдХрд╛ рдЫреМрдВред рд░ рдХреЗрд╣рд┐ рдмрд┐рдиреНрджреБрдорд╛ рд╣рд╛рдореАрд▓реЗ рдЖрдлреИрд▓рд╛рдИ рд╕реЛрдзреНрдпреМрдВ: "рдХреЗ рддреНрдпрд╣рд╛рдБ Kubernetes рдХреЛ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЬрд╛рджреБрдИ рдЙрдкрдХрд░рдг рдЫ, рддрд╛рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рднрдиреНрдЫрдиреН, "рдпрд╕рд▓рд╛рдИ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН"?"ред рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ + рдЧреНрд░рд╛рдлрд╛рдирд╛ рд╕рдВрдпреЛрдЬрдиред рд░ рдпрд╕ рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдирдХреЛ рд░реВрдкрдорд╛, рддреНрдпрд╣рд╛рдБ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕реЗрдЯ рдЫ: рдкреНрд░реЛрдореЗрдерд┐рдпрд╕-рдЕрдкрд░реЗрдЯрд░, kubernetes-mixin рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрд╣рд░реВрдХреЛ рд╕реЗрдЯ, grafana-kubernetes-appред

grafana-kubernetes-app рдкреНрд▓рдЧрдЗрди рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рд╡рд┐рдХрд▓реНрдк рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдереНрдпреЛ, рддрд░ рдпреЛ рдПрдХ рд╡рд░реНрд╖ рднрдиреНрджрд╛ рдмрдвреАрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерд┐рдд рдЫреИрди рд░, рдердк рд░реВрдкрдорд╛, рдиреЛрдб-рдирд┐рд░реНрдпрд╛рддрдХрд░реНрддрд╛ рд░ kube-state-metrics рдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрджреИрдиред рд░ рдХреЗрд╣реА рдмрд┐рдиреНрджреБрдорд╛ рд╣рд╛рдореАрд▓реЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВ: "рдХреЗ рд╣рд╛рдореАрд▓реЗ рдЖрдлреНрдиреИ рдирд┐рд░реНрдгрдп рд▓рд┐рдиреБ рд╣реБрдБрджреИрди?"

рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдкреНрд▓рдЧрдЗрдирдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдХрд╛ рд╡рд┐рдЪрд╛рд░рд╣рд░реВ:

  • "рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирдХреНрд╕рд╛" рдХреЛ рджреГрд╢реНрдпрд╛рд╡рд▓реЛрдХрди: рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рд╕реНрддреБрддрд┐, рдиреЗрдорд╕реНрдкреЗрд╕, рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣рдмрджреНрдз ...;
  • "рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ - рд╕реЗрд╡рд╛ (+рдкреЛрд░реНрдЯрд╣рд░реВ)" рдЬрд╕реНрддрд╛ рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рджреГрд╢реНрдпред
  • рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВрдорд╛ рдХреНрд▓рд╕реНрдЯрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╡рд┐рддрд░рдгрдХреЛ рджреГрд╢реНрдпред
  • рдзреЗрд░реИ рд╕реНрд░реЛрддрд╣рд░реБрдмрд╛рдЯ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрдЧреНрд░рд╣: Prometheus рд░ k8s api рд╕рд░реНрднрд░ред
  • рджреБрд╡реИ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рднрд╛рдЧрдХреЛ рдЕрдиреБрдЧрдорди (CPU рд╕рдордп, рдореЗрдореЛрд░реА, рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо, рдиреЗрдЯрд╡рд░реНрдХрдХреЛ рдкреНрд░рдпреЛрдЧ) рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрд░реНрдХ - рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕реНрдерд┐рддрд┐ рдкреЛрдбрд╣рд░реВ, рдЙрдкрд▓рдмреНрдз рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛, рдЬреАрд╡рдиреНрддрддрд╛/рддрдпрд╛рд░реА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реАред

рднрд╛рдЧ 1: "Grafana рдкреНрд▓рдЧрдЗрди" рдХреЗ рд╣реЛ?

рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, Grafana рдХреЛ рд▓рд╛рдЧреА рдкреНрд▓рдЧрдЗрди рдПрдХ рдХреЛрдгреАрдп рдирд┐рдпрдиреНрддреНрд░рдХ рд╣реЛ, рдЬреБрди Grafana рдбрд╛рдЯрд╛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ (/var/grafana/plugins/ /dist/module.js) рд░ SystemJS рдореЛрдбреНрдпреБрд▓рдХреЛ рд░реВрдкрдорд╛ рд▓реЛрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рд╕рд╛рдереИ рдпрд╕ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рддрдкрд╛рдИрдВрдХреЛ рдкреНрд▓рдЧрдЗрдирдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕рдмреИ рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ plugin.json рдлрд╛рдЗрд▓ рд╣реБрдиреБрдкрд░реНрдЫ: рдирд╛рдо, рд╕рдВрд╕реНрдХрд░рдг, рдкреНрд▓рдЧрдЗрди рдкреНрд░рдХрд╛рд░, рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА/рд╕рд╛рдЗрдЯ/рд▓рд╛рдЗрд╕реЗрдиреНрд╕, рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ, рд░ рдпрд╕реНрддреИ рдЕрдиреНрдпред

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕
module.ts

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕
plugin.json

рддрдкрд╛рдИрд▓реЗ рд╕реНрдХреНрд░рд┐рдирд╕рдЯрдорд╛ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╣рд╛рдореАрд▓реЗ plugin.type = app рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдХрд┐рдирднрдиреЗ Grafana рдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рддреАрди рдкреНрд░рдХрд╛рд░рдХрд╛ рд╣реБрди рд╕рдХреНрдЫрдиреН:

рдкреНрдпрд╛рдирд▓: рдкреНрд▓рдЧрдЗрдирдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ - рдпреЛ рд╡рд┐рднрд┐рдиреНрди рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗ рдХреБрдиреИ рдкрдирд┐ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдиреЗ рдкреНрдпрд╛рдирд▓ рд╣реЛред
рдбрд╛рдЯрд╛ рд╕реНрд░реЛрдд: рдХреЗрд╣реА рдбрд╛рдЯрд╛ рд╕реНрд░реЛрддрдорд╛ рдкреНрд▓рдЧрдЗрди рдХрдиреЗрдХреНрдЯрд░ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕-рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд, рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕-рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд, рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд╕рд░реНрдЪ-рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд)ред
рдЕрдиреБрдкреНрд░рдпреЛрдЧ: рдПрдЙрдЯрд╛ рдкреНрд▓рдЧрдЗрди рдЬрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ Grafana рднрд┐рддреНрд░ рддрдкрд╛рдЗрдБрдХреЛ рдЖрдлреНрдиреИ рдлреНрд░рдиреНрдЯрдПрдиреНрдб рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди, рддрдкрд╛рдЗрдБрдХреЛ рдЖрдлреНрдиреИ html рдкреГрд╖реНрдард╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рд╡рд┐рднрд┐рдиреНрди рдбрд╛рдЯрд╛ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдбрд╛рдЯрд╛ рд╕реНрд░реЛрдд рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╕рд╛рдереИ, рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░рдХрд╛ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ (рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд, рдкреНрдпрд╛рдирд▓) рд░ рд╡рд┐рднрд┐рдиреНрди рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрд╣рд░реВ рдирд┐рд░реНрднрд░рддрд╛рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕
рдЯрд╛рдЗрдк=рдПрдкрдХреЛ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдкреНрд▓рдЧрдЗрди рдирд┐рд░реНрднрд░рддрд╛.

рддрдкрд╛рдЗрдБ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рдХреЛ рд░реВрдкрдорд╛ JavaScript рд░ TypeScript рджреБрд╡реИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рд░реЛрдЬреЗрдХрд╛ рдЫреМрдВ)ред рддрдкрд╛рдИрдВрд▓реЗ рдЧрд░реНрди рд╕рдХреНрдиреЗ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдХрд╛рд░рдХреЛ рд╣реЗрд▓реЛ-рд╡рд░реНрд▓реНрдб рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░реА рд▓рд┐рдЩреНрдХ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН: рдпрд╕ рднрдгреНрдбрд╛рд░рдорд╛ рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрд┐рдд рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХрд╛ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рд╣рд░реВрд╕рдБрдЧ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рд╕реНрдЯрд╛рд░реНрдЯрд░-рдкреНрдпрд╛рдХрд╣рд░реВ рдЫрдиреН (рддреНрдпрд╣рд╛рдБ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ рдкреНрд▓рдЧрдЗрдирдХреЛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг рдкрдирд┐ рдЫ)ред

рднрд╛рдЧ 2: рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдЧрд░реНрджреИ

рдкреНрд▓рдЧрдЗрдирдорд╛ рдХрд╛рдо рдЧрд░реНрди, рд╣рд╛рдореАрд▓рд╛рдИ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рд╕рдмреИ рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрд┐рдд рдЙрдкрдХрд░рдгрд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдЪрд╛рд╣рд┐рдиреНрдЫ: prometheus, node-exporter, kube-state-metrics, grafanaред рд╡рд╛рддрд╛рд╡рд░рдг рдЫрд┐рдЯреЛ, рд╕рдЬрд┐рд▓реИ рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рд╕реЗрдЯ рдЕрдк рдЧрд░рд┐рдиреБрдкрд░реНрдЫ, рд░ рд╣рдЯ-рд░рд┐рд▓реЛрдб рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди, рдЧреНрд░рд╛рдлрдирд╛ рдбрд╛рдЯрд╛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рдореЗрд╕рд┐рдирдмрд╛рдЯ рд╕реАрдзреИ рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫред

рд╣рд╛рдореНрд░реЛ рд╡рд┐рдЪрд╛рд░рдорд╛, kubernetes рд╕рдБрдЧ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░рд┐рдХрд╛ рд╣реЛ minikubeред рдЕрд░реНрдХреЛ рдЪрд░рдг рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕-рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ + рдЧреНрд░рд╛рдлрд╛рдирд╛ рд╕рдВрдпреЛрдЬрди рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБ рд╣реЛред IN рдпреЛ рд▓реЗрдЦ minikube рдорд╛ prometheus-рдЕрдкрд░реЗрдЯрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░рдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред рджреГрдврддрд╛ рд╕рдХреНрд╖рдо рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╕реЗрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫ рджреГрдврддрд╛: рд╕рддреНрдп рдЪрд╛рд░реНрдЯ/grafana/values.yaml рдлрд╛рдЗрд▓рдорд╛, рддрдкрд╛рдИрдВрдХреЛ рдЖрдлреНрдиреИ PV рд░ PVC рдердкреНрдиреБрд╣реЛрд╕реН рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ persistence.existingClaim рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╣рд╛рдореНрд░реЛ рдЕрдиреНрддрд┐рдо 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: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдХрд╛рд╕

рд╡рд╕реНрддреБ рдореЛрдбреЗрд▓

рдкреНрд▓рдЧрдЗрди рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рддрдпрд╛рд░реАрдорд╛, рд╣рд╛рдореАрд▓реЗ TypeScript рд╡рд░реНрдЧрд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдмреИ рдЖрдзрд╛рд░рднреВрдд Kubernetes рдирд┐рдХрд╛рдпрд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВ: pod, deployment, daemonset, statefulset, job, cronjob, service, node, namespaceред рдпреА рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧрд╣рд░реВ рд╕рд╛рдЭрд╛ рдЖрдзрд╛рд░ рдореЛрдбреЗрд▓ рд╡рд░реНрдЧрдмрд╛рдЯ тАЛтАЛрдкреНрд░рд╛рдкреНрдд рд╣реБрдиреНрдЫрдиреН, рдЬрд╕рд▓реЗ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░, рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░, рджреГрд╢реНрдпрддрд╛ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреЗ рд░ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫред рдкреНрд░рддреНрдпреЗрдХ рдХрдХреНрд╖рд╛рд▓реЗ рдЕрдиреНрдп рдирд┐рдХрд╛рдпрд╣рд░реВрд╕рдБрдЧ рдиреЗрд╕реНрдЯреЗрдб рд╕рдореНрдмрдиреНрдзрд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░рдХрд╛рд░рдХреЛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рдЗрдХрд╛рдИрдХреЛ рд▓рд╛рдЧрд┐ рдкреЛрдбрд╣рд░реВрдХреЛ рд╕реВрдЪреАред

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 рдорд╛ рдирд┐рд░реНрднрд░рддрд╛ рдЦрдгреНрдбрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ:

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕

рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрдардХреЛ рд▓рд╛рдЧрд┐ рдмреНрд▓рдХрдорд╛ рд╣рд╛рдореАрд▓реЗ рдкреГрд╖реНрда рдирд╛рдо рд╕рдВрдХреЗрдд рдЧрд░реНрдиреБрдкрд░реНрдЫ (рдпрд╕рд▓рд╛рдИ рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдкреГрд╖реНрда рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рд╣реБрдиреЗ рд╕реНрд▓рдЧрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдиреЗрдЫ); рдпрд╕ рдкреГрд╖реНрдардХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдШрдЯрдХрдХреЛ рдирд╛рдо (рдШрдЯрдХрд╣рд░реВрдХреЛ рд╕реВрдЪреА module.ts рдорд╛ рдирд┐рд░реНрдпрд╛рдд рдЧрд░рд┐рдПрдХреЛ рдЫ); рдпреЛ рдкреГрд╖реНрдардорд╛ рдЙрдкрд▓рдмреНрдз рд░рд╣реЗрдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рднреВрдорд┐рдХрд╛ рд░ рд╕рд╛рдЗрдбрдмрд╛рд░рдХрд╛ рд▓рд╛рдЧрд┐ рдиреЗрднрд┐рдЧреЗрд╕рди рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╕рдВрдХреЗрдд рдЧрд░реНрджреИред

рдкреГрд╖реНрдардХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрдорд╛, рд╣рд╛рдореАрд▓реЗ templateUrl рд╕реЗрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫ, рддреНрдпрд╣рд╛рдБ рдорд╛рд░реНрдХрдЕрдкрдХреЛ рд╕рд╛рде html рдлрд╛рдЗрд▓рдХреЛ рдмрд╛рдЯреЛ рдкрд╛рд╕ рдЧрд░реНрджреИред рдирд┐рдпрдиреНрддреНрд░рдХ рднрд┐рддреНрд░, рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдорд╛рд░реНрдлрдд, рд╣рд╛рдореА 2 рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХреЛрдгреАрдп рд╕реЗрд╡рд╛рд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:

  • backendSrv - Grafana API рд╕рд░реНрднрд░рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗ рд╕реЗрд╡рд╛;
  • datasourceSrv - рдПрдХ рд╕реЗрд╡рд╛ рдЬрд╕рд▓реЗ рддрдкрд╛рдЗрдБрдХреЛ Grafana рдорд╛ рд╕реНрдерд╛рдкрд┐рдд рд╕рдмреИ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрд╣рд░реБ рд╕рдВрдЧ рд╕реНрдерд╛рдиреАрдп рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ (рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, .getAll() рд╡рд┐рдзрд┐ - рд╕рдмреИ рд╕реНрдерд╛рдкрд┐рдд рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрд╣рд░реБ рдХреЛ рдПрдХ рд╕реВрдЪреА рдлрд░реНрдХрд╛рдЙрдБрдЫ; .get( ) - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрдХреЛ рдЙрджрд╛рд╣рд░рдг рд╡рд╕реНрддреБ рдлрд░реНрдХрд╛рдЙрдБрдЫред

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕

рднрд╛рдЧ 4: рдбрд╛рдЯрд╛ рд╕реНрд░реЛрдд

Grafana рдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, рдбреЗрдЯрд╛рд╕реНрд░реЛрдд рдЕрдиреНрдп рд╕рдмреИ рдЬрд╕реНрддреИ рдареНрдпрд╛рдХреНрдХреИ рдЙрд╕реНрддреИ рдкреНрд▓рдЧрдЗрди рд╣реЛ: рдпрд╕рдХреЛ рдЖрдлреНрдиреИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдиреНрджреБ module.js рдЫ, рддреНрдпрд╣рд╛рдБ рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА plugin.json рднрдПрдХреЛ рдлрд╛рдЗрд▓ рдЫред рдЯрд╛рдЗрдк = рдПрдкрдХреЛ рд╕рд╛рде рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджрд╛, рд╣рд╛рдореА рджреБрдмреИ рдЕрд╡рд╕реНрдерд┐рдд рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрд╣рд░реВ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕-рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд) рд░ рд╣рд╛рдореНрд░реЛ рдЖрдлреНрдиреИрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рдЬреБрди рд╣рд╛рдореА рд╕рд┐рдзреИ рдкреНрд▓рдЧрдЗрди рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА (dist/datasource/*) рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рд╡рд╛ рдирд┐рд░реНрднрд░рддрд╛рдХреЛ рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдбрд╛рдЯрд╛ рд╕реНрд░реЛрдд рдкреНрд▓рдЧрдЗрди рдХреЛрдбрдХреЛ рд╕рд╛рде рдЖрдЙрдБрдЫред config.html рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд░ ConfigCtrl рдирд┐рдпрдиреНрддреНрд░рдХ рд╣реБрдиреБ рдкрдирд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬреБрди рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдЙрджрд╛рд╣рд░рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреГрд╖реНрда рд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдирд┐рдпрдиреНрддреНрд░рдХрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдЗрдБрдХреЛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрдХреЛ рддрд░реНрдХ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред

KubeGraf рдкреНрд▓рдЧрдЗрдирдорд╛, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕рдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, рдбреЗрдЯрд╛рд╕реНрд░реЛрдд рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рдЬрд╕рд▓реЗ рдирд┐рдореНрди рдХреНрд╖рдорддрд╛рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ (рд╕реНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рдЫред рд▓рд┐рдЩреНрдХ):

  • k8s рдПрдкреАрдЖрдИ-рд╕рд░реНрднрд░рдмрд╛рдЯ рдбрд╛рдЯрд╛ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ (рдиреЗрдорд╕реНрдкреЗрд╕, рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ...)
  • prometheus-datasource рдорд╛ рдкреНрд░реЛрдХреНрд╕реА рдЕрдиреБрд░реЛрдзрд╣рд░реВ (рдЬреБрди рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрди рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдЫ) рд░ рд╕реНрдерд┐рд░ рдкреГрд╖реНрдард╣рд░реВ рд░ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрд╣рд░реВрдорд╛ рдбреЗрдЯрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдлрд░реНрдореНрдпрд╛рдЯ рдЧрд░реНрдиреЗред
  • рд╕реНрдерд┐рд░ рдкреНрд▓рдЧрдЗрди рдкреГрд╖реНрдард╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ рдЕрдкрдбреЗрдЯ рдЧрд░реНрджреИ (рд╕реЗрдЯ рд░рд┐рдлреНрд░реЗрд╕ рджрд░рдХреЛ рд╕рд╛рде)ред
  • grafana-рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрд╣рд░реВ (metriFindQuery() рд╡рд┐рдзрд┐) рдорд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд╛рдирд╛ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рдкреНрд░рд╢реНрдирд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджреИ

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"};
       })
}

рдПрдЙрдЯрд╛ рдЫреБрдЯреНрдЯреИ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдмрд┐рдиреНрджреБ, рд╣рд╛рдореНрд░реЛ рд╡рд┐рдЪрд╛рд░рдорд╛, рдбрд╛рдЯрд╛ рд╕реНрд░реЛрддрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рдВрдпрдиреНрддреНрд░рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдмрд╛рдХрд╕рдХреЛ рдмрд╛рд╣рд┐рд░, рд╣рд╛рдореА рдЕрдиреНрддрд┐рдо рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрдорд╛ рдкрд╣реБрдБрдЪ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрдорд┐рдд Grafana рдХрдореНрдкреЛрдиреЗрдиреНрдЯ datasourceHttpSettings рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпреЛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА url рд░ рдЖрдзрд╛рд░рднреВрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг/рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗрдЯрд┐рдЩрд╣рд░реВ: login-password, рд╡рд╛ client-cert/client-key рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрд░ http рдбрд╛рдЯрд╛ рд╕реНрд░реЛрддрдорд╛ рдкрд╣реБрдБрдЪ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдмреЗрдпрд░рд░ рдЯреЛрдХрди (k8s рдХреЛ рд▓рд╛рдЧрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ) рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд╣реБрдБрдЪ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рдереЛрд░реИ рдЯреНрд╡реАрдХрд┐рдВрдЧ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛред

рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди, рддрдкрд╛рдЗрдБ рдирд┐рд░реНрдорд┐рдд Grafana "рдкреНрд▓рдЧрдЗрди рдорд╛рд░реНрдЧ" рд╕рдВрдпрдиреНрддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдердк рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рдЧрдЬрд╛рдд рдкреГрд╖реНрда)ред рд╣рд╛рдореНрд░реЛ рдбреЗрдЯрд╛рд╕реНрд░реЛрддрдХреЛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛, рд╣рд╛рдореА рд░рд╛рдЙрдЯрд┐рдВрдЧ рдирд┐рдпрдорд╣рд░реВрдХреЛ рд╕реЗрдЯ рдШреЛрд╖рдгрд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рдЬреБрди рдЧреНрд░рд╛рдлрд╛рдирд╛ рдкреНрд░реЛрдХреНрд╕реА рд╕рд░реНрднрд░рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреЗрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрдХреЛ рд▓рд╛рдЧрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧрдХреЛ рд╕рдореНрднрд╛рд╡рдирд╛рдХреЛ рд╕рд╛рде рд╣реЗрдбрд░ рд╡рд╛ url рд╕реЗрдЯ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ, рдбреЗрдЯрд╛ рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ jsonData рд░ safeJsonData рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдмрд╛рдЯ рд▓рд┐рди рд╕рдХрд┐рдиреНрдЫ (рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдлрд╛рд░рдордорд╛ рдкрд╛рд╕рд╡рд░реНрдб рд╡рд╛ рдЯреЛрдХрдирд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐)ред рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рдкреНрд░рд╢реНрдирд╣рд░реВ рдЬрд╕реНрддреИ /__proxy/api/v1/namespaces рдлрд╛рд░рдордХреЛ url рдорд╛ рдкреНрд░реЛрдХреНрд╕реА рд╣реБрдиреЗрдЫ
рдкреНрд░рд╛рдзрд┐рдХрд░рдгрдХреЛ рд╕рд╛рде /api/v8/namespaces: Bearer рд╣реЗрдбрд░ред

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛, k8s рдПрдкреАрдЖрдИ рд╕рд░реНрднрд░рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╣рд╛рдореАрд▓рд╛рдИ рдкрдвреНрди рдорд╛рддреНрд░ рдкрд╣реБрдБрдЪ рднрдПрдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ, рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдХрдЯ рд╣реБрдиреНрдЫ рдЬреБрди рддрдкрд╛рдИрдВрд▓реЗ рдкрдирд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкреНрд▓рдЧрдЗрди рд╕реНрд░реЛрдд рдХреЛрдб.

рднрд╛рдЧ 5: рд░рд┐рд▓реАрдЬ

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕

рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреИ Grafana рдкреНрд▓рдЧрдЗрди рд▓реЗрдЦреНрдиреБрднрдПрдкрдЫрд┐, рддрдкрд╛рдИрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рдпрд╕рд▓рд╛рдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдЙрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫред Grafana рдорд╛ рдпреЛ рдЙрдкрд▓рдмреНрдз рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛ grafana.com/grafana/plugins

рддрдкрд╛рдИрдВрдХреЛ рдкреНрд▓рдЧрдЗрди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрдЯреЛрд░рдорд╛ рдЙрдкрд▓рдмреНрдз рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ PR рдЗрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдпреЛ рднрдгреНрдбрд╛рд░repo.json рдлрд╛рдЗрд▓рдорд╛ рдпрд╕реНрддреЛ рд╕рд╛рдордЧреНрд░реА рдердкреЗрд░:

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕

рдЬрд╣рд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рддрдкрд╛рдИрдХреЛ рдкреНрд▓рдЧрдЗрдирдХреЛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ, url рднрдгреНрдбрд╛рд░рдХреЛ рд▓рд┐рдЩреНрдХ рд╣реЛ, рд░ рдХрдорд┐рдЯ рднрдиреЗрдХреЛ рдХрдорд┐рдЯрдХреЛ рд╣реНрдпрд╛рд╕ рд╣реЛ рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрдирдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрд▓рдмреНрдз рд╣реБрдиреЗрдЫред

рд░ рдЖрдЙрдЯрдкреБрдЯрдорд╛ рддрдкрд╛рдИрд▓реЗ рдПрдЙрдЯрд╛ рдЕрджреНрднреБрдд рддрд╕реНрд╡реАрд░ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ рдЬрд╕реНрддреИ:

Grafana рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╛рд╕: рдареВрд▓реЛ рд╢рдЯ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕

рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдбреЗрдЯрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рддрдкрд╛рдЗрдБрдХреЛ Readme.md, Changelog.md рд░ рдкреНрд▓рдЧрдЗрди рд╡рд┐рд╡рд░рдг рд╕рд╣рд┐рддрдХреЛ plugin.json рдлрд╛рдЗрд▓рдмрд╛рдЯ рд▓рд┐рдЗрдиреЗрдЫред

рднрд╛рдЧ 6: рдирд┐рд╖реНрдХрд░реНрд╖рдХреЛ рд╕рдЯреНрдЯрд╛

рд╣рд╛рдореАрд▓реЗ рд░рд┐рд▓реАрдЬ рдкрдЫрд┐ рд╣рд╛рдореНрд░реЛ рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рд░реЛрдХреЗрдиреМрдВред рд░ рдЕрдм рд╣рд╛рдореА рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВрдХреЛ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧрдХреЛ рд╕рд╣реА рд░реВрдкрдорд╛ рдЕрдиреБрдЧрдорди рдЧрд░реНрдиреЗ, UX рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрдиреЗ, рд░ рд╣рд╛рдореНрд░рд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВ рд░ GitHub рдорд╛ рдорд╛рдирд┐рд╕рд╣рд░реВрдмрд╛рдЯ (рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЫреЛрдбреНрдиреБрднрдпреЛ рднрдиреЗ) рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдкрдЫрд┐ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рдареВрд▓реЛ рдорд╛рддреНрд░рд╛рдорд╛ рд░реНрдпрд╛рдХрд┐рдВрдЧрдорд╛ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВред рддрдкрд╛рдИрдВрдХреЛ рдореБрджреНрджрд╛ рд╡рд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз, рдо рдзреЗрд░реИ рдЦреБрд╕реА рд╣реБрдиреЗрдЫреБ :)

рд╣рд╛рдореА рдЖрд╢рд╛ рдЧрд░реНрдЫреМрдВ рдХрд┐ рдпрд╕ рд▓реЗрдЦрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ Grafana рдЬрд╕реНрддрд╛ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рдмреБрдЭреНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ рд░, рд╕рд╛рдпрдж, рдЖрдлреНрдиреИ рдкреНрд▓рдЧрдЗрди рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред

рдзрдиреНрдпрд╡рд╛рдж!)

рд╕реНрд░реЛрдд: www.habr.com

DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрднрд░рд╣рд░реВ рднрдПрдХрд╛ рд╕рд╛рдЗрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рднрд░рдкрд░реНрджреЛ рд╣реЛрд╕реНрдЯрд┐рдЩ рдЦрд░рд┐рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН ЁЯФе DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрднрд░рд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рднрд░рдкрд░реНрджреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдЩ рдХрд┐рдиреНрдиреБрд╣реЛрд╕реН | ProHoster