рдСрд╕реНрдЯреНрд░реЗрд▓рд┐рдпрд╛ рдореЗрдВ рдирд╛рдЧрд┐рдУрд╕ рд╕реЗ Icinga2 рддрдХ рдкрд▓рд╛рдпрди

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред


рдореИрдВ linux sysadmin рд╣реВрдВ, рдореИрдВ 2015 рдореЗрдВ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдкреЗрд╢реЗрд╡рд░ рд╡реАрдЬрд╛ рдкрд░ рд░реВрд╕ рд╕реЗ рдСрд╕реНрдЯреНрд░реЗрд▓рд┐рдпрд╛ рдЪрд▓рд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдПрдХ рдкрд┐рдЧрд▓реЗрдЯ рдХреЛ рдЯреНрд░реИрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЗрдЦ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ (рдлрд┐рд░ рднреА, рдпрджрд┐ рд░реБрдЪрд┐ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд▓рд┐рдЦреВрдВрдЧрд╛), рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдСрд╕реНрдЯреНрд░реЗрд▓рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд▓рд╛рдЗрдирдХреНрд╕-рдСрдкреНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рдХрд╛рдо рдореЗрдВ, рдореИрдВ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдкреНрд░рд╡рд╛рд╕ рдХрд╛ рдЖрд░рдВрднрдХрд░реНрддрд╛ рдерд╛ рджреВрд╕рд░реЗ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ - рдирд╛рдЧрд┐рдпреЛрд╕ => рдЗрд╕реНрд╕рд┐рдВрдЧрд╛ реиред


рдпрд╣ рд▓реЗрдЦ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рддрдХрдиреАрдХреА рд╣реИ рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдФрд░ рд╕рдВрд╕реНрдХреГрддрд┐ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рд╕реЗ рдЬреБрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, "рдХреЛрдб" рдЯреИрдЧ рдкрдкреЗрдЯ рдФрд░ рдпрдорд▓ рдХреЛрдб рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ "рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред


21 рджрд┐рд╕рдВрдмрд░ 2016 рдХреА рд╕реБрдмрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖред рдореИрдВ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдХрд╛рдо рдХреЗ рджрд┐рди рдХреЗ рдкрд╣рд▓реЗ рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ рдЕрдкрдВрдЬреАрдХреГрдд рдЕрдирд╛рдо рдХреЗ рд╕рд╛рде рд╣реИрдмрд░ рдкрдврд╝рддрд╛ рд╣реВрдВ, рдХреЙрдлреА рдХреЛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЖрдпрд╛ рд╣реВрдВред


рдЪреВрдВрдХрд┐ рдирд╛рдЧрд┐рдпреЛрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рджреЛ рдмрд╛рд░ рдмрд┐рдирд╛ рд╕реЛрдЪреЗ рд╕рдордЭреЗ рдореИрдВрдиреЗ рд░реЗрдбрдорд╛рдЗрди рдореЗрдВ рдЯрд┐рдХрдЯ рдмрдирд╛рдпрд╛ рдФрд░ рд▓рд┐рдВрдХ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдЪреИрдЯ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдСрд╕реНрдЯреНрд░реЗрд▓рд┐рдпрд╛ рдореЗрдВ рднреА рдпрд╣ рдкрд╣рд▓ рджрдВрдбрдиреАрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЦреНрдп рдЕрднрд┐рдпрдВрддрд╛ рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдореБрдЭ рдкрд░ рд▓рдЯрдХрд╛рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдХреА рдЦреЛрдЬ рдХреА рдереАред


Redmine рд╕реЗ рд╕реНрдХреНрд░реАрди

