āĻšāĻžāĻ āϏāĻŦāĻžāĻ
āĻāĻŽāĻŋ āĻāĻāĻāύ āϞāĻŋāύāĻžāĻā§āϏ āϏāĻŋāϏā§āĻā§āĻŽ āĻĒā§āϰāĻļāĻžāϏāĻ, āĻāĻŽāĻŋ 2015 āϏāĻžāϞ⧠āĻāĻāĻāĻŋ āϏā§āĻŦāĻžāϧā§āύ āĻĒā§āĻļāĻžāĻĻāĻžāϰ āĻāĻŋāϏāĻžāϝāĻŧ āϰāĻžāĻļāĻŋāϝāĻŧāĻž āĻĨā§āĻā§ āĻ āϏā§āĻā§āϰā§āϞāĻŋāϝāĻŧāĻžāϝāĻŧ āĻāϞ⧠āĻāϏā§āĻāĻŋ, āϤāĻŦā§ āύāĻŋāĻŦāύā§āϧāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻļā§āĻāϰā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻā§āϰā§āϝāĻžāĻā§āĻāϰ āĻļā§āϰ⧠āĻāϰāĻŦā§āύ āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āĻĨāĻžāĻāĻŦā§ āύāĻžāĨ¤ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻĒāϰā§āϝāĻžāĻĒā§āϤ āĻāĻ āϧāϰāύā§āϰ āύāĻŋāĻŦāύā§āϧ āϰāϝāĻŧā§āĻā§ (āϤāĻŦā§āĻ, āϝāĻĻāĻŋ āĻāĻā§āϰāĻš āĻĨāĻžāĻā§ āϤāĻŦā§ āĻāĻŽāĻŋ āĻāĻāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§āĻ āϞāĻŋāĻāĻŦ), āϤāĻžāĻ āĻāĻŽāĻŋ āĻā§āĻāĻžāĻŦā§ āĻ āϏā§āĻā§āϰā§āϞāĻŋāϝāĻŧāĻžāϝāĻŧ āĻāĻāĻāύ āϞāĻŋāύāĻžāĻā§āϏ-āĻ āĻĒāϏ āĻāĻā§āĻāĻŋāύāĻŋāϝāĻŧāĻžāϰ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻŽāĻžāϰ āĻāĻžāĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻāĻŋ āϏāĻŋāϏā§āĻā§āĻŽ āĻŽāύāĻŋāĻāϰāĻŋāĻ āĻĨā§āĻā§ āĻŽāĻžāĻāĻā§āϰā§āĻļāύ āĻļā§āϰ⧠āĻāϰā§āĻāĻŋ āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻĨāĻž āĻŦāϞāϤ⧠āĻāĻžāĻāĨ¤ āĻ āύā§āϝā§āϰ āĻĒā§āϰāϤāĻŋ. āĻŦāĻŋāĻļā§āώ āĻāϰ⧠- Nagios => Icinga2.
āύāĻŋāĻŦāύā§āϧāĻāĻŋ āĻāĻāĻļāĻŋāĻāĻāĻžāĻŦā§ āĻĒā§āϰāϝā§āĻā§āϤāĻŋāĻāϤ āĻāĻŦāĻ āĻāĻāĻļāĻŋāĻāĻāĻžāĻŦā§ āĻŽāĻžāύā§āώā§āϰ āϏāĻžāĻĨā§ āϝā§āĻāĻžāϝā§āĻ āĻāĻŦāĻ āϏāĻāϏā§āĻā§āϤāĻŋ āĻāĻŦāĻ āĻāĻžāĻā§āϰ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝā§āϰ āϏāĻžāĻĨā§ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āϏāĻŽāϏā§āϝāĻžāĻā§āϞāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§āĨ¤
āĻĻā§āϰā§āĻāĻžāĻā§āϝāĻŦāĻļāϤ, "āĻā§āĻĄ" āĻā§āϝāĻžāĻāĻāĻŋ āĻĒā§āϤā§āϞ āĻāĻŦāĻ āĻāϝāĻŧāĻžāĻŽāϞ āĻā§āĻĄ āĻšāĻžāĻāϞāĻžāĻāĻ āĻāϰ⧠āύāĻž, āϤāĻžāĻ āĻāĻŽāĻžāĻā§ "āĻĒā§āϞā§āύāĻā§āĻā§āϏāĻ" āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤
21āĻļā§ āĻĄāĻŋāϏā§āĻŽā§āĻŦāϰ, 2016 āĻāϰ āϏāĻāĻžāϞ⧠āĻā§āύ āĻāĻžāĻŽā§āϞāĻžāϰ āϞāĻā§āώāĻŖ āĻāĻŋāϞ āύāĻžāĨ¤ āϝāĻĨāĻžāϰā§āϤāĻŋ, āĻāĻŽāĻŋ āĻāĻžāĻā§āϰ āĻĻāĻŋāύā§āϰ āĻĒā§āϰāĻĨāĻŽ āĻāϧ āĻāύā§āĻāĻžāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāύ āĻ āύāĻŋāĻŦāύā§āϧāĻŋāϤ āĻŦā§āύāĻžāĻŽā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻšāĻžāĻŦāϰ āĻĒāĻĄāĻŧāĻāĻŋāϞāĻžāĻŽ, āĻāĻĢāĻŋ āĻĒāĻžāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻŦāĻ āĻĻā§āĻāϤ⧠āĻĒā§āϞāĻžāĻŽ .
āϝā§āĻšā§āϤ⧠āĻāĻŽāĻžāϰ āĻā§āĻŽā§āĻĒāĻžāύāĻŋ Nagios āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĻā§, āĻĻā§āĻŦāĻžāϰ āĻāĻŋāύā§āϤāĻž āύāĻž āĻāϰā§, āĻāĻŽāĻŋ āϰā§āĻĄāĻŽāĻžāĻāύ⧠āĻāĻāĻāĻŋ āĻāĻŋāĻāĻŋāĻ āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋ āĻāĻŦāĻ āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϝāĻžāĻā§ āϞāĻŋāĻā§āĻāĻāĻŋ āĻĒāĻžāĻ āĻŋāϝāĻŧā§āĻāĻŋ, āĻāĻžāϰāĻŖ āĻāĻŽāĻŋ āĻāĻāĻŋāĻā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻŦāϞ⧠āĻŽāύ⧠āĻāϰā§āĻāĻŋāĨ¤ āĻāĻĻā§āϝā§āĻāĻāĻŋ āĻāĻŽāύāĻāĻŋ āĻ āϏā§āĻā§āϰā§āϞāĻŋāϝāĻŧāĻžāϤā§āĻ āĻļāĻžāϏā§āϤāĻŋāϝā§āĻā§āϝ, āϤāĻžāĻ āĻāĻŽāĻŋ āĻāĻāĻŋ āĻāĻŦāĻŋāώā§āĻāĻžāϰ āĻāϰāĻžāϰ āĻĒāϰ āĻĨā§āĻā§ āĻĒā§āϰāϧāĻžāύ āĻĒā§āϰāĻā§āĻļāϞ⧠āĻāĻŽāĻžāϰ āĻāĻĒāϰ āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āĻĒāĻŋāύ āĻāϰā§āĻā§āύāĨ¤
āϰā§āĻĄāĻŽāĻžāĻāύ āĻĨā§āĻā§ āϏā§āĻā§āϰāĻŋāύāĻļāĻ
āĻāĻŽāĻžāĻĻā§āϰ āĻŦāĻŋāĻāĻžāĻā§, āĻāĻĒāύāĻžāϰ āĻŽāϤāĻžāĻŽāϤ āĻĒā§āϰāĻāĻžāĻļ āĻāϰāĻžāϰ āĻāĻā§, āĻĒāĻāύā§āĻĻāĻāĻŋ āϏā§āϏā§āĻĒāώā§āĻ āĻšāϞā§āĻ āĻ āύā§āϤāϤ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻ āĻĢāĻžāϰ āĻāϰāĻžāϰ āĻĒā§āϰāĻĨāĻž āϰāϝāĻŧā§āĻā§, āϤāĻžāĻ āĻāĻŽāĻŋ āĻā§āĻāϞāĻŋāĻ āĻāϰ⧠āĻļā§āϰ⧠āĻāϰā§āĻāĻŋ āĻŦāϰā§āϤāĻŽāĻžāύ⧠āĻā§āύ āϧāϰāύā§āϰ āĻŽāύāĻŋāĻāϰāĻŋāĻ āϏāĻŋāϏā§āĻā§āĻŽāĻā§āϞāĻŋ āĻĒā§āϰāĻžāϏāĻā§āĻāĻŋāĻ, āϝā§āĻšā§āϤ⧠āϰāĻžāĻļāĻŋāϝāĻŧāĻžāϝāĻŧ āĻāĻŽāĻžāϰ āĻļā§āώ āĻāĻžāĻā§āϰ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āĻāĻŽāĻŋ āĻāĻŽāĻžāϰ āύāĻŋāĻāϏā§āĻŦ āϏā§āĻŦ-āϞāĻŋāĻāĻŋāϤ āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻŋāϞ, āĻā§āĻŦ āĻāĻĻāĻŋāĻŽ, āĻāĻŋāύā§āϤ⧠āϤāĻž āϏāϤā§āϤā§āĻŦā§āĻ āĻŦā§āĻļ āĻāĻžāĻ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻŋāϤ⧠āύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ āϏāĻŽāϏā§āϤ āĻāĻžāĻ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰā§āĨ¤ āĻĒāĻžāĻāĻĨāύ, āϏā§āύā§āĻ āĻĒāĻŋāĻāĻžāϰā§āϏāĻŦāĻžāϰā§āĻ āĻĒāϞāĻŋāĻā§āĻāύāĻŋāĻ āĻāĻŦāĻ āĻŽā§āĻā§āϰā§āϰ āύāĻŋāϝāĻŧāĻŽāĨ¤ āύāĻž, āĻĒāĻžāϤāĻžāϞ āϰā§āϞ āĻāĻžāϰāĻžāĻĒ. āĻāĻāĻŋ āĻŦā§āϝāĻā§āϤāĻŋāĻāϤ (11 āĻŦāĻāϰā§āϰ āĻāĻžāĻ) āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āύāĻŋāĻŦāύā§āϧā§āϰ āϝā§āĻā§āϝ, āĻāĻŋāύā§āϤ⧠āĻāĻāύ āύāϝāĻŧāĨ¤
āĻāĻŽāĻžāϰ āĻŦāϰā§āϤāĻŽāĻžāύ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āύāĻŋāϝāĻŧāĻŽ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻāĻā§āĨ¤ āĻāĻŽāϰāĻž āĻā§āĻĄ āύā§āϤāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āĻĒā§āϤā§āϞ, āĻāĻŋāĻāϞā§āϝāĻžāĻŦ āĻāĻŦāĻ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ, āϤāĻžāĻ:
- āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ⧠āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻā§āύ⧠āĻĢāĻžāĻāϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰ⧠SSH-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻā§āύ⧠āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϝāĻŧ āύāĻžāĨ¤ āϤāĻŋāύ āĻŦāĻāϰā§āϰ āĻāĻžāĻā§āϰ āĻŽāϧā§āϝā§, āĻāĻŽāĻŋ āĻāϰ āĻāύā§āϝ āĻ āύā§āĻāĻŦāĻžāϰ āĻāĻāĻāĻŋ āĻā§āĻĒāĻŋ āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻžāϤ āĻĒā§āϝāĻŧā§āĻāĻŋ, āĻļā§āώ āϏāĻŽāϝāĻŧāĻāĻŋ āĻāĻ āϏāĻĒā§āϤāĻžāĻš āĻāĻā§ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻŽāύ⧠āĻāϰāĻŋ āύāĻž āϝ⧠āĻāĻāĻŋ āĻļā§āώ āϏāĻŽāϝāĻŧ āĻāĻŋāϞāĨ¤ āĻ āĻŋāĻ āĻāĻā§, āϏāϤā§āϝāĻŋāĻ - āĻāύāĻĢāĻŋāĻāĻžāϰ⧠āĻāĻāĻāĻŋ āϞāĻžāĻāύ āϏāĻāĻļā§āϧāύ āĻāϰā§āύ, āĻĒāϰāĻŋāώā§āĻŦāĻžāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻāϰā§āύ āĻāĻŦāĻ āĻĻā§āĻā§āύ āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻšāϝāĻŧā§āĻā§ āĻāĻŋāύāĻž - 10 āϏā§āĻā§āύā§āĻĄāĨ¤ āĻāĻŋāĻāϞā§āϝāĻžāĻŦā§ āĻāĻāĻāĻŋ āύāϤā§āύ āĻļāĻžāĻāĻž āϤā§āϰāĻŋ āĻāϰā§āύ, āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ āĻāϰā§āύ, āĻĒāĻžāĻĒā§āĻāĻŽāĻžāϏā§āĻāĻžāϰ⧠āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ r10k āĻāϰ āĻāύā§āϝ āĻ āĻĒā§āĻā§āώāĻž āĻāϰā§āύ, Puppet -environment=mybranch āĻāĻžāϞāĻžāύ āĻāĻŦāĻ āĻāĻāĻŋ āϏāĻŦ āĻāĻžāĻ āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ āĻāϰāĻ āĻāϝāĻŧā§āĻ āĻŽāĻŋāύāĻŋāĻ āĻ āĻĒā§āĻā§āώāĻž āĻāϰā§āύ - āύā§āϝā§āύāϤāĻŽ 5 āĻŽāĻŋāύāĻŋāĻ⧎
- āĻāĻŋāĻāϞā§āϝāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻŽāĻžāϰā§āĻ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āϤā§āϰāĻŋ āĻāϰ⧠āϝā§āĻā§āύ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻāĻŽāĻĒāĻā§āώ⧠āĻāĻāĻāύ āĻĻāϞā§āϰ āϏāĻĻāϏā§āϝ āĻĻā§āĻŦāĻžāϰāĻž āĻ āύā§āĻŽā§āĻĻāĻŋāϤ āĻšāϤ⧠āĻšāĻŦā§āĨ¤ āĻĻāϞā§āϰ āύā§āϤā§āϤā§āĻŦ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύā§āĻāϝāĻŧāĻž āĻŦāĻĄāĻŧ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻāύā§āϝ āĻĻā§āĻ āĻŦāĻž āϤāĻŋāύāĻāĻŋ āĻ āύā§āĻŽā§āĻĻāύā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧāĨ¤
- āϏāĻŽāϏā§āϤ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ āĻāĻ āĻŦāĻž āĻ āύā§āϝāĻāĻžāĻŦā§ āĻĒāĻžāĻ ā§āϝ (āϝā§āĻšā§āϤ⧠āĻĒā§āϤā§āϞ āĻĒā§āϰāĻāĻžāĻļ, āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻŦāĻ āĻšāĻŋāϰāĻž āĻĄā§āĻāĻž āĻĒāĻžāĻ ā§āϝ), āĻŦāĻžāĻāύāĻžāϰāĻŋāĻā§āϞāĻŋ āĻ āϤā§āϝāύā§āϤ āύāĻŋāϰā§ā§āϏāĻžāĻšāĻŋāϤ āĻāĻŦāĻ āĻāĻ āĻāĻžāϤā§āϝāĻŧ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻ āύā§āĻŽā§āĻĻāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŦāĻžāϧā§āϝāϤāĻžāĻŽā§āϞāĻ āĻāĻžāϰāĻŖ āĻĨāĻžāĻāĻž āĻĻāϰāĻāĻžāϰāĨ¤
āϏā§āϤāϰāĻžāĻ, āĻāĻŽāĻŋ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āĻŦāĻŋāĻāϞā§āĻĒāĻā§āϞāĻŋ:
- āĻŽā§āύāĻŋāύ - āϝāĻĻāĻŋ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§āϤ⧠10 āĻāĻŋāϰ āĻŦā§āĻļāĻŋ āϏāĻžāϰā§āĻāĻžāϰ āĻĨāĻžāĻā§ āϤāĻŦā§ āĻĒā§āϰāĻļāĻžāϏāύ āύāϰāĻā§ āĻĒāϰāĻŋāĻŖāϤ āĻšāϝāĻŧ (āĻĨā§āĻā§ . āĻāĻāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻžāϰ āĻāĻŽāĻžāϰ āĻā§āύ āĻŦāĻŋāĻļā§āώ āĻāĻā§āĻāĻž āĻāĻŋāϞ āύāĻž, āϤāĻžāĻ āĻāĻŽāĻŋ āĻāĻāĻŋāϰ āĻāύā§āϝ āϤāĻžāϰ āĻāĻĨāĻž āύāĻŋāϝāĻŧā§āĻāĻŋāϞāĻžāĻŽ)āĨ¤
- āĻā§āϝāĻžāĻŦāĻŋāĻā§āϏ - āĻāĻŽāĻŋ āϰāĻžāĻļāĻŋāϝāĻŧāĻžāϝāĻŧ āĻĢāĻŋāϰ⧠āĻāĻāĻŋāĻā§ āĻĻā§āϰā§āĻāĻĻāĻŋāύ āϧāϰ⧠āĻĻā§āĻāĻāĻŋāϞāĻžāĻŽ, āĻāĻŋāύā§āϤ⧠āϤāĻžāϰāĻĒāϰ⧠āĻāĻāĻŋ āĻāĻŽāĻžāϰ āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻāĻŋāϞāĨ¤ āĻāĻāĻžāύ⧠- āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ āĻšāĻŋāϏāĻžāĻŦā§ āĻĒāĻžāĻĒā§āĻ āĻāĻŦāĻ āϏāĻāϏā§āĻāϰāĻŖ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻŦā§āϝāĻŦāϏā§āĻĨāĻž āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻŋāĻāϞā§āϝāĻžāĻŦ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāĻžāϰāĻŖā§ āĻŦāĻžāϤāĻŋāϞ āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϏā§āĻ āϏāĻŽāϝāĻŧā§, āϝāϤāĻĻā§āϰ āĻāĻŽāĻŋ āĻŦā§āĻāϤ⧠āĻĒā§āϰā§āĻāĻŋ, Zabbix āϏāĻŽāĻā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āϏāĻā§āĻāϝāĻŧ āĻāϰā§, āĻāĻŦāĻ āϤāĻžāĻ āĻŦāϰā§āϤāĻŽāĻžāύ āĻ āĻŦāϏā§āĻĨāĻžāϰ āĻ āϧā§āύ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻā§āĻāĻžāĻŦā§ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻž āϝāĻžāϝāĻŧ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ āĻā§āϰā§āϝāĻžāĻ āĻāϰāĻž āϝāĻžāϝāĻŧ āϤāĻž āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāĻŋāϞ āύāĻžāĨ¤
- āĻĄāĻŋāĻĒāĻžāϰā§āĻāĻŽā§āύā§āĻā§āϰ āĻŽā§āĻāĻžāĻ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻŋāĻāĻžāϰ āĻāϰ⧠āĻāĻŽāϰāĻž āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāĻāϏā§āϰ āĻāĻžāĻā§ āĻāϏāĻŦ, āĻāĻŋāύā§āϤ⧠āϏā§āĻ āϏāĻŽāϝāĻŧā§ āĻāĻŽāĻŋ āĻāĻāĻŋ āĻāϝāĻŧāϤā§āϤ āĻāϰāĻŋāύāĻŋ āĻāĻŦāĻ āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ āĻāĻžāϰā§āϝāĻāϰ⧠āύāĻŽā§āύāĻž (āϧāĻžāϰāĻŖāĻžāϰ āĻĒā§āϰāĻŽāĻžāĻŖ) āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻāĻŋāϞāĻžāĻŽ āύāĻž, āϤāĻžāĻ āĻāĻŽāĻžāĻā§ āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύ āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤
- āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāϰāĻ āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻāĻŋāϞ āϝā§āĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻšāϝāĻŧ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻĒā§āύāϰā§āύāĻŋāϰā§āĻŽāĻžāĻŖā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻāĻŋāϞ, āĻ āĻĨāĻŦāĻž āϤāĻžāĻĻā§āϰ āĻļā§āĻļāĻŦāĻāĻžāϞ⧠/ āĻĒāϰāĻŋāϤā§āϝāĻā§āϤ āĻāĻŋāϞ āĻāĻŦāĻ āĻāĻāĻ āĻāĻžāϰāĻŖā§ āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤
āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ, āĻāĻŽāĻŋ āϤāĻŋāύāĻāĻŋ āĻāĻžāϰāĻŖā§ Icinga2 āĻ āϏā§āĻĨāĻŋāϰ āĻšāϝāĻŧā§āĻāĻŋ:
1 - Nrpe āĻāϰ āϏāĻžāĻĨā§ āϏāĻžāĻŽāĻā§āĻāϏā§āϝ (āĻāĻāĻāĻŋ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻĒāϰāĻŋāώā§āĻŦāĻž āϝāĻž āύāĻžāĻāĻŋāĻāϏ āĻĨā§āĻā§ āĻāĻŽāĻžāύā§āĻĄ āĻā§āĻ āĻāĻžāϞāĻžāϝāĻŧ)āĨ¤ āĻāĻāĻŋ āĻā§āĻŦāĻ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻāĻŋāϞ, āĻāĻžāϰāĻŖ āϏā§āĻ āϏāĻŽāϝāĻŧā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāĻā§ 135āĻāĻŋ (āĻāĻāύ 2019 āϏāĻžāϞ⧠165āĻāĻŋ āĻāĻā§) āĻāĻžāϏā§āĻāĻŽ-āϞāĻŋāĻāĻŋāϤ āĻĒāϰāĻŋāώā§āĻŦāĻž/āĻā§āĻāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻā§āĻā§āĻ āϏāĻš āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āĻāĻŋāϞ, āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāϰāĻž āϏāϤā§āϝāĻŋāĻ āĻāĻāĻāĻŋ āĻāώā§āĻā§āϰ āĻŦāĻŋāώāϝāĻŧ āĻšāĻŦā§ā§ˇ
2 - āϏāĻŽāϏā§āϤ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻĒāĻžāĻ ā§āϝ, āϝāĻž āĻāĻ āĻŦāĻŋāώāϝāĻŧāĻāĻŋāĻā§ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻāϰāĻž āϏāĻšāĻ āĻāϰ⧠āϤā§āϞā§, āĻā§ āϝā§āĻā§āϤ āĻŦāĻž āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻšāϝāĻŧā§āĻā§ āϤāĻž āĻĻā§āĻāĻžāϰ āĻā§āώāĻŽāϤāĻž āϏāĻš āĻŽāĻžāϰā§āĻ āĻ
āύā§āϰā§āϧ āϤā§āϰāĻŋ āĻāϰā§ā§ˇ
3 āĻāĻāĻāĻŋ āĻā§āĻŦāύā§āϤ āĻ āĻāύā§āύāϝāĻŧāύāĻļā§āϞ āĻāĻĒā§āύāϏā§āϰā§āϏ āĻĒā§āϰāĻāϞā§āĻĒāĨ¤ āĻāĻŽāϰāĻž āϏāϤā§āϝāĻŋāĻ āĻāĻĒā§āύāϏā§āϰā§āϏāĻā§ āĻāĻžāϞā§āĻŦāĻžāϏāĻŋ āĻāĻŦāĻ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āĻĒā§āϞ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāĻŦāĻ āĻāϏā§āϝ⧠āϤā§āϰāĻŋ āĻāϰ⧠āĻāϤ⧠āϏāĻŽā§āĻāĻžāĻŦā§āϝ āϏāĻŦ āϧāϰāύā§āϰ āĻ
āĻŦāĻĻāĻžāύ āϰāĻžāĻāĻŋāĨ¤
āϏā§āϤāϰāĻžāĻ, āĻāϞā§āύ, Icinga2.
āĻĒā§āϰāĻĨāĻŽ āϝ⧠āĻŦāĻŋāώāϝāĻŧāĻāĻŋāϰ āϏāĻŽā§āĻŽā§āĻā§āύ āĻšāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ āϤāĻž āĻšāϞ āĻāĻŽāĻžāϰ āϏāĻšāĻāϰā§āĻŽā§āĻĻā§āϰ āĻāĻĄāĻŧāϤāĻžāĨ¤ āĻĒā§āϰāϤā§āϝā§āĻā§āĻ āύāĻžāĻāĻŋāĻāϏ/āύāĻžāĻāĻŋāĻāϏ (āϝāĻĻāĻŋāĻ āĻāĻāĻžāύā§āĻ āϤāĻžāϰāĻž āĻā§āĻāĻžāĻŦā§ āĻāĻāĻŋ āĻāĻā§āĻāĻžāϰāĻŖ āĻāϰāϤ⧠āĻšāϝāĻŧ āϏ⧠āĻŦāĻŋāώāϝāĻŧā§ āϏāĻŽāĻā§āϤāĻžāϝāĻŧ āĻāϏāϤ⧠āĻĒāĻžāϰā§āύāĻŋ) āĻāĻŦāĻ āĻā§āĻāĻāĻŽāĻā§ āĻāύā§āĻāĻžāϰāĻĢā§āϏ⧠āĻ āĻā§āϝāϏā§āϤāĨ¤ āĻāĻāϏāĻŋāĻāĻāĻž āĻāύā§āĻāĻžāϰāĻĢā§āϏāĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϞāĻžāĻĻāĻž āĻĻā§āĻāĻžāϝāĻŧ (āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāϝāĻŧā§āĻ āĻāĻŋāϞ), āϤāĻŦā§ āĻāĻā§āώāϰāĻŋāĻ āĻ āϰā§āĻĨā§ āϝ⧠āĻā§āύāĻ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰā§āϰ āĻāύā§āϝ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āϝāĻž āĻĻā§āĻāϤ⧠āĻšāĻŦā§ āϤāĻž āύāĻŽāύā§āϝāĻŧāĻāĻžāĻŦā§ āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āĻāϰāĻž āϏāĻŽā§āĻāĻŦ (āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āϞāĻžāϏ āĻāĻŋāϞ, āϤāĻŦā§ āĻāĻŽāĻŋ āĻāĻāĻŋāϰ āĻāύā§āϝ āĻ āύā§āĻ āϞāĻĄāĻŧāĻžāĻ āĻāϰā§āĻāĻŋ)āĨ¤
āĻĢāĻŋāϞā§āĻāĻžāϰ
āϏā§āĻā§āϰāϞ āĻŦāĻžāϰā§āϰ āĻāĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϏā§āĻā§āϰā§āϞ āĻā§āώā§āϤā§āϰā§āϰ āĻāĻāĻžāϰā§āϰ āĻ āύā§āĻĒāĻžāϤ āĻ āύā§āĻŽāĻžāύ āĻāϰā§āύāĨ¤
āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧāϤ, āĻĒā§āϰāϤā§āϝā§āĻā§āĻ āĻāĻāĻāĻŋ āĻŽāύāĻŋāĻāϰ⧠āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻĻā§āĻāϤ⧠āĻ āĻā§āϝāϏā§āϤ, āĻāĻžāϰāĻŖ CheckMk āĻāĻĒāύāĻžāĻā§ āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ Nagios āĻšā§āϏā§āĻā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĻā§āϝāĻŧ, āĻāĻŋāύā§āϤ⧠Icinga āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻāĻāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĻŋ (āĻāϏāϞā§, āĻāĻāĻŋ āĻĒāĻžāϰā§, āϤāĻŦā§ āύā§āĻā§ āĻāϰāĻ āĻŦā§āĻļāĻŋ)āĨ¤ āĻŦāĻŋāĻāϞā§āĻĒāĻāĻŋ āĻāĻŋāϞ āĻĨā§āϰā§āĻ āύāĻžāĻŽāĻ āĻāĻŋāĻā§, āĻāĻŋāύā§āϤ⧠āĻāĻāĻŋāϰ āĻĄāĻŋāĻāĻžāĻāύ āĻāĻāĻāύāĻā§ āĻāĻžāĻĄāĻŧāĻž āϏāĻŦāĻžāĻāĻā§ āĻĻāϞ⧠āĻ ā§āϞ⧠āĻĻāĻŋāϝāĻŧā§āĻā§ - āϝāĻŋāύāĻŋ āĻāĻāĻŋāϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻāĻŋāϝāĻŧā§āĻā§āύ (āĻāĻŽāĻŋ āύāϝāĻŧ)āĨ¤
āĻĨā§āϰā§āĻ āĻā§āϞā§āϞāĻŋāϤ⧠- āĻĻāϞā§āϰ āϏāϰā§āĻŦāϏāĻŽā§āĻŽāϤ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ
āĻāϝāĻŧā§āĻāĻĻāĻŋāύā§āϰ āĻŦā§āĻĻā§āϧāĻŋāĻŽāϤā§āϤāĻžāϰ āĻĒāϰ, āĻāĻŽāĻŋ āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻŽāύāĻŋāĻāϰāĻŋāĻāϝāĻŧā§āϰ āϧāĻžāϰāĻŖāĻžāĻāĻŋ āĻĒā§āϰāϏā§āϤāĻžāĻŦ āĻāϰā§āĻāĻŋ, āϝāĻāύ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻā§āύ⧠āĻāĻāĻāύ āĻŽāĻžāϏā§āĻāĻžāϰ āĻšā§āϏā§āĻ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻĻā§āĻāĻŋ āϏā§āϞā§āĻ āĻĨāĻžāĻā§ - āĻāĻāĻāĻŋ āĻĄā§āĻ/āĻā§āϏā§āĻā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻŦāĻšāĻŋāϰāĻžāĻāϤ āĻšā§āϏā§āĻ āĻ āύā§āϝ āϏāϰāĻŦāϰāĻžāĻšāĻāĻžāϰā§āϤ⧠āĻĨāĻžāĻā§ āϝāĻžāϤ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻŖ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻŦāĻž āĻāĻāĻāĻŋ āĻŦāĻšāĻŋāϰāĻžāĻāϤ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻ āĻĻā§āώā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§ āϏā§āĻŦāĻž. āĻāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύāĻāĻŋ āĻāĻāĻāĻŋ āĻāϝāĻŧā§āĻŦ āĻāύā§āĻāĻžāϰāĻĢā§āϏ⧠āϏāĻŽāϏā§āϤ āϏāĻŽāϏā§āϝāĻž āĻĻā§āĻāĻž āϏāĻŽā§āĻāĻŦ āĻāϰā§āĻā§ āĻāĻŦāĻ āĻŦā§āĻļ āĻāĻžāϞ āĻāĻžāĻ āĻāϰā§āĻā§, āĻāĻŋāύā§āϤ⧠āĻĒāĻžāĻĒā§āĻ... āĻĒāĻžāĻĒā§āĻā§āϰ āϏāĻŽāϏā§āϝāĻž āĻšāϞ āϝ⧠āĻŽāĻžāϏā§āĻāĻžāϰ āĻšā§āϏā§āĻāĻā§ āĻāĻāύ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϏāĻŽāϏā§āϤ āĻšā§āϏā§āĻ āĻāĻŦāĻ āĻĒāϰāĻŋāώā§āĻŦāĻž/āĻā§āĻ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻžāύāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻā§āύāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āϤāĻžāĻĻā§āϰ āĻŦāĻŋāϤāϰāĻŖ āĻāϰāϤ⧠(dev-test, staging-prod, ext), āĻāĻŋāύā§āϤ⧠Icinga API-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ āĻĒāĻžāĻ āĻžāϤ⧠āĻāϝāĻŧā§āĻ āϏā§āĻā§āύā§āĻĄ āϏāĻŽāϝāĻŧ āϞāĻžāĻā§, āĻāĻŋāύā§āϤ⧠āϏāĻŽāϏā§āϤ āĻšā§āϏā§āĻā§āϰ āĻāύā§āϝ āϏāĻŽāϏā§āϤ āĻĒāϰāĻŋāώā§āĻŦāĻžāϰ āĻĒāĻžāĻĒā§āĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āϏāĻāĻāϞāύ āĻāϰāϤ⧠āĻāϝāĻŧā§āĻ āĻŽāĻŋāύāĻŋāĻ āϏāĻŽāϝāĻŧ āϞāĻžāĻā§āĨ¤ āĻāĻāĻŋ āĻāĻāύāĻ āĻāĻŽāĻžāϰ āĻāĻĒāϰ āĻĻā§āώāĻžāϰā§āĻĒ āĻāϰāĻž āĻšāĻā§āĻā§, āϝāĻĻāĻŋāĻ āĻāĻŽāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻŦāĻžāϰ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰā§āĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āϏāĻŦāĻāĻŋāĻā§ āĻāĻžāĻ āĻāϰ⧠āĻāĻŦāĻ āĻā§āύ āĻāĻāĻŋ āĻāϤ āϏāĻŽāϝāĻŧ āύā§āϝāĻŧāĨ¤
āϤā§āϤā§āϝāĻŧāϤ, āĻāĻāĻžāύ⧠āĻāĻāĻā§āĻā§āĻ āϏā§āύā§āĻĢā§āϞā§āĻā§āϏ āϰāϝāĻŧā§āĻā§ - āϝā§āĻā§āϞāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϏāĻŋāϏā§āĻā§āĻŽ āĻĨā§āĻā§ āĻāϞāĻžāĻĻāĻž āĻāĻžāϰāĻŖ āϤāĻžāĻĻā§āϰ āĻŽāϧā§āϝ⧠āĻŦāĻŋāĻļā§āώ āĻāĻŋāĻā§ āϰāϝāĻŧā§āĻā§, āϤāĻžāĻ āϏāĻžāϧāĻžāϰāĻŖ āύāĻŋāϝāĻŧāĻŽāĻā§āϞāĻŋ āϤāĻžāĻĻā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻĒā§āϰāϝā§āĻā§āϝ āύāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āϏāĻŽā§āĻŽā§āĻ āĻāĻā§āϰāĻŽāĻŖ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ - āϝāĻĻāĻŋ āĻ ā§āϝāĻžāϞāĻžāϰā§āĻŽ āĻĨāĻžāĻā§ āϤāĻŦā§ āĻŦāĻžāϏā§āϤāĻŦā§ āϏāĻŦāĻāĻŋāĻā§ āĻ āĻŋāĻāĻ āĻžāĻ āĻĨāĻžāĻā§, āϤāĻŦā§ āĻāĻŽāĻžāĻā§ āĻāϰāĻ āĻāĻā§āϰāĻāĻžāĻŦā§ āĻāύāύ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻā§āύ āĻāĻāĻŋ āĻāĻŽāĻžāĻā§ āϏāϤāϰā§āĻ āĻāϰ⧠āϤāĻž āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāϤ⧠āĻšāĻŦā§, āϝāĻĻāĻŋāĻ āĻāĻāĻŋ āĻāĻāĻŋāϤ āύāϝāĻŧāĨ¤ āĻŦāĻž āϤāĻĻā§āĻŦāĻŋāĻĒāϰā§āϤ - āĻā§āύ āύāĻžāĻāĻŋāĻāϏ āĻāϤāĻā§āĻāĻŋāϤ, āĻāĻŋāύā§āϤ⧠āĻāĻāϏāĻŋāĻāĻāĻž āĻāϰ⧠āύāĻžāĨ¤
āĻāϤā§āϰā§āĻĨāϤ, āύāĻžāĻāĻŋāĻāϏ āĻāĻāĻžāύ⧠āĻāĻŽāĻžāϰ āĻāĻā§ āϤāĻŋāύ āĻŦāĻāϰ āĻāĻžāĻ āĻāϰā§āĻā§ āĻāĻŦāĻ āĻāĻŽāĻžāϰ āύāϤā§āύ āĻĢā§āϝāĻžāĻāϞāĻžāĻĄ āĻšāĻŋāĻĒāϏā§āĻāĻžāϰ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϤā§āϞāύāĻžāϝāĻŧ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ āϤāĻžāϰ āĻāĻĒāϰ āĻŦā§āĻļāĻŋ āĻāϏā§āĻĨāĻž āĻāĻŋāϞ, āϤāĻžāĻ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻāĻāϏāĻŋāĻā§āĻāĻž āĻāϤāĻā§āĻā§āϰ āĻāύā§āĻŽ āĻĻāĻŋāϝāĻŧā§āĻā§, āύāĻžāĻāĻŋāĻāϏ āĻāĻāĻ āĻŦāĻŋāώāϝāĻŧā§ āĻāϤā§āϤā§āĻāĻŋāϤ āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ āĻā§āĻ āĻāĻŋāĻā§āĻ āĻāϰā§āύāĻŋāĨ¤ āĻāĻŋāύā§āϤ⧠āĻā§āĻŦ āĻāĻŽāĻ Icinga Nagios āĻāϰ āĻā§āϝāĻŧā§ āĻāĻā§ āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ āĻ ā§āϝāĻžāϞāĻžāϰā§āĻŽ āϤā§āϰāĻŋ āĻāϰā§āĻā§ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻā§āϰā§āϤāϰ āϏāĻŽāϏā§āϝāĻž āĻŦāϞ⧠āĻŽāύ⧠āĻāϰāĻŋ, āϝāĻž āĻāĻŽāĻŋ "āĻāĻĒāϏāĻāĻšāĻžāϰ" āĻŦāĻŋāĻāĻžāĻā§ āĻāĻĨāĻž āĻŦāϞāĻŦāĨ¤
āĻĢāϞāϏā§āĻŦāϰā§āĻĒ, āĻāĻŽāĻŋāĻļāύāĻŋāĻ 5 āĻŽāĻžāϏā§āϰāĻ āĻŦā§āĻļāĻŋ āϏāĻŽāϝāĻŧ āϧāϰ⧠āĻŦāĻŋāϞāĻŽā§āĻŦāĻŋāϤ āĻšāϝāĻŧā§āĻāĻŋāϞ (āĻāϏāϞ⧠28 āĻā§āύ, 2018-āĻāϰ āĻāύā§āϝ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ - 3 āĻĄāĻŋāϏā§āĻŽā§āĻŦāϰ, 2018), āĻĒā§āϰāϧāĻžāύāϤ "āĻĒā§āϝāĻžāϰāĻŋāĻāĻŋ āĻā§āĻ" āĻāϰ āĻāĻžāϰāĻŖā§ - āϏā§āĻ āĻŦāĻžāĻā§ āĻāĻĨāĻž āϝāĻāύ āύāĻžāĻāĻŋāĻāϏ⧠āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻĒāϰāĻŋāώā§āĻŦāĻž āϰāϝāĻŧā§āĻā§ āϝāĻž āĻā§āĻ āĻāĻžāύ⧠āύāĻž āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϤ āĻāϝāĻŧā§āĻ āĻŦāĻāϰ āϧāϰ⧠āĻāĻŋāĻā§āĻ āĻļā§āύāĻŋāύāĻŋ, āĻāĻŋāύā§āϤ⧠āĻāĻāύāĻ āϤāĻžāϰāĻž āĻŦāĻŋāύāĻž āĻāĻžāϰāĻŖā§ āϏāĻŽāĻžāϞā§āĻāύāĻž āĻāϰā§āĻā§ āĻāĻŦāĻ āĻāĻŽāĻžāĻā§ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ āĻā§āύ āϤāĻžāϰāĻž āĻāĻŽāĻžāϰ āĻĒā§āϝāĻžāύā§āϞ⧠āĻāĻŋāϞ āύāĻž āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āĻāĻāϏāĻŋāĻāĻāĻžāϤ⧠āϝā§āĻā§āϤ āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ āϝāĻžāϤ⧠"āĻĒā§āϝāĻžāϰāĻŋāĻāĻŋ āĻā§āĻ āϏāĻŽā§āĻĒā§āϰā§āĻŖ" (āύāĻžāĻāĻŋāĻāϏ⧠āϏāĻŽāϏā§āϤ āĻĒāϰāĻŋāώā§āĻŦāĻž/āĻā§āĻ Icinga-āĻāϰ āĻĒāϰāĻŋāώā§āĻŦāĻž/āĻā§āĻāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞ⧠āϝāĻžāϝāĻŧ)
āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ:
āĻĒā§āϰāĻĨāĻŽāĻāĻŋ āĻšāϞ āĻā§āĻĄ āĻŦāύāĻžāĻŽ āĻĄā§āĻāĻž āϝā§āĻĻā§āϧ, āϝā§āĻŽāύ āĻĒāĻžāĻĒā§āĻ āϏā§āĻāĻžāĻāϞāĨ¤ āϏāĻŽāϏā§āϤ āĻĄā§āĻāĻž, āĻāĻā§āĻŦāĻžāϰ⧠āϏāĻŦāĻāĻŋāĻā§, āĻ
āĻŦāĻļā§āϝāĻ āĻšāĻŋāϝāĻŧāĻžāϰ⧠āĻĨāĻžāĻāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻ
āύā§āϝ āĻāĻŋāĻā§ āύāϝāĻŧ⧎ āϏāĻŽāϏā§āϤ āĻā§āĻĄ .pp āĻĢāĻžāĻāϞ⧠āĻāĻā§āĨ¤ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ, āĻŦāĻŋāĻŽā§āϰā§āϤāϤāĻž, āĻĢāĻžāĻāĻļāύ - āϏāĻŦāĻāĻŋāĻā§ āĻĒāĻŋāĻĒāĻŋāϤ⧠āϝāĻžāϝāĻŧāĨ¤
āĻĢāϞāϏā§āĻŦāϰā§āĻĒ, āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāĻā§ āĻāĻāĻā§āĻā§āĻ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āϰāϝāĻŧā§āĻā§ (āϞā§āĻāĻžāϰ āϏāĻŽāϝāĻŧ 165āĻāĻŋ) āĻāĻŦāĻ 68āĻāĻŋ āĻāϝāĻŧā§āĻŦ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϰāϝāĻŧā§āĻā§ āϝāĻž āĻāϰā§āĻŽāĻā§āώāĻŽāϤāĻž āĻāĻŦāĻ SSL āĻļāĻāϏāĻžāĻĒāϤā§āϰā§āϰ āĻŦā§āϧāϤāĻžāϰ āĻāύā§āϝ āύāĻŋāϰā§āĻā§āώāĻŖ āĻāϰāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ⧎ āĻāĻŋāύā§āϤ⧠āĻāϤāĻŋāĻšāĻžāϏāĻŋāĻ āĻšā§āĻŽā§āϰāϝāĻŧā§āĻĄā§āϰ āĻāĻžāϰāĻŖā§, āύāĻāϰāĻĻāĻžāϰāĻŋ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āĻāύā§āϝ āϤāĻĨā§āϝ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻāĻŋāĻāϞā§āϝāĻžāĻŦ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ āĻĨā§āĻā§ āύā§āĻāϝāĻŧāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻĒāĻžāĻĒā§āĻ 3 āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻŦāĻŋāύā§āϝāĻžāϏ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧāύāĻŋ, āϝāĻž āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻāĻŋāϞāϤāĻž āϤā§āϰāĻŋ āĻāϰā§āĨ¤
āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āĻāύā§āϝ āĻĒā§āϤā§āϞ-āĻā§āĻĄ, āĻāĻĒāύāĻžāϰ āĻā§āĻ āϰāĻā§āώāĻž āĻāϰā§āύ
define profiles::services::monitoring::docker_apps(
Hash $app_list,
Hash $apps_accessible_from,
Hash $apps_access_list,
Hash $webhost_defaults,
Hash $webcheck_defaults,
Hash $service_overrides,
Hash $targets,
Hash $app_checks,
)
{
#### APPS ####
$zone = $name
$app_list.each | String $app_name, Hash $app_data |
{
$notify_group = { 'notify_group' => ($webcheck_defaults[$zone]['notify_group'] + pick($app_data['notify_group'], {} )) } # adds notifications for default group (systems) + any group defined in int/pm_docker_apps.eyaml
$data = merge($webhost_defaults, $apps_accessible_from, $app_data)
$site_domain = $app_data['site_domain']
$regexp = pick($app_data['check_regex'], 'html') # Pick a regex to check
$check_url = $app_data['check_url'] ? {
undef => { 'http_uri' => '/' },
default => { 'http_uri' => $app_data['check_url'] }
}
$check_regex = $regexp ?{
'absent' => {},
default => {'http_expect_body_regex' => $regexp}
}
$site_domain.each | String $vhost, Hash $vdata | { # Split an app by domains if there are two or more
$vhost_name = {'http_vhost' => $vhost}
$vars = $data['vars'] + $vhost_name + $check_regex + $check_url
$web_ipaddress = is_array($vdata['web_ipaddress']) ? { # Make IP-address an array if it's not, because askizzy has 2 ips and it's an array
true => $vdata['web_ipaddress'],
false => [$vdata['web_ipaddress']],
}
$access_from_zones = [$zone] + $apps_access_list[$data['accessible_from']] # Merge default zone (where the app is defined) and extra zones if they exist
$web_ipaddress.each | String $ip_address | { # For each IP (if we have multiple)
$suffix = length($web_ipaddress) ? { # If we have more than one - add IP as a suffix to this hostname to avoid duplicating resources
1 => '',
default => "_${ip_address}"
}
$octets = split($ip_address, '.')
$ip_tag = "${octets[2]}.${octets[3]}" # Using last octet only causes a collision between nginx-vip 203.15.70.94 and ext. ip 49.255.194.94
$access_from_zones.each | $zone_prefix |{
$zone_target = $targets[$zone_prefix]
$nginx_vip_name = "${zone_prefix}_nginx-vip-${ip_tag}" # If it's a host for ext - prefix becomes 'ext_' (ext_nginx-vip...)
$nginx_host_vip = {
$nginx_vip_name => {
ensure => present,
target => $zone_target,
address => $ip_address,
check_command => 'hostalive',
groups => ['nginx_vip',],
}
}
$ssl_vars = $app_checks['ssl']
$regex_vars = $app_checks['http'] + $vars + $webcheck_defaults[$zone] + $notify_group
if !defined( Profiles::Services::Monitoring::Host[$nginx_vip_name] ) {
ensure_resources('profiles::services::monitoring::host', $nginx_host_vip)
}
if !defined( Icinga2::Object::Service["${nginx_vip_name}_ssl"] ) {
icinga2::object::service {"${nginx_vip_name}_ssl":
ensure => $data['ensure'],
assign => ["host.name == $nginx_vip_name",],
groups => ['webchecks',],
check_command => 'ssl',
check_interval => $service_overrides['ssl']['check_interval'],
target => $targets['services'],
apply => true,
vars => $ssl_vars
}
}
if $regexp != 'absent'{
if !defined(Icinga2::Object::Service["${vhost}${$suffix} regex"]){
icinga2::object::service {"${vhost}${$suffix} regex":
ensure => $data['ensure'],
assign => ["match(*_nginx-vip-${ip_tag}, host.name)",],
groups => ['webchecks',],
check_command => 'http',
check_interval => $service_overrides['regex']['check_interval'],
target => $targets['services'],
enable_flapping => true,
apply => true,
vars => $regex_vars
}
}
}
}
}
}
}
}āĻšā§āϏā§āĻ āĻāĻŦāĻ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻā§āĻĄāĻāĻŋāĻ āĻāϝāĻŧāĻžāύāĻ āĻĻā§āĻāĻžāϝāĻŧ:
monitoring/config.pp
class profiles::services::monitoring::config(
Array $default_config,
Array $hostgroups,
Hash $hosts = {},
Hash $host_defaults,
Hash $services,
Hash $service_defaults,
Hash $service_overrides,
Hash $webcheck_defaults,
Hash $servicegroups,
String $servicegroup_target,
Hash $user_defaults,
Hash $users,
Hash $oncall,
Hash $usergroup_defaults,
Hash $usergroups,
Hash $notifications,
Hash $notification_defaults,
Hash $notification_commands,
Hash $timeperiods,
Hash $webhost_defaults,
Hash $apps_access_list,
Hash $check_commands,
Hash $hosts_api = {},
Hash $targets = {},
Hash $host_api_defaults = {},
)
{
# Profiles::Services::Monitoring::Hostgroup <<| |>> # will be enabled when we move to icinga completely
#### APPS ####
case $location {
'int', 'ext': {
$apps_by_zone = {}
}
'pm': {
$int_apps = hiera('int_docker_apps')
$int_app_defaults = hiera('int_docker_app_common')
$st_apps = hiera('staging_docker_apps')
$srs_apps = hiera('pm_docker_apps_srs')
$pm_apps = hiera('pm_docker_apps') + $st_apps + $srs_apps
$pm_app_defaults = hiera('pm_docker_app_common')
$apps_by_zone = {
'int' => $int_apps,
'pm' => $pm_apps,
}
$app_access_by_zone = {
'int' => {'accessible_from' => $int_app_defaults['accessible_from']},
'pm' => {'accessible_from' => $pm_app_defaults['accessible_from']},
}
}
default: {
fail('Please ensure the node has $location fact set (int, pm, ext)')
}
}
file { '/etc/icinga2/conf.d/':
ensure => directory,
recurse => true,
purge => true,
owner => 'icinga',
group => 'icinga',
mode => '0750',
notify => Service['icinga2'],
}
$default_config.each | String $file_name |{
file {"/etc/icinga2/conf.d/${file_name}":
ensure => present,
source => "puppet:///modules/profiles/services/monitoring/default_config/${file_name}",
owner => 'icinga',
group => 'icinga',
mode => '0640',
}
}
$app_checks = {
'ssl' => $services['webchecks']['checks']['ssl']['vars'],
'http' => $services['webchecks']['checks']['http_regexp']['vars']
}
$apps_by_zone.each | String $zone, Hash $app_list | {
profiles::services::monitoring::docker_apps{$zone:
app_list => $app_list,
apps_accessible_from => $app_access_by_zone[$zone],
apps_access_list => $apps_access_list,
webhost_defaults => $webhost_defaults,
webcheck_defaults => $webcheck_defaults,
service_overrides => $service_overrides,
targets => $targets,
app_checks => $app_checks,
}
}
#### HOSTS ####
# Profiles::Services::Monitoring::Host <<| |>> # This is for spaceship invasion when it's ready.
$hosts_has_large_disks = query_nodes('mountpoints.*.size_bytes >= 1099511627776')
$hosts.each | String $hostgroup, Hash $list_of_hosts_with_settings | { # Splitting site lists by hostgroups - docker_host/gluster_host/etc
$list_of_hosts_in_group = $list_of_hosts_with_settings['hosts']
$hostgroup_settings = $list_of_hosts_with_settings['settings']
$merged_hostgroup_settings = deep_merge($host_defaults, $list_of_hosts_with_settings['settings'])
$list_of_hosts_in_group.each | String $host_name, Hash $host_settings |{ # Splitting grouplists by hosts
# Is this host in the array $hosts_has_large_disks ? If so set host.vars.has_large_disks
if ( $hosts_has_large_disks.reduce(false) | $found, $value| { ( $value =~ "^${host_name}" ) or $found } ) {
$vars_has_large_disks = { 'has_large_disks' => true }
} else {
$vars_has_large_disks = {}
}
$host_data = deep_merge($merged_hostgroup_settings, $host_settings)
$hostgroup_settings_vars = pick($hostgroup_settings['vars'], {})
$host_settings_vars = pick($host_settings['vars'], {})
$host_notify_group = delete_undef_values($host_defaults['vars']['notify_group'] + $hostgroup_settings_vars['notify_group'] + $host_settings_vars['notify_group'])
$host_data_vars = delete_undef_values(deep_merge($host_data['vars'] , {'notify_group' => $host_notify_group}, $vars_has_large_disks)) # Merging vars separately
$hostgroups = delete_undef_values([$hostgroup] + $host_data['groups'])
profiles::services::monitoring::host{$host_name:
ensure => $host_data['ensure'],
display_name => $host_data['display_name'],
address => $host_data['address'],
groups => $hostgroups,
target => $host_data['target'],
check_command => $host_data['check_command'],
check_interval => $host_data['check_interval'],
max_check_attempts => $host_data['max_check_attempts'],
vars => $host_data_vars,
template => $host_data['template'],
}
}
}
if !empty($hosts_api){ # All hosts managed by API
$hosts_api.each | String $zone, Hash $hosts_api_zone | { # Split api hosts by zones
$hosts_api_zone.each | String $hostgroup, Hash $list_of_hosts_with_settings | { # Splitting site lists by hostgroups - docker_host/gluster_host/etc
$list_of_hosts_in_group = $list_of_hosts_with_settings['hosts']
$hostgroup_settings = $list_of_hosts_with_settings['settings']
$merged_hostgroup_settings = deep_merge($host_api_defaults, $list_of_hosts_with_settings['settings'])
$list_of_hosts_in_group.each | String $host_name, Hash $host_settings |{ # Splitting grouplists by hosts
# Is this host in the array $hosts_has_large_disks ? If so set host.vars.has_large_disks
if ( $hosts_has_large_disks.reduce(false) | $found, $value| { ( $value =~ "^${host_name}" ) or $found } ) {
$vars_has_large_disks = { 'has_large_disks' => true }
} else {
$vars_has_large_disks = {}
}
$host_data = deep_merge($merged_hostgroup_settings, $host_settings)
$hostgroup_settings_vars = pick($hostgroup_settings['vars'], {})
$host_settings_vars = pick($host_settings['vars'], {})
$host_api_notify_group = delete_undef_values($host_defaults['vars']['notify_group'] + $hostgroup_settings_vars['notify_group'] + $host_settings_vars['notify_group'])
$host_data_vars = delete_undef_values(deep_merge($host_data['vars'] , {'notify_group' => $host_api_notify_group}, $vars_has_large_disks))
$hostgroups = delete_undef_values([$hostgroup] + $host_data['groups'])
if defined(Profiles::Services::Monitoring::Host[$host_name]){
$hostname = "${host_name}_from_${zone}"
}
else
{
$hostname = $host_name
}
profiles::services::monitoring::host{$hostname:
ensure => $host_data['ensure'],
display_name => $host_data['display_name'],
address => $host_data['address'],
groups => $hostgroups,
target => "${host_data['target_base']}/${zone}/hosts.conf",
check_command => $host_data['check_command'],
check_interval => $host_data['check_interval'],
max_check_attempts => $host_data['max_check_attempts'],
vars => $host_data_vars,
template => $host_data['template'],
}
}
}
}
}
#### END OF HOSTS ####
#### SERVICES ####
$services.each | String $service_group, Hash $s_list |{ # Service_group and list of services in that group
$service_list = $s_list['checks'] # List of actual checks, separately from SG settings
$service_list.each | String $service_name, Hash $data |{
$merged_defaults = merge($service_defaults, $s_list['settings']) # global service defaults + service group defaults
$merged_data = merge($merged_defaults, $data)
$settings_vars = pick($s_list['settings']['vars'], {})
$this_service_vars = pick($data['vars'], {})
$all_service_vars = delete_undef_values($service_defaults['vars'] + $settings_vars + $this_service_vars)
# If we override default check_timeout, but not nrpe_timeout, make nrpe_timeout the same as check_timeout
if ( $merged_data['check_timeout'] and ! $this_service_vars['nrpe_timeout'] ) {
# NB: Icinga will convert 1m to 60 automatically!
$nrpe = { 'nrpe_timeout' => $merged_data['check_timeout'] }
} else {
$nrpe = {}
}
# By default we use nrpe and all commands are run via nrpe. So vars.nrpe_command = $service_name is a default value
# If it's server-side Icinga command - we don't need 'nrpe_command'
# but there is no harm to have that var and the code is shorter
if $merged_data['check_command'] == 'nrpe'{
$check_command = $merged_data['vars']['nrpe_command'] ? {
undef => { 'nrpe_command' => $service_name },
default => { 'nrpe_command' => $merged_data['vars']['nrpe_command'] }
}
}else{
$check_command = {}
}
# Assembling $vars from Global Default service settings, servicegroup settings, this particular check settings and let's not forget nrpe settings.
if $all_service_vars['graphite_template'] {
$graphite_template = {'check_command' => $all_service_vars['graphite_template']}
}else{
$graphite_template = {'check_command' => $service_name}
}
$service_notify = [] + pick($settings_vars['notify_group'], []) + pick($this_service_vars['notify_group'], []) # pick is required everywhere, otherwise becomes "The value '' cannot be converted to Numeric"
$service_notify_group = $service_notify ? {
[] => $service_defaults['vars']['notify_group'],
default => $service_notify
} # Assing default group (systems) if no other groups are defined
$vars = $all_service_vars + $nrpe + $check_command + $graphite_template + {'notify_group' => $service_notify_group}
# This needs to be merged separately, because merging it as part of MERGED_DATA overwrites arrays instead of merging them, so we lose some "assign" and "ignore" values
$assign = delete_undef_values($service_defaults['assign'] + $s_list['settings']['assign'] + $data['assign'])
$ignore = delete_undef_values($service_defaults['ignore'] + $s_list['settings']['ignore'] + $data['ignore'])
icinga2::object::service {$service_name:
ensure => $merged_data['ensure'],
apply => $merged_data['apply'],
enable_flapping => $merged_data['enable_flapping'],
assign => $assign,
ignore => $ignore,
groups => [$service_group],
check_command => $merged_data['check_command'],
check_interval => $merged_data['check_interval'],
check_timeout => $merged_data['check_timeout'],
check_period => $merged_data['check_period'],
display_name => $merged_data['display_name'],
event_command => $merged_data['event_command'],
retry_interval => $merged_data['retry_interval'],
max_check_attempts => $merged_data['max_check_attempts'],
target => $merged_data['target'],
vars => $vars,
template => $merged_data['template'],
}
}
}
#### END OF SERVICES ####
#### OTHER BORING STUFF ####
$servicegroups.each | $servicegroup, $description |{
icinga2::object::servicegroup{ $servicegroup:
target => $servicegroup_target,
display_name => $description
}
}
$hostgroups.each| String $hostgroup |{
profiles::services::monitoring::hostgroup { $hostgroup:}
}
$notifications.each | String $name, Hash $settings |{
$assign = pick($notification_defaults['assign'], []) + $settings['assign']
$ignore = pick($notification_defaults['ignore'], []) + $settings['ignore']
$merged_settings = $settings + $notification_defaults
icinga2::object::notification{$name:
target => $merged_settings['target'],
apply => $merged_settings['apply'],
apply_target => $merged_settings['apply_target'],
command => $merged_settings['command'],
interval => $merged_settings['interval'],
states => $merged_settings['states'],
types => $merged_settings['types'],
assign => delete_undef_values($assign),
ignore => delete_undef_values($ignore),
user_groups => $merged_settings['user_groups'],
period => $merged_settings['period'],
vars => $merged_settings['vars'],
}
}
# Merging notification settings for users with other settings
$users_oncall = deep_merge($users, $oncall)
# Magic. Do not touch.
create_resources('icinga2::object::user', $users_oncall, $user_defaults)
create_resources('icinga2::object::usergroup', $usergroups, $usergroup_defaults)
create_resources('icinga2::object::timeperiod',$timeperiods)
create_resources('icinga2::object::checkcommand', $check_commands)
create_resources('icinga2::object::notificationcommand', $notification_commands)
profiles::services::sudoers { 'icinga_runs_ping_l2':
ensure => present,
sudoersd_template => 'profiles/os/redhat/centos7/sudoers/icinga.erb',
}
}āĻāĻŽāĻŋ āĻāĻāύāĻ āĻāĻ āύā§āĻĄāϞāϏāĻā§āϞāĻŋāϤ⧠āĻāĻžāĻ āĻāϰāĻāĻŋ āĻāĻŦāĻ āϝāϤāĻāĻž āϏāĻŽā§āĻāĻŦ āĻāύā§āύāϤ āĻāϰāĻāĻŋāĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻāĻ āĻā§āĻĄāĻāĻŋāĻ āĻāĻŽāĻžāĻĻā§āϰ āĻšāĻŋāϝāĻŧāĻžāϰāĻžāϝāĻŧ āĻāĻāĻāĻŋ āϏāĻšāĻ āĻāĻŦāĻ āĻŦā§āϧāĻāĻŽā§āϝ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧ:
āĻāĻĒāĻžāϤā§āϤ
profiles::services::monitoring::config::services:
perf_checks:
settings:
check_interval: '2m'
assign:
- 'host.vars.type == linux'
checks:
procs: {}
load: {}
memory: {}
disk:
check_interval: '5m'
vars:
notification_period: '24x7'
disk_iops:
vars:
notifications:
- 'silent'
cpu:
vars:
notifications:
- 'silent'
dns_fqdn:
check_interval: '15m'
ignore:
- 'xenserver in host.groups'
vars:
notifications:
- 'silent'
iftraffic_nrpe:
vars:
notifications:
- 'silent'
logging:
settings:
assign:
- 'logserver in host.groups'
checks:
rsyslog: {}
nginx_limit_req_other: {}
nginx_limit_req_s2s: {}
nginx_limit_req_s2x: {}
nginx_limit_req_srs: {}
logstash: {}
logstash_api:
vars:
notifications:
- 'silent'āϏāĻŽāϏā§āϤ āĻā§āĻ āĻā§āώā§āĻ ā§āϤ⧠āĻŦāĻŋāĻāĻā§āϤ, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āώā§āĻ ā§āϰ āĻĄāĻŋāĻĢāϞā§āĻ āϏā§āĻāĻŋāĻāϏ āϰāϝāĻŧā§āĻā§ āϝā§āĻŽāύ āĻāĻ āĻā§āĻāĻā§āϞāĻŋ āĻā§āĻĨāĻžāϝāĻŧ āĻāĻŦāĻ āĻāϤ āĻāύ āĻāύ āĻāĻžāϞāĻžāϤ⧠āĻšāĻŦā§, āĻā§ āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋ āĻĒāĻžāĻ āĻžāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻžāĻā§ āĻĒāĻžāĻ āĻžāϤ⧠āĻšāĻŦā§āĨ¤
āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āĻā§āϰ āĻŽāϧā§āϝā§, āĻāĻĒāύāĻŋ āϝ⧠āĻā§āύāĻ āĻŦāĻŋāĻāϞā§āĻĒāĻā§ āĻāĻāĻžāϰāϰāĻžāĻāĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻāĻ āϏāĻŽāϏā§āϤāĻāĻŋ āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āϏāĻŽāϏā§āϤ āĻā§āĻā§āϰ āĻĄāĻŋāĻĢāϞā§āĻ āϏā§āĻāĻŋāĻāϏ⧠āϝā§āĻ āĻāϰā§āĨ¤ āĻāĻ āĻāĻžāϰāĻŖā§āĻ āĻāĻ āϧāϰāύā§āϰ āĻŦāĻžāĻā§ āĻāĻĨāĻž config.pp-āĻ āϞā§āĻāĻž āĻāĻā§ - āĻāĻāĻŋ āϏāĻŽāϏā§āϤ āĻĄāĻŋāĻĢāϞā§āĻ āϏā§āĻāĻŋāĻāϏāĻā§ āĻā§āϰā§āĻĒ āϏā§āĻāĻŋāĻāϏā§āϰ āϏāĻžāĻĨā§ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āĻĨāĻ āĻā§āĻā§āϰ āϏāĻžāĻĨā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰā§āĨ¤
āĻāϰā§āĻāĻāĻŋ āĻ āϤā§āϝāύā§āϤ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻŋāϞ āϏā§āĻāĻŋāĻāϏ⧠āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻž, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, http_regex āĻā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰā§āĻ, āĻ āĻŋāĻāĻžāύāĻž āĻāĻŦāĻ url āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āĻĢāĻžāĻāĻļāύāĨ¤
http_regexp:
assign:
- 'host.vars.http_regex'
- 'static_sites in host.groups'
check_command: 'http'
check_interval: '1m'
retry_interval: '20s'
max_check_attempts: 6
http_port: '{{ if(host.vars.http_port) { return host.vars.http_port } else { return 443 } }}'
vars:
notification_period: 'host.vars.notification_period'
http_vhost: '{{ if(host.vars.http_vhost) { return host.vars.http_vhost } else { return host.name } }}'
http_ssl: '{{ if(host.vars.http_ssl) { return false } else { return true } }}'
http_expect_body_regex: 'host.vars.http_regex'
http_uri: '{{ if(host.vars.http_uri) { return host.vars.http_uri } else { return "/" } }}'
http_onredirect: 'follow'
http_warn_time: 8
http_critical_time: 15
http_timeout: 30
http_sni: trueāĻāϰ āĻŽāĻžāύ⧠āĻšāϞ- āϝāĻĻāĻŋ āĻšā§āϏā§āĻā§āϰ āϏāĻāĻā§āĻāĻžāϝāĻŧ āĻāĻāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āĻĨāĻžāĻā§ http_port â āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āĻ
āύā§āϝāĻĨāĻžāϝāĻŧ 443āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻā§āϝāĻžāĻŦāĻžāϰ āĻāϝāĻŧā§āĻŦ āĻāύā§āĻāĻžāϰāĻĢā§āϏ 9090 āĻ āĻšā§āϝāĻžāĻ āĻšāϝāĻŧ āĻāĻŦāĻ āĻāĻāύāĻŋāĻĢāĻžāĻ 7443 āĻ āĻšā§āϝāĻžāĻ āĻšāϝāĻŧāĨ¤
http_vhost āĻŽāĻžāύ⧠DNS āĻāĻĒā§āĻā§āώāĻž āĻāϰā§āύ āĻāĻŦāĻ āĻāĻ āĻ āĻŋāĻāĻžāύāĻžāĻāĻŋ āύāĻŋāύāĨ¤
āϝāĻĻāĻŋ uri āĻšā§āϏā§āĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻĨāĻžāĻā§ āϤāĻŦā§ āĻāĻāĻŋ āĻ
āύā§āϏāϰāĻŖ āĻāϰā§āύ, āĻ
āύā§āϝāĻĨāĻžāϝāĻŧ â/â āύāĻŋāύāĨ¤
http_ssl-āĻāϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āĻŽāĻāĻžāϰ āĻāϞā§āĻĒ āĻŦā§āϰāĻŋāϝāĻŧā§āĻā§ - āĻāĻ āϏāĻāĻā§āϰāĻŽāĻŖāĻāĻŋ āĻĻāĻžāĻŦāĻŋāϤ⧠āϏāĻāϝā§āĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āĻāϰāϤ⧠āĻāĻžāϝāĻŧāύāĻŋāĨ¤ āĻāĻŽāĻŋ āĻĻā§āϰā§āĻ āϏāĻŽāϝāĻŧā§āϰ āĻāύā§āϝ āĻāĻ āϞāĻžāĻāύāĻāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻŦāĻŋāĻā§āϰāĻžāύā§āϤ āĻāĻŋāϞāĻžāĻŽ āϝāϤāĻā§āώāĻŖ āύāĻž āĻāĻāĻŋ āĻāĻŽāĻžāϰ āĻŽāύ⧠āĻšāϝāĻŧ āϝ⧠āĻšā§āϏā§āĻā§āϰ āϏāĻāĻā§āĻāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞāĻāĻŋ āĻšāϞ:
http_ssl: falseāĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋāϤ⧠āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāĻŋāϤ
if(host.vars.http_ssl) { return false } else { return true }āĻāĻŋāĻāĻžāĻŦā§ āĻŽāĻŋāĻĨā§āϝāĻž āĻāĻŦāĻ āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āĻāĻāĻŋ āϏāĻā§āϰāĻŋāϝāĻŧ āĻāĻāĻ
if(false) { return false } else { return true }āĻ āϰā§āĻĨāĻžā§, āĻāϏāĻāϏāĻāϞ āĻā§āĻ āϏāĻŦāϏāĻŽāϝāĻŧ āϏāĻā§āϰāĻŋāϝāĻŧ āĻĨāĻžāĻā§āĨ¤ āĻāĻŽāĻŋ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ āĻāϰ⧠āĻāĻāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻāϰā§āĻāĻŋ:
http_ssl: noāϤāĻĨā§āϝāĻ:
āĻĒā§āĻļāĻžāĻĻāĻžāϰāϰāĻž:
- āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāύ āĻāĻāĻāĻŋ āĻŽāύāĻŋāĻāϰāĻŋāĻ āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻā§, āĻĻā§āĻāĻŋ āύāϝāĻŧ, āϝā§āĻŽāύāĻāĻŋ āĻāĻŽāϰāĻž āĻāϤ 7-8 āĻŽāĻžāϏ āϧāϰ⧠āĻāϰā§āĻāĻŋ, āĻ āĻĨāĻŦāĻž āĻāĻāĻāĻŋ āĻĒā§āϰāĻžāύ⧠āĻāĻŦāĻ āĻĻā§āϰā§āĻŦāϞāĨ¤
- āĻšā§āϏā§āĻ/āĻĒāϰāĻŋāώā§āĻŦāĻž(āĻā§āĻ) āĻĄā§āĻāĻž āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āĻāĻāύ (āĻāĻŽāĻžāϰ āĻŽāϤā§) āĻ āύā§āĻ āĻŦā§āĻļāĻŋ āĻĒāĻ āύāϝā§āĻā§āϝ āĻāĻŦāĻ āĻŦā§āϧāĻāĻŽā§āϝāĨ¤ āĻ āύā§āϝāĻĻā§āϰ āĻāύā§āϝ, āĻāĻāĻŋ āĻāϤāĻāĻž āϏā§āϏā§āĻĒāώā§āĻ āĻāĻŋāϞ āύāĻž, āϤāĻžāĻ āĻāĻŽāĻžāĻā§ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻāĻāĻāĻŋāϤ⧠āĻāϝāĻŧā§āĻāĻāĻŋ āĻĒā§āώā§āĻ āĻž āĻĒā§āϏā§āĻ āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ āϝ⧠āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰ⧠āĻāĻŦāĻ āĻā§āĻĨāĻžāϝāĻŧ āĻā§ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻāϰāϤ⧠āĻšāĻŦā§ āϤāĻž āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāϤā§āĨ¤
- āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻāĻŦāĻ āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§āĻāĻā§āϞāĻŋ āύāĻŽāύā§āϝāĻŧāĻāĻžāĻŦā§ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āϏāĻŽā§āĻāĻŦ, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, http_regexp āĻā§āĻ āĻāϰāϤā§, āĻāĻžāĻā§āĻā§āώāĻŋāϤ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ, āϰāĻŋāĻāĻžāϰā§āύ āĻā§āĻĄ, url āĻāĻŦāĻ āĻĒā§āϰā§āĻ āĻšā§āϏā§āĻ āϏā§āĻāĻŋāĻāϏ⧠āϏā§āĻ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
- āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻĄā§āϝāĻžāĻļāĻŦā§āϰā§āĻĄ āϰāϝāĻŧā§āĻā§, āϝāĻžāϰ āĻĒā§āϰāϤāĻŋāĻāĻŋāϰ āĻāύā§āϝ āĻāĻĒāύāĻŋ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻ ā§āϝāĻžāϞāĻžāϰā§āĻŽāĻā§āϞāĻŋāϰ āĻāĻĒāύāĻžāϰ āύāĻŋāĻāϏā§āĻŦ āϤāĻžāϞāĻŋāĻāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻĒā§āϤā§āϞ āĻāĻŦāĻ āĻŽāĻžāϰā§āĻ āĻ āύā§āϰā§āϧā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻ āϏāĻŽāϏā§āϤ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāύāϏ:
- āĻĻāϞā§āϰ āϏāĻĻāϏā§āϝāĻĻā§āϰ āĻāĻĄāĻŧāϤāĻž - āύāĻžāĻāĻŋāĻāϏ āĻāĻžāĻ āĻāϰā§āĻā§āύ, āĻāĻžāĻ āĻāϰā§āĻā§āύ āĻāĻŦāĻ āĻāĻžāĻ āĻāϰā§āĻā§āύ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻāĻ āĻāϏāĻŋāĻā§āĻāĻž āĻā§āϰāĻŽāĻžāĻāϤ āĻŦāĻāĻŋ āĻāĻŦāĻ āϧā§āϰāĨ¤ āĻāĻĒāύāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻāĻžāύ⧠āĻāϤāĻŋāĻšāĻžāϏ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āύ? āĻāĻš, āĻ āĻāĻŋāĻļāĻžāĻĒ, āĻāĻāĻŋ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž āĻšāϝāĻŧāύāĻŋ... (āĻāϏāϞ āϏāĻŽāϏā§āϝāĻž āĻšāϞ āĻ ā§āϝāĻžāϞāĻžāϰā§āĻŽ āĻāϤāĻŋāĻšāĻžāϏ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻĒāĻĄā§āĻ āĻšāϝāĻŧ āύāĻž, āĻļā§āϧā§āĻŽāĻžāϤā§āϰ F5 āĻĻā§āĻŦāĻžāϰāĻž)
- āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāĻĄāĻŧāϤāĻž - āϝāĻāύ āĻāĻŽāĻŋ āĻāϝāĻŧā§āĻŦ āĻāύā§āĻāĻžāϰāĻĢā§āϏ⧠"āĻāĻĒāĻĄā§āĻ" (āĻāĻāύāĻ āĻā§āĻ āĻāϰā§āύ) āĻā§āϞāĻŋāĻ āĻāϰāĻŋ - āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ āĻĢāϞāĻžāĻĢāϞ āĻŽāĻā§āĻāϞ āĻā§āϰāĻšā§āϰ āĻāĻŦāĻšāĻžāĻāϝāĻŧāĻžāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§, āĻŦāĻŋāĻļā§āώāϤ āĻāĻāĻŋāϞ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋāϰ āĻāĻĒāϰ āϝā§āĻā§āϞāĻŋ āĻāĻžāϞāĻžāύā§āϰ āĻāύā§āϝ āĻāϝāĻŧā§āĻ āϏā§āĻā§āύā§āĻĄā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ⧎ āĻāĻŽāύ āĻĢāϞāĻžāĻĢāϞ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĨ¤

- āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§, āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻĻā§āĻāĻŋ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻ āĻĒāĻžāϰā§āĻļāύā§āϰ āĻāϝāĻŧ āĻŽāĻžāϏā§āϰ āĻĒāϰāĻŋāϏāĻāĻā§āϝāĻžāύ āĻ āύā§āϏāĻžāϰā§, āύāĻžāĻāĻŋāĻāϏ āϏāĻŦāϏāĻŽāϝāĻŧ āĻāĻāϏāĻŋāĻā§āĻāĻžāϰ āĻā§āϝāĻŧā§ āĻĻā§āϰā§āϤ āĻāĻžāĻ āĻāϰā§āĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻŽāĻžāĻā§ āϏāϤā§āϝāĻŋāĻ āĻŦāĻŋāϰāĻā§āϤ āĻāϰā§āĻā§āĨ¤ āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āĻŽāύ⧠āĻšāĻā§āĻā§ āϤāĻžāϰāĻž āĻāĻžāĻāĻŽāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻāĻŋāĻā§ āĻā§āϞāĻŽāĻžāϞ āĻāϰā§āĻā§ āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋ āĻĒāĻžāĻāĻ āĻŽāĻŋāύāĻŋāĻā§ āĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧ, āĻāϏāϞ⧠āĻāĻāĻŋ āĻĒā§āϰāϤāĻŋ 5:30 āĻŦāĻž āĻāϰāĻāĻŽ āĻāĻŋāĻā§ āĻāĻā§āĨ¤
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āϝā§āĻā§āύ āϏāĻŽāϝāĻŧā§ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻāϰā§āύ (systemctl restart icinga2) - āϏā§āĻ āϏāĻŽāϝāĻŧā§ āĻĒā§āϰāĻāϤāĻŋāĻļā§āϞ āϏāĻŽāϏā§āϤ āĻā§āĻ āĻāĻāĻāĻŋ āĻā§āϰā§āϤāϰ āĻ ā§āϝāĻžāϞāĻžāϰā§āĻŽ āϤā§āϰāĻŋ āĻāϰāĻŦā§ āĻĒāϰā§āĻĻāĻžāϝāĻŧ āĻāĻŦāĻ āĻŦāĻžāĻāϰ⧠āĻĨā§āĻā§ āĻŽāύ⧠āĻšāĻā§āĻā§ āϝā§āύ āϏāĻŦāĻāĻŋāĻā§ āĻĒāĻĄāĻŧā§ āĻā§āĻā§ ().
āĻāĻŋāύā§āϤ⧠āϏāĻžāĻŽāĻā§āϰāĻŋāĻāĻāĻžāĻŦā§, āĻāĻāĻŋ āĻāĻžāĻ āĻāϰā§āĨ¤
āĻāϤā§āϏ: www.habr.com

