Развој Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° Grafana: ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ снимки

Π—Π΄Ρ€Π°Π²ΠΎ Π½Π° ситС! ΠŸΡ€Π΅Π΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ мСсСци Π³ΠΎ лансиравмС Π½Π°ΡˆΠΈΠΎΡ‚ Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π²ΠΎ производство - ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ Grafana Π·Π° слСдСњС ΠΊΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚ΠΈ, кој Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΠΎΠ²ΠΌΠ΅ DevOpsProdigy KubeGraf. Π˜Π·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ Π΅ достапСн Π½Π° јавно ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Π½Π° GitHub. И Π²ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° сакамС Π΄Π° ја сподСлимС со вас ΠΏΡ€ΠΈΠΊΠ°Π·Π½Π°Ρ‚Π° Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Π³ΠΎ создадовмС ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚, ΠΊΠΎΠΈ Π°Π»Π°Ρ‚ΠΊΠΈ Π³ΠΈ користСвмС ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ стапици Π½Π°ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ Π²ΠΎ Ρ‚Π΅ΠΊΠΎΡ‚ Π½Π° процСсот Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜. Π”Π° ΠΎΠ΄ΠΈΠΌΠ΅!

Π”Π΅Π» 0 - Π²ΠΎΠ²Π΅Π΄Π΅Π½: ΠΊΠ°ΠΊΠΎ стигнавмС Π΄ΠΎ ΠΎΠ²Π°Π° Ρ‚ΠΎΡ‡ΠΊΠ°?

Π˜Π΄Π΅Ρ˜Π°Ρ‚Π° Π΄Π° напишСмС сопствСн Π΄ΠΎΠ΄Π°Ρ‚ΠΎΠΊ Π·Π° Grafan Π½ΠΈ дојдС сосСма ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ. ΠΠ°ΡˆΠ°Ρ‚Π° компанија Π½Π°Π΄Π³Π»Π΅Π΄ΡƒΠ²Π° Π²Π΅Π±-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ со Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²ΠΎΠ° Π½Π° слоТСност повСќС ΠΎΠ΄ 10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. Π—Π° ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π°ΠΊΡƒΠΌΡƒΠ»ΠΈΡ€Π°Π½ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π° Π½Π° СкспСртиза, интСрСсни случаи ΠΈ искуство Π²ΠΎ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ систСми Π·Π° слСдСњС. И Π²ΠΎ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ сС Π·Π°ΠΏΡ€Π°ΡˆΠ°Π²ΠΌΠ΅: β€žΠ”Π°Π»ΠΈ постои ΠΌΠ°Π³ΠΈΡ‡Π½Π° Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° слСдСњС Π½Π° Kubernetes, Π·Π°, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π²Π΅Π»Π°Ρ‚, β€žΠΏΠΎΡΡ‚Π°Π²Π΅Ρ‚Π΅ Π³ΠΎ ΠΈ Π·Π°Π±ΠΎΡ€Π°Π²Π΅Ρ‚Π΅ Π³ΠΎβ€œ?β€œ. Π˜Π½Π΄ΡƒΡΡ‚Ρ€ΠΈΡΠΊΠΈΠΎΡ‚ стандард Π·Π° слСдСњС Π½Π° k8s, сС Ρ€Π°Π·Π±ΠΈΡ€Π°, ΠΎΠ΄Π°ΠΌΠ½Π° Π΅ ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π° ΠŸΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜ + Π“Ρ€Π°Ρ„Π°Π½Π°. И ΠΊΠ°ΠΊΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° Π·Π° овој оџак, ΠΈΠΌΠ° Π³ΠΎΠ»Π΅ΠΌ сСт Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΈ Π°Π»Π°Ρ‚ΠΊΠΈ: ΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, сСт Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ Ρ‚Π°Π±Π»ΠΈ kubernetes-mixin, grafana-kubernetes-app.

ΠŸΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ grafana-kubernetes-app изглСдашС ΠΊΠ°ΠΊΠΎ Π½Π°Ρ˜ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½Π° ΠΎΠΏΡ†ΠΈΡ˜Π° Π·Π° нас, Π½ΠΎ Π½Π΅ Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ повСќС ΠΎΠ΄ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ, Π·Π³ΠΎΡ€Π° Π½Π° Ρ‚ΠΎΠ°, Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ со Π½ΠΎΠ²ΠΈΡ‚Π΅ Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° node-exporter ΠΈ kube-state-metrics. И Π²ΠΎ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅: β€žΠ—Π°Ρ€Π΅ΠΌ Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° донСсСмС своја ΠΎΠ΄Π»ΡƒΠΊΠ°?