рд╣рдорд╛рд░реЗ рд╡рд┐рднрд╛рдЧ рдореЗрдВ, рд╣рдорд╛рд░реА рд░рд╛рдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рднрд▓реЗ рд╣реА рдкрд╕рдВрдж рд╕реНрдкрд╖реНрдЯ рд╣реЛ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ googling рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд░реВрд╕ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реНрдерд╛рди рдкрд░ рдореИрдВрдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛, рдореИрдВ рдЕрдкрдиреА рдирд┐рдЬреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкреНрд░рдгрд╛рд▓реА, рдмрд╣реБрдд рд╣реА рдЖрджрд┐рдо рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХрд╛рдлреА рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реМрдВрдкреЗ рдЧрдП рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкрд╛рдпрдерди, рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдкреЙрд▓рд┐рдЯреЗрдХреНрдирд┐рдХ рдФрд░ рдореЗрдЯреНрд░реЛ рдирд┐рдпрдоред рдирд╣реАрдВ, рдореЗрдЯреНрд░реЛ рдмреЗрдХрд╛рд░ рд╣реИред рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд (11 рд╕рд╛рд▓ рдХрд╛ рдХрд╛рдо) рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдирд╣реАрдВред


рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдкрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ред рд╣рдо рдХрдардкреБрддрд▓реА, рдЧрд┐рдЯрд▓реИрдм рдФрд░ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдПрдХ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐:


  • рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдкрд░ рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдИ рдореИрдиреБрдЕрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рддреАрди рд╕рд╛рд▓ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХрдИ рдмрд╛рд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЛрдкреА рдорд┐рд▓реА, рдкрд┐рдЫрд▓реЗ рдПрдХ рд╣рдлреНрддреЗ рдкрд╣рд▓реЗ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдерд╛ред рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдареАрдХ рдХрд░реЗрдВ, рд╕реЗрд╡рд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ - 10 рд╕реЗрдХрдВрдбред Gitlab рдореЗрдВ рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдВ, рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдзрдХреЗрд▓реЗрдВ, Puppetmaster рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП r10k рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, Puppet --environment = mybranch рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ - 5 рдорд┐рдирдЯ рдиреНрдпреВрдирддрдоред
  • Gitlab рдореЗрдВ рдПрдХ рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдХрд░ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рд╕реЗ рдЕрдиреБрдореЛрджрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЯреАрдо рдХреЗ рдиреЗрддреГрддреНрд╡ рдореЗрдВ рдкреНрд░рдореБрдЦ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рджреЛ рдпрд╛ рддреАрди рдЕрдиреБрдореЛрджрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
  • рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдкрд╛рдардХреАрдп рд╣реЛрддреЗ рд╣реИрдВ (рдЪреВрдВрдХрд┐ рдХрдардкреБрддрд▓реА рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ, рд╣рд┐рд░рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдбреЗрдЯрд╛ рдкрд╛рда рд╣реИрдВ), рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдЕрддреНрдпрдзрд┐рдХ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдореЛрджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЬрд┐рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рджреЗрдЦрд╛ рд╣реИ рд╡реЗ рд╣реИрдВ:


  • рдореБрдирд┐рди - рдпрджрд┐ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ 10 рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░реНрд╡рд░ рд╣реИрдВ, рддреЛ рдкреНрд░рд╢рд╛рд╕рди рдирд░рдХ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ ( рдЗрд╕ рд▓реЗрдЦ рд╕реЗ ред рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдмрд╣реБрдд рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╢рдмреНрдж рд▓рд┐рдпрд╛)ред
  • рдЬрд╝рд╛рдмрд┐рдХреНрд╕ - рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд░реВрд╕ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрдм рдпрд╣ рдореЗрд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдерд╛ред рдпрд╣рд╛рдБ - рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрдардкреБрддрд▓реА рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдЯрд▓реИрдм рдХреЗ рдХрд╛рд░рдг рдЧрд┐рд░рд╛рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред рдЙрд╕ рд╕рдордп, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЬрд╝реИрдмрд┐рдХреНрд╕ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреВрд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред
  • рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдо рдЕрдВрдд рдореЗрдВ рдЖрдПрдВрдЧреЗ, рд╡рд┐рднрд╛рдЧ рдореЗрдВ рдордиреЛрджрд╢рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рдореИрдВ рдЗрд╕реЗ рдорд╛рд╕реНрдЯрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдирдореВрдиреЗ (рдкреНрд░реВрдл рдСрдл рдХреЙрдиреНрд╕реЗрдкреНрдЯ) рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
  • рдХрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдереЗ рдЬрд┐рдиреНрд╣реЗрдВ рдпрд╛ рддреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреВрд░реНрдг рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдпрд╛ рд╡реЗ рдЕрдкрдиреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ / рдЫреЛрдбрд╝ рджрд┐рдП рдЧрдП рдереЗ рдФрд░ рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдП рдЧрдП рдереЗред

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рддреАрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ Icinga2 рдкрд░ рдЖ рдЧрдпрд╛:


1 - рдирд░реНрдкреЗ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ (рдПрдХ рдЧреНрд░рд╛рд╣рдХ рд╕реЗрд╡рд╛ рдЬреЛ рдирд╛рдЧрд┐рдпреЛрд╕ рд╕реЗ рдХрдорд╛рдВрдб рдкрд░ рдЪреЗрдХ рдЪрд▓рд╛рддреА рд╣реИ)ред рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕рдордп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ резрейрел (рдЕрдм реирежрез реп рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ резремрел) рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рд╕реЗрд╡рд╛рдУрдВ / рдЪреЗрдХ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдм рдлрд┐рд░ рд╕реЗ рдХрд░рдирд╛ рдПрдХ рднрдпрд╛рдирдХ рдмрд╡рд╛рд╕реАрд░ рд╣реЛрдЧрд╛ред
2 - рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрд╛рда рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
3 рдПрдХ рдЬреАрд╡рдВрдд рдФрд░ рдмрдврд╝рддреА рдУрдкрдирд╕реЛрд░реНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рд╣рдо OpenSource рдХреЗ рдмрд╣реБрдд рд╢реМрдХреАрди рд╣реИрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдФрд░ рдореБрджреНрджреЗ рдмрдирд╛рдХрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╕рдВрднрд╡ рдпреЛрдЧрджрд╛рди рджреЗрддреЗ рд╣реИрдВред


рддреЛ рдЪрд▓рд┐рдП, Icinga2ред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреА рдЬрдбрд╝рддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рд╣рд░ рдХреЛрдИ Nagios / Najios рдХрд╛ рдЖрджреА рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡реЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдЙрдЪреНрдЪрд╛рд░рдг рдХрд░реЗрдВ) рдФрд░ CheckMod рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рд╕рдордЭреМрддрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЖрдЗрд╕рд┐рдВрдЧрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рджрд┐рдЦрддрд╛ рд╣реИ (рдпрд╣ рдПрдХ рдорд╛рдЗрдирд╕ рдерд╛), рд▓реЗрдХрд┐рди рдпрд╣ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд╕рд╛рде рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрд╣ рдПрдХ рдкреНрд▓рд╕ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрдШрд░реНрд╖ рдХрд┐рдпрд╛)ред


рдлрд┐рд▓реНрдЯрд░

рд╕реНрдХреНрд░реЙрд▓ рдкрдЯреНрдЯреА рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдЕрдиреБрдкрд╛рдд рд╕реНрдХреНрд░реЙрд▓ рдлрд╝реАрд▓реНрдб рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдВред


рджреВрд╕рд░рд╛ - рд╕рднреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдореЙрдирд┐рдЯрд░ рдкрд░ рдкреВрд░реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЪреЗрдХрдореЗрдХ рдЖрдкрдХреЛ рдХрдИ рдирдЧрд┐рдпреЛрд╕ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реНрд╕рд┐рдВрдЧрд╛ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ)ред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдереНрд░реБрдХ рдирд╛рдордХ рдПрдХ рдЪреАрдЬ рдереА, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдиреЗ рд╕рднреА рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрдЯреА рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛, рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ - рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ (рдореБрдЭреЗ рдирд╣реАрдВ)ред


рдереНрд░реБрдХ рдлрд╛рдпрд░рдмреЙрдХреНрд╕ - рд╕рд░реНрд╡рд╕рдореНрдордд рдЯреАрдо рдирд┐рд░реНрдгрдп

