āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ

āĻšāĻžāχ āϏāĻŦ! āĻ•āϝāĻŧ⧇āĻ• āĻŽāĻžāϏ āφāϗ⧇, āφāĻŽāϰāĻž āĻ‰ā§ŽāĻĒāĻžāĻĻāύ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āύāϤ⧁āύ āĻ“āĻĒ⧇āύ-āϏ⧋āĻ°ā§āϏ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āϚāĻžāϞ⧁ āĻ•āϰ⧇āĻ›āĻŋ - āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āύāĻŋāϰ⧀āĻ•ā§āώāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻ—ā§āϰāĻžāĻĢāĻžāύāĻž-āĻĒā§āϞāĻžāĻ—āχāύ, āϝāĻžāϕ⧇ āφāĻŽāϰāĻž āĻŦāϞ⧇āĻ›āĻŋāϞāĻžāĻŽ DevOpsProdigy KubeGraf. āĻĒā§āϞāĻžāĻ—āχāύ āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ GitHub-āĻ āϏāĻ°ā§āĻŦāϜāύ⧀āύ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ. āĻāĻŦāĻ‚ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ⧇, āφāĻŽāϰāĻž āϕ⧀āĻ­āĻžāĻŦ⧇ āĻĒā§āϞāĻžāĻ—āχāύ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĻ›āĻŋ, āφāĻŽāϰāĻž āϕ⧀ āϏāϰāĻžā§āϜāĻžāĻŽāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ•āĻžāĻļ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϝāĻŧ āφāĻŽāϰāĻž āϕ⧀ āϕ⧀ āĻ…āϏ⧁āĻŦāĻŋāϧāĻžāϰ āϏāĻŽā§āĻŽā§āĻ–ā§€āύ āĻšāϝāĻŧ⧇āĻ›āĻŋ āϤāĻžāϰ āĻ—āĻ˛ā§āĻĒāϟāĻŋ āφāĻŽāϰāĻž āφāĻĒāύāĻžāϰ āϏāĻžāĻĨ⧇ āĻ­āĻžāĻ— āĻ•āϰāϤ⧇ āϚāĻžāχ⧎ āϚāϞ⧋ āϝāĻžāχ!

āĻĒāĻžāĻ°ā§āϟ 0 - āĻĒāϰāĻŋāϚāĻžāϝāĻŧāĻ•: āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāχ āĻŦāĻŋāĻ¨ā§āĻĻ⧁āϤ⧇ āĻĒ⧌āρāĻ›āϞāĻžāĻŽ?

āĻ—ā§āϰāĻžāĻĢāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻĒā§āϞāĻžāĻ—-āχāύ āϞ⧇āĻ–āĻžāϰ āϧāĻžāϰāĻŖāĻžāϟāĻŋ āĻĻ⧁āĻ°ā§āϘāϟāύāĻžāĻ•ā§āϰāĻŽā§‡ āϜāĻ¨ā§āĻŽāĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇āĻ›āĻŋāϞāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧋āĻŽā§āĻĒāĻžāύāĻŋ 10 āĻŦāĻ›āϰ⧇āϰāĻ“ āĻŦ⧇āĻļāĻŋ āϏāĻŽāϝāĻŧ āϧāϰ⧇ āϜāϟāĻŋāϞāϤāĻžāϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ¸ā§āϤāϰ⧇āϰ āĻ“āϝāĻŧ⧇āĻŦ-āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰāϛ⧇āĨ¤ āĻāχ āϏāĻŽāϝāĻŧ⧇āϰ āĻŽāĻ§ā§āϝ⧇, āφāĻŽāϰāĻž āĻ…āύ⧇āĻ• āĻĻāĻ•ā§āώāϤāĻž, āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āϕ⧇āϏ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻ…āĻ­āĻŋāĻœā§āĻžāϤāĻž āĻ…āĻ°ā§āϜāύ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻāĻŦāĻ‚ āĻ•āĻŋāϛ⧁ āϏāĻŽāϝāĻŧ⧇ āφāĻŽāϰāĻž āύāĻŋāĻœā§‡āĻĻ⧇āϰāϕ⧇ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰāϞāĻžāĻŽ: "āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏāϕ⧇ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻŋ āϕ⧋āύ āϜāĻžāĻĻ⧁ āϟ⧁āϞ āφāϛ⧇, āϝāĻžāϤ⧇ āϤāĻžāϰāĻž āĻŦāϞ⧇, "āĻāϟāĻŋ āϏ⧇āϟ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϭ⧁āϞ⧇ āϝāĻžāύ"?" āĻāĻŦāĻ‚ āĻāχ āĻ¸ā§āĻŸā§āϝāĻžāϕ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āϏāĻŽāĻžāϧāĻžāύ āĻšāĻŋāϏāĻžāĻŦ⧇, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϧāϰāϪ⧇āϰ āϏāϰāĻžā§āϜāĻžāĻŽā§‡āϰ āĻāĻ•āϟāĻŋ āĻŦāĻĄāĻŧ āϏ⧇āϟ āϰāϝāĻŧ⧇āϛ⧇: āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ-āĻ…āĻĒāĻžāϰ⧇āϟāϰ, āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ-āĻŽāĻŋāĻ•ā§āϏāĻŋāύ āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄā§‡āϰ āĻāĻ•āϟāĻŋ āϏ⧇āϟ, āĻ—ā§āϰāĻžāĻĢāύāĻž-āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ-āĻ…ā§āϝāĻžāĻĒāĨ¤