Кои ΠΈΠ΄Π΅ΠΈ Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Π²ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ:

  • Π²ΠΈΠ·ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° β€žΠ°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡΠΊΠ°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°β€œ: ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π²ΠΎ кластСрот, Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ имСнски простори, Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ°...;
  • Π²ΠΈΠ·ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° врски ΠΊΠ°ΠΊΠΎ β€žΡ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ - услуга (+ΠΏΠΎΡ€Ρ‚ΠΈ)β€œ.
  • Π²ΠΈΠ·ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° кластСрскитС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½ΠΈΠ· кластСрскитС јазли.
  • Π·Π±ΠΈΡ€ΠΊΠ° Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ΄ повСќС ΠΈΠ·Π²ΠΎΡ€ΠΈ: Prometheus ΠΈ k8s api сСрвСр.
  • слСдСњС ΠΈ Π½Π° инфраструктурниот Π΄Π΅Π» (ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСсорот, ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°, потсистСм Π½Π° диск, ΠΌΡ€Π΅ΠΆΠ°) ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° - ΠΏΠΎΠ΄Π»ΠΎΠ³ΠΈ Π·Π° здравствСн статус, Π±Ρ€ΠΎΡ˜ Π½Π° достапни Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° полагањС тСстови Π·Π° Тивост/подготвСност.

Π”Π΅Π» 1: Π¨Ρ‚ΠΎ Π΅ β€žΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Grafanaβ€œ?

Од Ρ‚Π΅Ρ…Π½ΠΈΡ‡ΠΊΠ° Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ Π·Π° Grafana Π΅ Π°Π³ΠΎΠ»Π΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€, кој сС Ρ‡ΡƒΠ²Π° Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Grafana (/var/grafana/plugins/ /dist/module.js) ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²Ρ‡ΠΈΡ‚Π° ΠΊΠ°ΠΊΠΎ SystemJS ΠΌΠΎΠ΄ΡƒΠ». Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, Π²ΠΎ овој Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠΌΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° plugin.json ΡˆΡ‚ΠΎ Π³ΠΈ содрТи ситС ΠΌΠ΅Ρ‚Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ: ΠΈΠΌΠ΅, Π²Π΅Ρ€Π·ΠΈΡ˜Π°, Ρ‚ΠΈΠΏ Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ, врски Π΄ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ/страницата/Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π°, зависности ΠΈΡ‚Π½.

Развој Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° Grafana: ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ снимки
ΠΌΠΎΠ΄ΡƒΠ».ts

Развој Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° Grafana: ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ снимки
ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ.json

Како ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° сликата ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚, Π½Π°Π²Π΅Π΄ΠΎΠ²ΠΌΠ΅ plugin.type = app. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈΡ‚Π΅ Π·Π° Grafana ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ ΠΎΠ΄ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π°:

ΠΏΠ°Π½Π΅Π»: Π½Π°Ρ˜Ρ‡Π΅ΡΡ‚ΠΈΠΎΡ‚ Ρ‚ΠΈΠΏ Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ - Ρ‚ΠΎΠ° Π΅ ΠΏΠ°Π½Π΅Π» Π·Π° Π²ΠΈΠ·ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° која Π±ΠΈΠ»ΠΎ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°, ΡˆΡ‚ΠΎ сС користи Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ Ρ‚Π°Π±Π»ΠΈ.
ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ: ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° нСкој ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Prometheus-datasource, ClickHouse-datasource, ElasticSearch-datasource).
Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°: ΠŸΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ кој Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ своја сопствСна Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π½ Π΄Π΅Π» Π²ΠΎ Grafana, Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ сопствСни html страници ΠΈ Ρ€Π°Ρ‡Π½ΠΎ Π΄Π° пристапитС Π΄ΠΎ ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° Π΄Π° Π²ΠΈΠ·ΡƒΠ΅Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, Π΄ΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΈ (ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, ΠΏΠ°Π½Π΅Π») ΠΈ Ρ€Π°Π·Π½ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ Ρ‚Π°Π±Π»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користат ΠΊΠ°ΠΊΠΎ зависности.

Развој Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° Grafana: ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ снимки
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° зависности ΠΎΠ΄ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ со Ρ‚ΠΈΠΏ=Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ користитС ΠΈ JavaScript ΠΈ TypeScript ΠΊΠ°ΠΊΠΎ програмски јазик (Π½ΠΈΠ΅ Π³ΠΎ ΠΈΠ·Π±Ρ€Π°Π²ΠΌΠ΅). ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Π·Π° hello-world ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ ΠΎΠ΄ кој Π±ΠΈΠ»ΠΎ Ρ‚ΠΈΠΏ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ ја врската: ΠΎΠ²Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ содрТи Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ стартСр-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (ΠΈΠΌΠ° Π΄ΡƒΡ€ΠΈ ΠΈ СкспСримСнталСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π²ΠΎ React) со ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ инсталирани ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ Π³Ρ€Π°Π΄ΠΈΡ‚Π΅Π»ΠΈ.

Π”Π΅Π» 2: ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° срСдина

Π—Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚, ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π½ΠΎ Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° ΠΊΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚ кластСр со ситС ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ инсталирани Π°Π»Π°Ρ‚ΠΊΠΈ: ΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜, ΠΈΠ·Π²ΠΎΠ·Π½ΠΈΠΊ Π½Π° јазли, ΠΊΡƒΠ±Π΅-ΡΠΎΡΡ‚ΠΎΡ˜Π±Π°-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°, Π³Ρ€Π°Ρ„Π°Π½Π°. ΠžΠΊΠΎΠ»ΠΈΠ½Π°Ρ‚Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС постави Π±Ρ€Π·ΠΎ, лСсно ΠΈ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π½ΠΎ, Π° Π·Π° Π΄Π° сС ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Grafana Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ΄ ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π½Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚.

ΠΠ°Ρ˜Π·Π³ΠΎΠ΄Π½ΠΈΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½, спорСд нашС мислСњС, Π΄Π° сС Ρ€Π°Π±ΠΎΡ‚ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ со ΠΊΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚ΠΈΡ‚Π΅ Π΅ ΠΌΠΈΠ½ΠΈΠΊΡƒΠ±Π΅. Π‘Π»Π΅Π΄Π½ΠΈΠΎΡ‚ Ρ‡Π΅ΠΊΠΎΡ€ Π΅ Π΄Π° ја инсталиратС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Prometheus + Grafana ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π’Πž Оваа ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° Π”Π΅Ρ‚Π°Π»Π½ΠΎ Π΅ опишан процСсот Π½Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° minikube. Π—Π° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ упорност, ΠΌΠΎΡ€Π° Π΄Π° Π³ΠΎ поставитС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ΠΎΡ‚ упорност: Ρ‚ΠΎΡ‡Π½ΠΎ Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° charts/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: вистински Ρ€Π°Π·Π²ΠΎΡ˜

МодСл Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚

Како ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚, Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° Π³ΠΈ опишСмС ситС основни Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ΠΈ Π½Π° Kubernetes со ΠΊΠΎΠΈ ќС Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° класи Π½Π° TypeScript: pod, deployment, daemonset, statefulset, job, cronjob, услуга, јазол, имСнски простор. БСкоја ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ класи наслСдува ΠΎΠ΄ Π·Π°Π΅Π΄Π½ΠΈΡ‡ΠΊΠ°Ρ‚Π° класа 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 = [];
   }
}

Π‘ΠΎ помош Π½Π° Π΄ΠΎΠ±ΠΈΠ²Π°Ρ‡ΠΈ ΠΈ поставувачи, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΠΈΠ»ΠΈ поставимС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π½ΠΈ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π²ΠΎ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Π° ΠΈ Ρ‡ΠΈΡ‚Π»ΠΈΠ²Π° Ρ„ΠΎΡ€ΠΌΠ°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½ ΠΈΠ·Π»Π΅Π· Π½Π° Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ процСсорски јазли:

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: ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