рдорд╕реНрддрд┐рд╖реНрдХ рдХреЗ рддреВрдлрд╛рди рдХреЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рдЬрдм рдЙрддреНрдкрд╛рджрди рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдорд╛рд╕реНрдЯрд░ рд╣реЛрд╕реНрдЯ рдФрд░ рджреЛ рдЕрдзреАрдирд╕реНрде рд╣реИрдВ - рдПрдХ рджреЗрд╡ / рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдФрд░ рджреВрд╕рд░рд╛ рдмрд╛рд╣рд░реА рд╣реЛрд╕реНрдЯ рдЬреЛ рдХрд┐рд╕реА рдЧреНрд░рд╛рд╣рдХ рдпрд╛ рдмрд╛рд╣рд░реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдкреНрд░рджрд╛рддрд╛ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдкреНрд░реЗрдХреНрд╖рдХред рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдиреЗ рдореБрдЭреЗ рдПрдХ рд╡реЗрдм-рдЖрдзрд╛рд░рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдФрд░ рдЗрд╕рдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХрдардкреБрддрд▓реА ... рдХрдардкреБрддрд▓реА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдорд╛рд╕реНрдЯрд░ рд╣реЛрд╕реНрдЯ рдХреЛ рдЕрдм рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рднреА рдореЗрдЬрдмрд╛рдиреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ / рдЪреЗрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдерд╛ рдФрд░ рдЬреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рдерд╛ред (рджреЗрд╡-рдкрд░реАрдХреНрд╖рдг, рд╕реНрдЯреЗрдЬрд┐рдВрдЧ-рдареЗрд╕, рдПрдХреНрд╕рдЯ), рд▓реЗрдХрд┐рди Icinga рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рднреЗрдЬрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреА рдХрдардкреБрддрд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВред рдпрд╣ рдЕрднреА рднреА рдореБрдЭ рдкрд░ рдЖрд░реЛрдкрд┐рдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрдИ рдмрд╛рд░ рд╕рдордЭрд╛рдпрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдм рдЗрддрдирд╛ рд▓рдВрдмрд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИред


рддреАрд╕рд░рд╛ - рд╕реНрдиреЛрдлреНрд▓реЗрдХреНрд╕ (рд╕реНрдиреЛрдлреНрд▓реЗрдХреНрд╕) рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ - рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдмрд╛рд╣рд░ рдЦрдЯрдЦрдЯрд╛рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдЙрди рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд▓рд▓рд╛рдЯ рд╣рдорд▓реЗ рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЕрдЧрд░ рдХреЛрдИ рдЕрд▓рд╛рд░реНрдо рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрдЭреЗ рдХреНрдпреЛрдВ рд╕рдЪреЗрдд рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд - рдирдЧрд┐рдпреЛ рдХреНрдпреЛрдВ рдШрдмрд░рд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реНрд╕рд┐рдВрдЧрд╛ рдирд╣реАрдВ рд╣реИред


рдЪреМрдерд╛ - рдирд╛рдЧрд┐рдпреЛрд╕ рдиреЗ рддреАрди рд╕рд╛рд▓ рддрдХ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рд╢реБрд░реВ рдореЗрдВ рдореЗрд░реЗ рдиреНрдпреВрдлрд╝рдВрдЧрд▓ рд╣рд┐рдкрд╕реНрдЯрд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ рднрд░реЛрд╕рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдЗрд╕реНрд╕рд┐рдВрдЧрд╛ рдиреЗ рдШрдмрд░рд╛рд╣рдЯ рдкреИрджрд╛ рдХреА - рдХрд┐рд╕реА рдиреЗ рддрдм рддрдХ рдХреБрдЫ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрдм рддрдХ рдХрд┐ рдирд╛рдЧреЛрдЗрд╕ рдЙрд╕реА рдореБрджреНрджреЗ рдкрд░ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рд╣реБрдПред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрдпрд┐рдВрдЧрд╛ рдиреЗ рдирд╛рдЧрд┐рдпреЛрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд▓рд╛рд░реНрдо рдЬрд╛рд░реА рдХрд┐рдП, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЧрдВрднреАрд░ рдЬреБрдмрд╛рди рдорд╛рдирддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдореИрдВ "рдирд┐рд╖реНрдХрд░реНрд╖" рдЦрдВрдб рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реВрдВрдЧрд╛ред