Grafana-kubernetes-app āĻĒā§āϞāĻžāĻ—āχāύāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻŦāϞ⧇ āĻŽāύ⧇ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻŋ āĻāĻ• āĻŦāĻ›āϰ⧇āϰāĻ“ āĻŦ⧇āĻļāĻŋ āϏāĻŽāϝāĻŧ āϧāϰ⧇ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āύāϝāĻŧ āĻāĻŦāĻ‚ āωāĻĒāϰāĻ¨ā§āϤ⧁, āύ⧋āĻĄ-āϰāĻĒā§āϤāĻžāύāĻŋāĻ•āĻžāϰāĻ• āĻāĻŦāĻ‚ āĻ•āĻŋāωāĻŦ⧇-āĻ¸ā§āĻŸā§‡āϟ-āĻāϰ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϤāĻž āϜāĻžāύ⧇ āύāĻžāĨ¤ āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ āĻāĻŦāĻ‚ āĻāĻ• āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ āφāĻŽāϰāĻž āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋāϞāĻžāĻŽ: "āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŋ āύāĻŋāĻœā§‡āĻĻ⧇āϰ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύ⧇āĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ āύāϝāĻŧ?"

āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϞāĻžāĻ—āχāύ⧇ āφāĻŽāϰāĻž āϕ⧋āύ āϧāĻžāϰāĻŖāĻžāϗ⧁āϞāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ:

  • "āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻŽā§āϝāĻžāĻĒ" āĻāϰ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ: āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋāϰ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ• āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύāĻž, āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ, āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻ—ā§‹āĻˇā§āĻ ā§€āĻŦāĻĻā§āϧâ€Ļ;
  • āϞāĻŋāĻ™ā§āϕ⧇āϰ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ āϝ⧇āĻŽāύ "āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§‡āĻ¨ā§āϟ - āϏāĻžāĻ°ā§āĻ­āĻŋāϏ (+āĻĒā§‹āĻ°ā§āϟ)"āĨ¤
  • āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āύ⧋āĻĄ āĻĻā§āĻŦāĻžāϰāĻž āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻŦāĻŋāϤāϰāϪ⧇āϰ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύāĨ¤
  • āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āωāĻ¤ā§āϏ āĻĨ⧇āϕ⧇ āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ āĻāĻŦāĻ‚ āϤāĻĨā§āϝ āϏāĻ‚āĻ—ā§āϰāĻš: āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ āĻāĻŦāĻ‚ k8s āĻāĻĒāĻŋāφāχ āϏāĻžāĻ°ā§āĻ­āĻžāϰāĨ¤
  • āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ āĻ…āĻ‚āĻļ (āĻĒā§āϰāϏ⧇āϏāϰ⧇āϰ āϏāĻŽāϝāĻŧ, āĻŽā§‡āĻŽāϰāĻŋ, āĻĄāĻŋāĻ¸ā§āĻ• āϏāĻžāĻŦāϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ, āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ) āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϞāϜāĻŋāĻ• - āĻĒāĻĄā§‡āϰ āĻ¸ā§āĻŦāĻžāĻ¸ā§āĻĨā§āϝ-āĻ¸ā§āĻĨāĻŋāϤāĻŋ, āωāĻĒāϞāĻŦā§āϧ āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋāϗ⧁āϞāĻŋāϰ āϏāĻ‚āĻ–ā§āϝāĻž, āϏāĻœā§€āĻŦāϤāĻž/āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻŋ-āĻĒā§āϰ⧋āĻŦ⧇āϰ āωāĻ¤ā§āϤāϰāĻŖ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϤāĻĨā§āϝ āωāĻ­āϝāĻŧāχ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰāĻžāĨ¤

āĻĒāĻžāĻ°ā§āϟ 1: "āĻ—ā§āϰāĻžāĻĢāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ" āĻ•āĻŋ?

āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋāĻ—āϤ āĻĻ⧃āĻˇā§āϟāĻŋāϕ⧋āĻŖ āĻĨ⧇āϕ⧇, Grafana-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒā§āϞāĻžāĻ—āχāύ āĻšāϞ āĻāĻ•āϟāĻŋ āĻ•ā§ŒāĻŖāĻŋāĻ• āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻ• āϝāĻž Grafana-āĻāϰ āĻĄā§‡āϟāĻž āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻĨāĻžāϕ⧇ (/var/grafana/plugins/ /dist/module.js) āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ SystemJS āĻŽāĻĄāĻŋāωāϞ āĻšāĻŋāϏāĻžāĻŦ⧇ āϞ⧋āĻĄ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻāχ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ plugin.json āĻĢāĻžāχāϞ āĻĨāĻžāĻ•āĻž āωāϚāĻŋāϤ āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻžāϰ āĻĒā§āϞāĻžāĻ—āχāύ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϏāĻŽāĻ¸ā§āϤ āĻŽā§‡āϟāĻž āϤāĻĨā§āϝ āϰāϝāĻŧ⧇āϛ⧇: āύāĻžāĻŽ, āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ, āĻĒā§āϞāĻžāĻ—āχāύ āĻĒā§āϰāĻ•āĻžāϰ, āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ / āϏāĻžāχāϟ / āϞāĻžāχāϏ⧇āĻ¨ā§āϏ⧇āϰ āϞāĻŋāĻ™ā§āĻ•, āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āχāĻ¤ā§āϝāĻžāĻĻāĻŋāĨ¤

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ
module.ts

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ
plugin.json

āφāĻĒāύāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāĻŸā§‡ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻšā§āϛ⧇āύ, āφāĻŽāϰāĻž plugin.type = app āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ Grafana āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āϤāĻŋāύ āϧāϰāύ⧇āϰ āĻšāϤ⧇ āĻĒāĻžāϰ⧇:

āĻĒā§āϝāĻžāύ⧇āϞ: āĻĒā§āϞāĻžāĻ—āχāύāϗ⧁āϞāĻŋāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϏāĻžāϧāĻžāϰāĻŖ āϧāϰāύ - āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āϝ⧇āϕ⧋āύ āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞāĻžāχāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒā§āϝāĻžāύ⧇āϞāĨ¤
āϤāĻĨā§āϝ āϏ⧂āĻ¤ā§āϰ: āϝ⧇āϕ⧋āύ⧋ āĻĄā§‡āϟāĻž āĻ‰ā§ŽāϏ⧇āϰ āĻĒā§āϞāĻžāĻ—-āχāύ āϏāĻ‚āϝ⧋āĻ—āĻ•āĻžāϰ⧀ (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, Prometheus-datasource, ClickHouse-datasource, ElasticSearch-datasource)āĨ¤
āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ: āĻāĻ•āϟāĻŋ āĻĒā§āϞāĻžāĻ—āχāύ āϝāĻž āφāĻĒāύāĻžāϕ⧇ Grafana-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āφāĻĒāύāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻĢā§āϰāĻ¨ā§āϟ-āĻāĻ¨ā§āĻĄ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ HTML āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĄā§‡āϟāĻž āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ⧎ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϧāϰāύ⧇āϰ āĻĒā§āϞāĻžāĻ—āχāύ (āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ, āĻĒā§āϝāĻžāύ⧇āϞ) āĻāĻŦāĻ‚ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄāĻ“ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ
āϟāĻžāχāĻĒ = āĻ…ā§āϝāĻžāĻĒ āϏāĻš āĻĒā§āϞāĻžāĻ—āχāύ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻžāϰ āωāĻĻāĻžāĻšāϰāĻŖ.

āĻāĻ•āϟāĻŋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāώāĻž āĻšāĻŋāϏāĻžāĻŦ⧇, āφāĻĒāύāĻŋ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻāĻŦāĻ‚ āϟāĻžāχāĻĒāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āωāĻ­āϝāĻŧāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ (āφāĻŽāϰāĻž āĻāϟāĻŋ āĻŦ⧇āϛ⧇ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ)āĨ¤ āφāĻĒāύāĻŋ āϝ⧇ āϕ⧋āύ⧋ āϧāϰāύ⧇āϰ āĻšā§āϝāĻžāϞ⧋-āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻĒā§āϞāĻžāĻ—āχāύāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϞāĻŋāĻ™ā§āĻ• āĻĻā§āĻŦāĻžāϰāĻž āϖ⧁āρāϜ⧁āύ: āĻāχ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇ āĻĒā§āϰāĻŋ-āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻŦāĻŋāĻ˛ā§āĻĄāĻžāϰ āϏāĻš āĻĒā§āϰāϚ⧁āϰ āϏāĻ‚āĻ–ā§āϝāĻ• āĻ¸ā§āϟāĻžāĻ°ā§āϟāĻžāϰ-āĻĒā§āϝāĻžāĻ• āϰāϝāĻŧ⧇āϛ⧇ (āĻāĻŽāύāĻ•āĻŋ āĻāĻ•āϟāĻŋ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĒā§āϞāĻžāĻ—āχāύ⧇āϰ āĻāĻ•āϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āωāĻĻāĻžāĻšāϰāĻŖāĻ“ āϰāϝāĻŧ⧇āϛ⧇)āĨ¤