Од Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π“Ρ€Π°Ρ„Π°Π½Π°, ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΅ ΠΏΠΎΡ‚ΠΏΠΎΠ»Π½ΠΎ истиот ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ ΠΊΠ°ΠΊΠΎ ΠΈ ситС Π΄Ρ€ΡƒΠ³ΠΈ: ΠΈΠΌΠ° своја Π²Π»Π΅Π·Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° module.js, ΠΈΠΌΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° со ΠΌΠ΅Ρ‚Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ plugin.json. Кога Ρ€Π°Π·Π²ΠΈΠ²Π°ΠΌΠ΅ Π΄ΠΎΠ΄Π°Ρ‚ΠΎΠΊ со Ρ‚ΠΈΠΏ = Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ ΠΈ со постоСчкитС ΠΈΠ·Π²ΠΎΡ€ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π΅Ρ˜-ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ) ΠΈ со Π½Π°ΡˆΠΈΡ‚Π΅, ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ складирамС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ (dist/datasource/*) ΠΈΠ»ΠΈ Π΄Π° Π³ΠΎ инсталирамС ΠΊΠ°ΠΊΠΎ зависност. Π’ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΄ΠΎΠ°Ρ“Π° со ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π΅ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ шаблон config.html ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ ConfigCtrl, ΠΊΠΎΠΈ ќС сС користат Π·Π° страницата Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ Π½Π° ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΡ€ΠΎΡ‚ Datasource, кој ја ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° Π²Π°ΡˆΠΈΠΎΡ‚ ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

Π’ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ KubeGraf, ΠΎΠ΄ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° корисничкиот ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ, ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄ кластСрот kubernetes ΡˆΡ‚ΠΎ Π³ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° слСднитС способности (ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π΅ достапСн ΠΏΠΎ ссылкС):

  • ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ k8s api-сСрвСрот (добивањС листа Π½Π° имСнски простори, Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ°...)
  • прокси Π±Π°Ρ€Π°ΡšΠ° Π΄ΠΎ ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π½Π° prometheus (кој Π΅ ΠΈΠ·Π±Ρ€Π°Π½ Π²ΠΎ поставкитС Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ Π·Π° сСкој спСцифичСн кластСр) ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π·Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ Π²ΠΎ статични страници ΠΈ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ Ρ‚Π°Π±Π»ΠΈ.
  • Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π½Π° статични страници со ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ (со поставСна стапка Π½Π° ΠΎΡΠ²Π΅ΠΆΡƒΠ²Π°ΡšΠ΅).
  • ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π±Π°Ρ€Π°ΡšΠ° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° лист со шаблони Π²ΠΎ grafana-dashboards (ΠΌΠ΅Ρ‚ΠΎΠ΄ 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 Π·Π° Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ пристапот Π΄ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΈΠΎΡ‚ ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ пристапот Π΄ΠΎ ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ http со ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° URL-Ρ‚ΠΎ ΠΈ основнитС поставки Π·Π° Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°/ΠΎΠ²Π»Π°ΡΡ‚ΡƒΠ²Π°ΡšΠ΅: најава-Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрт/ΠΊΠ»ΠΈΠ΅Π½Ρ‚-ΠΊΠ»ΡƒΡ‡. Π—Π° Π΄Π° ја ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ моТноста Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° пристапот со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° носитСл Ρ‚ΠΎΠΊΠ΅Π½ (Π΄Π΅ Ρ„Π°ΠΊΡ‚ΠΎ стандард Π·Π° k8s), ΠΌΠΎΡ€Π°Π²ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΌΠ°Π»ΠΊΡƒ Π΄ΠΎΡ‚Π΅Ρ€ΡƒΠ²Π°ΡšΠ΅.

Π—Π° Π΄Π° Π³ΠΎ Ρ€Π΅ΡˆΠΈΡ‚Π΅ овој ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ користитС Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ Grafana β€žPlugin Routesβ€œ (повСќС Π΄Π΅Ρ‚Π°Π»ΠΈ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π½Π° страница Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°). Π’ΠΎ поставкитС Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°ΠΌΠ΅ Π·Π±ΠΈΡ€ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅ ΠΊΠΎΠΈ ќС Π±ΠΈΠ΄Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΠΎΠ΄ прокси-сСрвСрот grafana. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° сСкоја ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅Ρ‡Π½Π° ΠΊΡ€Π°Ρ˜Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС постават заглавија ΠΈΠ»ΠΈ url со моТност Π·Π° шаблон, ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Π·Π΅ΠΌΠ°Ρ‚ ΠΎΠ΄ ΠΏΠΎΠ»ΠΈΡšΠ°Ρ‚Π° jsonData ΠΈ safeJsonData (Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π»ΠΎΠ·ΠΈΠ½ΠΊΠΈ ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΈ Π²ΠΎ ΡˆΠΈΡ„Ρ€ΠΈΡ€Π°Π½Π° Ρ„ΠΎΡ€ΠΌΠ°). Π’ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π°ΡˆΠ°ΡšΠ° ΠΊΠ°ΠΊΠΎ /__прокси/api/v1/имСнски простори ќС Π±ΠΈΠ΄Π΅ проксирано Π½Π° URL-Ρ‚ΠΎ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°Ρ€ΠΎΡ‚
/api/v8/имСнски простори со Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°: носитСл.

Развој Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° Grafana: ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ снимки

Развој Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° Grafana: ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ снимки

Π‘Π΅ΠΊΠ°ΠΊΠΎ, Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° со k8s api сСрвСрот Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° корисник со пристап само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅, манифСстации Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ ΠΈ Π²ΠΎ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚.

Π”Π΅Π» 5: ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅

Развој Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° Grafana: ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ снимки

ΠžΡ‚ΠΊΠ°ΠΊΠΎ ќС Π³ΠΎ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π²Π°ΡˆΠΈΠΎΡ‚ сопствСн ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Grafana, ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π½ΠΎ ќС сакатС Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ јавно достапСн. Π’ΠΎ Π“Ρ€Π°Ρ„Π°Π½Π° ΠΎΠ²Π° Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° со ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ достапни ΠΎΠ²Π΄Π΅ grafana.com/grafana/plugins

Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π΄Π° Π±ΠΈΠ΄Π΅ достапСн Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ΄Π°Π²Π½ΠΈΡ†Π°, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ПР ΠΎΠ²Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡΠΎ додавањС Π½Π° Π²Π°ΠΊΠ²Π° содрТина Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° repo.json:

Развој Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° Grafana: ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ снимки

ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ, url Π΅ врска Π΄ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ, Π° commit Π΅ Ρ…Π°ΡˆΠΎΡ‚ Π½Π° commit Π·Π° кој ќС Π±ΠΈΠ΄Π΅ достапна ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚.

И Π½Π° ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ прСкрасна слика ΠΊΠ°ΠΊΠΎ:

Развој Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° Grafana: ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ снимки

ΠŸΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π·Π° Π½Π΅Π³ΠΎ автоматски ќС Π±ΠΈΠ΄Π°Ρ‚ Π·Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ΄ Π²Π°ΡˆΠΈΡ‚Π΅ Readme.md, Changelog.md ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° plugin.json со опис Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚.

Π”Π΅Π» 6: намСсто Π·Π°ΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ

НС прСстанавмС Π΄Π° Π³ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΠΌΠ΅ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ ΠΏΠΎ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ. И сСга Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ слСдСњС Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° рСсурситС Π½Π° Ρ˜Π°Π·Π»ΠΈΡ‚Π΅ Π½Π° кластСрот, Π²ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° UX, Π° исто Ρ‚Π°ΠΊΠ° ΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ ΠΏΠΎΠ²Ρ€Π°Ρ‚Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ ΠΏΠΎ ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ ΠΈ ΠΎΠ΄ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΈ ΠΎΠ΄ Π»ΡƒΡ“Π΅Ρ‚ΠΎ Π½Π° GitHub (Π°ΠΊΠΎ Π³ΠΎ Π½Π°ΠΏΡƒΡˆΡ‚ΠΈΡ‚Π΅ вашС ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅ ΠΈΠ»ΠΈ Π±Π°Ρ€Π°ΡšΠ΅, јас ќС Π±ΠΈΠ΄Π°ΠΌ ΠΌΠ½ΠΎΠ³Ρƒ ΡΡ€Π΅ΡœΠ΅Π½ :)

Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° ќС Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ‚Π°ΠΊΠ²Π° прСкрасна Π°Π»Π°Ρ‚ΠΊΠ° ΠΊΠ°ΠΊΠΎ Grafana ΠΈ, ΠΌΠΎΠΆΠ΅Π±ΠΈ, Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ свој ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ.

Π’ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π°ΠΌ!)

Π˜Π·Π²ΠΎΡ€: www.habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π΄ΠΎΠ²Π΅Ρ€Π»ΠΈΠ² хостинг Π·Π° ΡΠ°Ρ˜Ρ‚ΠΎΠ²ΠΈ со DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚Π°, VPS VDS сСрвСри πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ сигурСн Π²Π΅Π±-хостинг со DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚Π°, VPS VDS сСрвСри | ProHoster