рдирддреАрдЬрддрди, рдХрдореАрд╢рдирд┐рдВрдЧ рдореЗрдВ 5 рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рджреЗрд░реА рд╣реБрдИ (28 рдЬреВрди, 2018 рдХреЛ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - 3 рджрд┐рд╕рдВрдмрд░, 2018), рдореБрдЦреНрдп рд░реВрдк рд╕реЗ "рд╕рдорддрд╛ рдЬрд╛рдВрдЪ" рдХреЗ рдХрд╛рд░рдг - рдЬрдм рдирд╛рдЧреЛрдВ рдореЗрдВ рдХрдИ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ, рддреЛ рдХреЛрдИ рднреА рдХрд┐рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рдЖрд▓реЛрдЪрдирд╛ рдЬрд╛рд░реА рдХрд░ рджреА рдФрд░ рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрд╛рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рд╡реЗ рдореЗрд░реЗ рдкреИрдирд▓ рдкрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдереЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ "рд╕рдорддрд╛ рдЬрд╛рдБрдЪ рдкреВрд░реА рд╣реЛрдиреЗ" рдХреЗ рд▓рд┐рдП рдЗрд╕реНрд╕рд╛рдВрдЧ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ (рд╕рднреА рд╕реЗрд╡рд╛рдПрдБ / рдЬрд╛рдБрдЪреЗрдВ) рдирд╛рдЧреЛрд╕рд┐рдВрд╣ рдореЗрдВ рд╕реЗрд╡рд╛рдПрдВ / рдЪреЗрдХрд┐рдВрдЧ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ)


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
рдкрд╣рд▓рд╛ рдХреЛрдб рдмрдирд╛рдо рдбреЗрдЯрд╛ рдпреБрджреНрдз рд╣реИ, рдЬреИрд╕реЗ рдХрдардкреБрддрд▓реА рд╢реИрд▓реАред рд╕рднреА рдбреЗрдЯрд╛, рдпрд╣реАрдВ рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рд╣рд┐рд░рд╛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреБрдЫ рдирд╣реАрдВред рд╕рднреА рдХреЛрдб .pp рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣реИред рдЪрд░, рд╕рд╛рд░, рдХрд╛рд░реНрдп - рд╕рдм рдХреБрдЫ рдкреАрдкреА рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ (рд▓реЗрдЦрди рдХреЗ рд╕рдордп 165) рдФрд░ 68 рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдФрд░ рд╡реИрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдЧрд░рд╛рдиреА рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдмрд╡рд╛рд╕реАрд░ рдХреЗ рдХрд╛рд░рдг, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдПрдХ рдЕрд▓рдЧ рдЧрд┐рдЯрд▓реИрдм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд▓реА рдЧрдИ рд╣реИ рдФрд░ рдкреБрдЯрдкреЗрдЯ 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 } } } } } } } } 

рд╣реЛрд╕реНрдЯ рдФрд░ рд╕реЗрд╡рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛрдб рднреА рднрдпрд╛рдирдХ рджрд┐рдЦрддрд╛ рд╣реИ:


рдирд┐рдЧрд░рд╛рдиреА / 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 рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ, рдкрддрд╛ рдФрд░ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпред


 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 } 

рдЕрд░реНрдерд╛рддреН, ssl рдЬрд╛рдБрдЪ рд╣рдореЗрд╢рд╛ рд╕рдХреНрд░рд┐рдп рд░рд╣рддреА рд╣реИред рдЗрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЬрдЧрд╣ рджреЗрдХрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


 http_ssl: no 

рдирд┐рд╖реНрдХрд░реНрд╖ :


рдкреЗрд╢реЗрд╡рд░реЛрдВ:


  • рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рдФрд░ рджреЛ рдирд╣реАрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ 7-8 рдорд╣реАрдиреЗ, рдпрд╛ рдПрдХ, рдкреБрд░рд╛рдирд╛ рдФрд░ рдХрдордЬреЛрд░ рдерд╛ред
  • рдореЗрдЬрдмрд╛рдиреЛрдВ / рд╕реЗрд╡рд╛рдУрдВ (рдЪреЗрдХ) рдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЕрдм (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ) рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрдардиреАрдп рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХреА рдкрд░ рдХреБрдЫ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХрд╛рдЯрдирд╛ рдкрдбрд╝рд╛ред
  • рд╡реИрд░рд┐рдПрдмрд▓ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреЗрдХ рдХреЛ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, http_regexp рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рдВрдЫрд┐рдд рдкреИрдЯрд░реНрди, рд░рд┐рдЯрд░реНрди рдХреЛрдб, url рдФрд░ рдкреЛрд░реНрдЯ рдХреЛ рд╣реЛрд╕реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдХрдИ рдбреИрд╢рдмреЛрд░реНрдб рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЖрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдЕрд▓рд╛рд░реНрдо рдХреА рдЕрдкрдиреА рд╕реВрдЪреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдардкреБрддрд▓реА рдФрд░ рд╡рд┐рд▓рдп рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рд╕рдм рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рдкрдХреНрд╖:


  • рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреА рдЬрдбрд╝рддрд╛ - рдирд╛рдЧрд┐рдпреЛрд╕ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдЖрдкрдХреА рдЗрд╕реНрд┐рдВрдЧрд╛ рд▓рдЧрд╛рддрд╛рд░ рдХреАрдбрд╝реЗ рдФрд░ рдзреАрдорд╛ рдХрд░ рджреЗрддреА рд╣реИред рдФрд░ рдореИрдВ рдХрд╣рд╛рдиреА рдХреИрд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ? рдФрд░, рд▓рд╛рдирдд рд╣реИ, рдпрд╣ рдЕрджреНрдпрддрди рдирд╣реАрдВ рд╣реИ ... (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдЕрд▓рд╛рд░реНрдо рдЗрддрд┐рд╣рд╛рд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ F5 рджреНрд╡рд╛рд░рд╛ рдЕрджреНрдпрддрди рдирд╣реАрдВ рд╣реИ)
  • рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрдбрд╝рддрд╛ - рдЬрдм рдореИрдВ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ "рдЕрдм рдЪреЗрдХ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ - рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдордВрдЧрд▓ рдкрд░ рдореМрд╕рдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдЬреЛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдореЗрдВ рджрд╕рд┐рдпреЛрдВ рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмрд╛рдд рд╣реИред
  • рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рджреЛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдЕрд░реНрдз-рд╡рд╛рд░реНрд╖рд┐рдХ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХрдВрдзреЗ рд╕реЗ рдХрдВрдзрд╛ рдорд┐рд▓рд╛рдХрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдЧрд┐рдпреЛрд╕ рдиреЗ рд╣рдореЗрд╢рд╛ рдЗрд╕реНрд╕рд┐рдВрдЧрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рд╕реЗ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреБрд╕реНрд╕рд╛ рдЖрдпрд╛ред рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИ рдФрд░ рдЗрд╕ рддрдереНрдп рдкрд░ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдХреА рдЬрд╛рдВрдЪ рд╣рд░ 5:30 рдпрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реЛрддреА рд╣реИред
  • рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп рд╕реЗрд╡рд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (systemctl рдкреБрдирд░рд╛рд░рдВрдн icinga2) - рдЙрд╕ рд╕рдордп рдкреНрд░рдЧрддрд┐ рдкрд░ рдереЗ рд╕рднреА рдЪреЗрдХ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗ <рд╕рд┐рдЧреНрдирд▓ 15 рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХреЗрддрд┐рдд рд╕рдорд╛рдкреНрдд> рд╕реНрдХреНрд░реАрди рдкрд░ рдЕрд▓рд╛рд░реНрдо рдФрд░ рддрд░рдл рд╕реЗ рдРрд╕рд╛ рд▓рдЧреЗрдЧрд╛ рдЬреИрд╕реЗ рд╕рдм рдХреБрдЫ рдЧрд┐рд░ рдЧрдпрд╛ рд╣реИ ( рдкреБрд╖реНрдЯрд┐ рдмрдЧ) )ред

рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ - рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi444060/


All Articles