āĻĒāĻžāĻ°ā§āϟ 2: āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āĻ•āϰāĻž

āĻĒā§āϞāĻžāĻ—āχāύāϟāĻŋāϤ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āĻ…āĻŦāĻļā§āϝāχ, āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻŽāĻ¸ā§āϤ āĻĒā§āϰāĻžāĻ•-āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āϏāϰāĻžā§āϜāĻžāĻŽ āϏāĻš āĻāĻ•āϟāĻŋ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻĻāϰāĻ•āĻžāϰ: āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ, āύ⧋āĻĄ-āϰāĻĒā§āϤāĻžāύāĻŋāĻ•āĻžāϰāĻ•, āϕ⧁āĻŦ⧇-āĻ¸ā§āĻŸā§‡āϟ-āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ, āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāĨ¤ āĻĒāϰāĻŋāĻŦ⧇āĻļāϟāĻŋ āĻĻā§āϰ⧁āϤ, āϏāĻšāĻœā§‡ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻž āωāϚāĻŋāϤ āĻāĻŦāĻ‚ āĻšāϟ-āϰāĻŋāϞ⧋āĻĄ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻ—ā§āϰāĻžāĻĢāĻžāύāĻž āĻĄā§‡āϟāĻž āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϟāĻŋ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀āϰ āĻŽā§‡āĻļāĻŋāύ āĻĨ⧇āϕ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻŽāĻžāωāĻ¨ā§āϟ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤

āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ•, āφāĻŽāĻžāĻĻ⧇āϰ āĻŽāϤ⧇, āϕ⧁āĻŦāĻžāϰāύ⧇āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āωāĻĒāĻžāϝāĻŧ āĻŽāĻŋāύāĻŋāϕ⧁āĻŦ. āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϧāĻžāĻĒ āĻšāϞ āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ-āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ + āĻ—ā§āϰāĻžāĻĢāĻžāύāĻž āĻŦāĻžāĻ¨ā§āĻĄāĻŋāϞ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāĨ¤ āĻ­āĻŋāϤāϰ⧇ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ āĻŽāĻŋāύāĻŋāϕ⧁āĻŦ⧇ āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ-āĻ…āĻĒāĻžāϰ⧇āϟāϰ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϟāĻŋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤāĻ­āĻžāĻŦ⧇ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ…āĻ§ā§āϝāĻŦāϏāĻžāϝāĻŧ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϕ⧇ āĻ…āĻŦāĻļā§āϝāχ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻ…āĻ§ā§āϝāĻŦāϏāĻžāϝāĻŧ: āϏāĻ¤ā§āϝ āϚāĻžāĻ°ā§āϟ/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: āϏāϰāĻžāϏāϰāĻŋ āωāĻ¨ā§āύāϝāĻŧāύ

āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻŽāĻĄā§‡āϞ

āĻĒā§āϞāĻžāĻ—āχāύ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻŋ āĻšāĻŋāϏāĻžāĻŦ⧇, āφāĻŽāϰāĻž āϟāĻžāχāĻĒāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•ā§āϞāĻžāϏ āφāĻ•āĻžāϰ⧇ āϝ⧇ āϏāĻŽāĻ¸ā§āϤ āĻŽā§ŒāϞāĻŋāĻ• āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āϏāĻ¤ā§āϤāĻžāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāĻŦ āϤāĻž āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ: āĻĒāĻĄ, āĻ¸ā§āĻĨāĻžāĻĒāύāĻž, āĻĄā§‡āĻŽāύāϏ⧇āϟ, āĻ¸ā§āĻŸā§‡āϟāĻĢ⧁āϞāϏ⧇āϟ, āϚāĻžāĻ•āϰāĻŋ, āĻ•ā§āϰāύāϜāĻŦ, āĻĒāϰāĻŋāώ⧇āĻŦāĻž, āύ⧋āĻĄ, āύ⧇āĻŽāĻ¸ā§āĻĒ⧇āϏāĨ¤ āĻāχ āĻ•ā§āϞāĻžāϏāϗ⧁āϞāĻŋāϰ āĻĒā§āϰāĻ¤ā§āϝ⧇āĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŦ⧇āϏāĻŽāĻĄā§‡āϞ āĻ•ā§āϞāĻžāϏ āĻĨ⧇āϕ⧇ āωāĻ¤ā§āϤāϰāĻžāϧāĻŋāĻ•āĻžāϰ āϏ⧂āĻ¤ā§āϰ⧇ āĻĒā§āϰāĻžāĻĒā§āϤ, āϝāĻž āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ, āĻ§ā§āĻŦāĻ‚āϏāĻ•āĻžāϰ⧀, āĻĻ⧃āĻļā§āϝāĻŽāĻžāύāϤāĻž āφāĻĒāĻĄā§‡āϟ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ•ā§āϞāĻžāϏ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϏāĻ¤ā§āϤāĻžāϰ āϏāĻžāĻĨ⧇ āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āϏāĻŽā§āĻĒāĻ°ā§āĻ• āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰ⧇, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āϏāĻ¤ā§āϤāĻžāϰ āϜāĻ¨ā§āϝ āĻĒāĻĄā§‡āϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤

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-āĻ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻŦāĻŋāĻ­āĻžāϗ⧇ āĻŦāĻ°ā§āĻŖāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇:

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ

āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒ⧃āĻˇā§āĻ āĻžāϰ āϜāĻ¨ā§āϝ āĻŦā§āϞāϕ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻ…āĻŦāĻļā§āϝāχ PAGE NAME āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ (āĻāϰāĻĒāϰ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ¸ā§āϞāĻžāϗ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻšāĻŦ⧇ āϝāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻāχ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āωāĻĒāϞāĻŦā§āϧ āĻšāĻŦ⧇); āĻāχ āĻĒ⧃āĻˇā§āĻ āĻžāϰ āĻ…āĻĒāĻžāϰ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĻāĻžāϝāĻŧā§€ āωāĻĒāĻžāĻĻāĻžāύ⧇āϰ āύāĻžāĻŽ (āωāĻĒāĻžāĻĻāĻžāύ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻž module.ts āĻ āϰāĻĒā§āϤāĻžāύāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ); āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇ āϝāĻžāϰ āϜāĻ¨ā§āϝ āĻāχ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āωāĻĒāϞāĻŦā§āϧ āĻāĻŦāĻ‚ āϏāĻžāχāĻĄāĻŦāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āύ⧇āĻ­āĻŋāϗ⧇āĻļāύ āϏ⧇āϟāĻŋāĻ‚āϏāĨ¤

āĻĒ⧃āĻˇā§āĻ āĻžāϰ āϜāĻ¨ā§āϝ āĻĻāĻžāϝāĻŧā§€ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āĻŸā§‡, āϏ⧇āĻ–āĻžāύ⧇ āĻŽāĻžāĻ°ā§āĻ•āφāĻĒ āϏāĻš html āĻĢāĻžāχāϞ⧇āϰ āĻĒāĻžāĻĨ āĻĒāĻžāϏ āĻ•āϰ⧇ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āχāωāφāϰāĻāϞ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ⧇āϰ āĻ­āĻŋāϤāϰ⧇, āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āχāύāĻœā§‡āĻ•āĻļāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡, āφāĻŽāϰāĻž 2āϟāĻŋ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ:

  • backendSrv - āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϝāĻž āĻ—ā§āϰāĻžāĻĢāύāĻž āĻāĻĒāĻŋāφāχ-āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇;
  • datasourceSrv - āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϝāĻž āφāĻĒāύāĻžāϰ Grafana-āĻ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āϏāĻŽāĻ¸ā§āϤ āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇ (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, .getAll() āĻĒāĻĻā§āϧāϤāĻŋ - āϏāĻŽāĻ¸ā§āϤ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ⧇āϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇; .get( ) - āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ⧇āϰ āĻāĻ•āϟāĻŋ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϏ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ

āĻĒāĻžāĻ°ā§āϟ 4: āĻĄāĻžāϟāĻž āϏ⧋āĻ°ā§āϏ

Grafana-āĻāϰ āĻĻ⧃āĻˇā§āϟāĻŋāϕ⧋āĻŖ āĻĨ⧇āϕ⧇, āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ āĻšāϞ āĻ…āĻ¨ā§āϝ āϏāĻŽāĻ¸ā§āϤ āĻĒā§āϞāĻžāĻ—āχāύāϗ⧁āϞāĻŋāϰ āĻŽāϤ⧋āχ: āĻāϟāĻŋāϰ āύāĻŋāϜāĻ¸ā§āĻŦ module.js āĻāĻ¨ā§āĻŸā§āϰāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āϰāϝāĻŧ⧇āϛ⧇, āĻŽā§‡āϟāĻž āϤāĻĨā§āϝ āϏāĻš āĻāĻ•āϟāĻŋ plugin.json āĻĢāĻžāχāϞ āϰāϝāĻŧ⧇āϛ⧇⧎ āϟāĻžāχāĻĒ = āĻ…ā§āϝāĻžāĻĒ āϏāĻš āĻāĻ•āϟāĻŋ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āφāĻŽāϰāĻž āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ-āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ) āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āωāĻ­āϝāĻŧ⧇āϰ āϏāĻžāĻĨ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•ā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ, āϝāĻž āφāĻŽāϰāĻž āϏāϰāĻžāϏāϰāĻŋ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ (dist/datasource/*) āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻŦāĻž āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻšāĻŋāϏāĻžāĻŦ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ . āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ āĻĒā§āϞāĻžāĻ—āχāύ āϕ⧋āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āφāϏ⧇āĨ¤ āĻāĻ•āϟāĻŋ config.html āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ ConfigCtrl āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āĻĨāĻžāĻ•āĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ āϝāĻž āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϏ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒ⧃āĻˇā§āĻ āĻžāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āϝāĻž āφāĻĒāύāĻžāϰ āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ⧇āϰ āϝ⧁āĻ•ā§āϤāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇⧎

KubeGraf āĻĒā§āϞāĻžāĻ—āχāύ⧇, āχāωāϜāĻžāϰ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ⧇āϰ āĻĒāϰāĻŋāĻĒā§āϰ⧇āĻ•ā§āώāĻŋāϤ⧇, āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ āĻšāϞ āĻāĻ•āϟāĻŋ kubernetes āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āϝāĻž āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇ (āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄ āωāĻĒāϞāĻŦā§āϧ āϞāĻŋāĻ‚āĻ•):

  • k8s api-āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĨ⧇āϕ⧇ āĻĄā§‡āϟāĻž āφāύāĻž āĻšāĻšā§āϛ⧇ (āύ⧇āĻŽāĻ¸ā§āĻĒ⧇āϏ, āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϰ āϤāĻžāϞāĻŋāĻ•āĻž āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻšā§āϛ⧇...)
  • āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ-āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ⧇āϰ āĻĒā§āϰāĻ•ā§āϏāĻŋ āĻ•āϰāĻžāϰ āĻ…āύ⧁āϰ⧋āϧ (āϝāĻž āĻĒā§āϰāϤāĻŋāϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āϏ⧇āϟāĻŋāĻ‚āϏ⧇ āύāĻŋāĻ°ā§āĻŦāĻžāϚāĻŋāϤ āĻšāϝāĻŧ) āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻĒ⧇āϜ āĻāĻŦāĻ‚ āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄā§‡ āĻĄā§‡āϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĢāĻ°ā§āĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻ•āϰāĻžāĨ¤
  • āĻĒā§āϞāĻžāĻ—āχāύ⧇āϰ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋāϤ⧇ āĻĄā§‡āϟāĻž āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž (āĻāĻ•āϟāĻŋ āϏ⧇āϟ āϰāĻŋāĻĢā§āϰ⧇āĻļ āϰ⧇āϟ āϏāĻŽāϝāĻŧ āϏāĻš)āĨ¤
  • āĻ—ā§āϰāĻžāĻĢāĻžāύāĻž-āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄā§‡ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āĻļā§€āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻļā§āύ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāĻŖ (āĻĒāĻĻā§āϧāϤāĻŋ .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"};
       })
}

āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ, āφāĻŽāĻžāĻĻ⧇āϰ āĻŽāϤ⧇, āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻāĻŦāĻ‚ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϰ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύāĨ¤ āĻāĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽ āĻšāĻŋāϏāĻžāĻŦ⧇, āĻŦāĻžāĻ•ā§āϏ⧇āϰ āĻŦāĻžāχāϰ⧇, āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ āĻĄā§‡āϟāĻž āωāĻ¤ā§āϏ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇, āφāĻŽāϰāĻž āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻŋāϤ Grafana āωāĻĒāĻžāĻĻāĻžāύ - datasourceHttpSettings āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āĻāχ āωāĻĒāĻžāĻĻāĻžāύāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āφāĻŽāϰāĻž āχāωāφāϰāĻāϞ āĻāĻŦāĻ‚ āĻŽā§ŒāϞāĻŋāĻ• āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ/āĻ…āύ⧁āĻŽā§‹āĻĻāύ āϏ⧇āϟāĻŋāĻ‚āϏ: āϞāĻ—āχāύ-āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ, āĻ…āĻĨāĻŦāĻž āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ-āϏāĻžāĻ°ā§āϟāĻŋ/āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ-āϕ⧀ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰ⧇ HTTP āĻĄā§‡āϟāĻž āĻ‰ā§ŽāϏ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āĻāĻ•āϟāĻŋ āĻŦ⧇āϝāĻŧāĻžāϰāĻžāϰ āĻŸā§‹āϕ⧇āύ (k8s-āĻāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋ āĻĢā§āϝāĻžāĻ•ā§āĻŸā§‹ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āĻ•ā§āώāĻŽāϤāĻž āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āϜāĻ¨ā§āϝ, āφāĻŽāĻžāϕ⧇ āĻ•āĻŋāϛ⧁āϟāĻž "āĻĒā§āϰāϤāĻžāϰāĻŖāĻž" āĻ•āϰāϤ⧇ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤

āĻāχ āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāϤ⧇, āφāĻĒāύāĻŋ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻŋāϤ āĻ—ā§āϰāĻžāĻĢāĻžāύāĻž "āĻĒā§āϞāĻžāĻ—āχāύ āϰ⧁āϟ" āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ (āφāϰ⧋ āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĒ⧃āĻˇā§āĻ āĻž) āφāĻŽāĻžāĻĻ⧇āϰ āĻĄā§‡āϟāĻžāϏ⧋āĻ°ā§āϏ⧇āϰ āϏ⧇āϟāĻŋāĻ‚āϏ⧇, āφāĻŽāϰāĻž āϰāĻžāωāϟāĻŋāĻ‚ āύāĻŋāϝāĻŧāĻŽā§‡āϰ āĻāĻ•āϟāĻŋ āϏ⧇āϟ āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āϝāĻž āĻ—ā§āϰāĻžāĻĢāĻžāύāĻž āĻĒā§āϰāĻ•ā§āϏāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒ⧃āĻĨāĻ• āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ, āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž āϏāĻš āĻšā§‡āĻĄāĻžāϰ āĻŦāĻž url āϏ⧇āϟ āĻ•āϰāĻžāϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž āϰāϝāĻŧ⧇āϛ⧇, āϝ⧇ āĻĄā§‡āϟāĻžāϰ āϜāĻ¨ā§āϝ jsonData āĻāĻŦāĻ‚ safeJsonData āĻ•ā§āώ⧇āĻ¤ā§āϰāϗ⧁āϞāĻŋ āĻĨ⧇āϕ⧇ āύ⧇āĻ“āϝāĻŧāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ (āĻāύāĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•āϰāĻž āφāĻ•āĻžāϰ⧇ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻŦāĻž āĻŸā§‹āϕ⧇āύ āϏāĻ‚āϰāĻ•ā§āώāϪ⧇āϰ āϜāĻ¨ā§āϝ)āĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āωāĻĻāĻžāĻšāϰāϪ⧇, āϝ⧇āĻŽāύ āĻĒā§āϰāĻļā§āύ /__proxy/api/v1/namespace āĻĢāĻ°ā§āĻŽā§‡āϰ url-āĻ āĻĒā§āϰāĻ•ā§āϏāĻŋ āĻ•āϰāĻž āĻšāĻŦ⧇
/api/v8/āύ⧇āĻŽāĻ¸ā§āĻĒ⧇āϏ āĻšā§‡āĻĄāĻžāϰ āϏāĻš āĻ…āύ⧁āĻŽā§‹āĻĻāύ: āĻŦāĻšāύāĻ•āĻžāϰ⧀āĨ¤

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ

āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦ⧇āχ, k8s api āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻŽāύ āĻāĻ•āϜāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āϝ⧇āĻ–āĻžāύ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĒāĻ āύāϝ⧋āĻ—ā§āϝ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āϰāϝāĻŧ⧇āϛ⧇, āϝāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŽā§āϝāĻžāύāĻŋāĻĢ⧇āĻ¸ā§āϟ āϝāĻž āφāĻĒāύāĻŋ āĻāϤ⧇āĻ“ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύ āĻĒā§āϞāĻžāĻ—āχāύ āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄ.

āĻĒāĻžāĻ°ā§āϟ 5: āĻŽā§āĻ•ā§āϤāĻŋ

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ

āĻāĻ•āĻŦāĻžāϰ āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āύāĻŋāĻœā§‡āϰ Grafana āĻĒā§āϞāĻžāĻ—āχāύ āϞāĻŋāϖ⧇ āϗ⧇āϞ⧇, āφāĻĒāύāĻŋ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦ⧇āχ āĻāϟāĻŋāϕ⧇ āϏāĻ°ā§āĻŦāϜāύ⧀āύāĻ­āĻžāĻŦ⧇ āωāĻĒāϞāĻŦā§āϧ āĻ•āϰāϤ⧇ āϚāĻžāχāĻŦ⧇āύāĨ¤ Grafana, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĒā§āϞāĻžāĻ—āχāύ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āϞāĻŋāĻ™ā§āϕ⧇ āωāĻĒāϞāĻŦā§āϧ grafana.com/grafana/plugins

āφāĻĒāύāĻžāϰ āĻĒā§āϞāĻžāĻ—āχāύāϟāĻŋ āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āĻ¸ā§āĻŸā§‹āϰ⧇ āωāĻĒāϞāĻŦā§āϧ āĻšāĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ PR āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāχ āĻ­āĻžāĻ¨ā§āĻĄāĻžāϰ, repo.json āĻĢāĻžāχāϞ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāĻšā§āϛ⧇:

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ

āϝ⧇āĻ–āĻžāύ⧇ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϟāĻŋ āφāĻĒāύāĻžāϰ āĻĒā§āϞāĻžāĻ—āχāύ⧇āϰ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ, url āĻšāϞ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇āϰ āĻāĻ•āϟāĻŋ āϞāĻŋāĻ™ā§āĻ• āĻāĻŦāĻ‚ āĻ•āĻŽāĻŋāϟ āĻšāϞ āĻ•āĻŽāĻŋāĻŸā§‡āϰ āĻšā§āϝāĻžāĻļ āϝāĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒā§āϞāĻžāĻ—āχāύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āωāĻĒāϞāĻŦā§āϧ āĻ•āϰāĻŦ⧇āĨ¤

āĻāĻŦāĻ‚ āφāωāϟāĻĒ⧁āĻŸā§‡ āφāĻĒāύāĻŋ āĻĢāĻ°ā§āĻŽāϟāĻŋāϰ āĻāĻ•āϟāĻŋ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āĻ›āĻŦāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύ:

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ: āĻ¸ā§āϟāĻžāĻĢāĻĄ āĻļāĻ™ā§āϕ⧁āϰ āχāϤāĻŋāĻšāĻžāϏ

āφāĻĒāύāĻžāϰ Readme.md, Changelog.md āĻāĻŦāĻ‚ āĻĒā§āϞāĻžāĻ—āχāύ āĻŦāĻŋāĻŦāϰāĻŖ āϏāĻš plugin.json āĻĢāĻžāχāϞ āĻĨ⧇āϕ⧇ āĻāϟāĻŋāϰ āĻĄā§‡āϟāĻž āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ›āĻŋāύāϤāĻžāχ āĻšāϝāĻŧ⧇ āϝāĻžāĻŦ⧇āĨ¤

āĻĒāĻžāĻ°ā§āϟ 6: āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇

āφāĻŽāϰāĻž āĻŽā§āĻ•ā§āϤāĻŋāϰ āĻĒāϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϞāĻžāĻ—āχāύ āĻŦāĻŋāĻ•āĻžāĻļ āĻ•āϰāĻž āĻŦāĻ¨ā§āϧ āĻ•āϰāĻŋāύāĻŋāĨ¤ āĻāĻŦāĻ‚ āĻāĻ–āύ āφāĻŽāϰāĻž āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āύ⧋āĻĄāϗ⧁āϞāĻŋāϰ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύāϗ⧁āϞāĻŋāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϏāĻ āĻŋāĻ• āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ, UX āωāĻ¨ā§āύāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋāϰ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ⧇āϰ āωāĻĒāϰ āĻ•āĻžāϜ āĻ•āϰāĻ›āĻŋ āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻāĻŦāĻ‚ āωāĻ­āϝāĻŧ āĻĒāĻ•ā§āώ āĻĨ⧇āϕ⧇ āĻĒā§āϞāĻžāĻ—āχāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āφāĻŽāϰāĻž āĻĒā§āϰāϚ⧁āϰ āĻĒāϰāĻŋāĻŽāĻžāϪ⧇ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĒā§āϰāĻžāĻĒā§āϤ āĻ•āϰāĻ›āĻŋāĨ¤ ishshui on github (āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āϛ⧇āĻĄāĻŧ⧇ āϝāĻžāύ āĻŦāĻž āĻ…āύ⧁āϰ⧋āϧ āϟāĻžāύ⧁āύ, āφāĻŽāĻŋ āϖ⧁āĻŦ āϖ⧁āĻļāĻŋ āĻšāĻŦ 🙂)āĨ¤

āφāĻŽāϰāĻž āφāĻļāĻž āĻ•āϰāĻŋ āϝ⧇ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋ āφāĻĒāύāĻžāϕ⧇ Grafana āĻāϰ āĻŽāϤ⧋ āĻāĻ•āϟāĻŋ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āϏāϰāĻžā§āϜāĻžāĻŽ āĻŦ⧁āĻāϤ⧇ āĻāĻŦāĻ‚ āϏāĻŽā§āĻ­āĻŦāϤ āφāĻĒāύāĻžāϰ āύāĻŋāĻœā§‡āϰ āĻĒā§āϞāĻžāĻ—āχāύ āϞāĻŋāĻ–āϤ⧇ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻ•āϰāĻŦ⧇āĨ¤

āϧāĻ¨ā§āϝāĻŦāĻžāĻĻ!)

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster