Icinga2 рдФрд░ рдХрдардкреБрддрд▓реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди
рдЪрд▓рд┐рдП рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ ... Infrastructure as code (IaC)ред
Habr├й рдкрд░ Icinga2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд▓реЗрдЦ рд╣реИрдВ, рдХрдардкреБрддрд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ рд╣реИрдВ:
Icinga2 рдПрдХ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рд╣реИрд╣рдо рдиреНрдпреВрдирддрдо рдЦрд░реНрдЪ рдХреЗ рд╕рд╛рде icinga2 рдкрд░ micromonitoring рдмрдврд╝рд╛рддреЗ рд╣реИрдВрдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ рдЖрдзреБрдирд┐рдХ рдХрдардкреБрддрд▓реА рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд╛рдкрдирд╛рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рджреЛ рдЕрджреНрднреБрдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдФрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд╡рд┐рд╖рдп рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рдЧрд╛рдЗрдб рдореЗрдВ, рдореИрдВ рдПрдХ "рдЬреАрд╡рд┐рдд" рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЗрди рджреЛрдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рд┐рд╕реНрдЯрдо, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрд╣ рдЖрд▓реЗрдЦ рдкреИрдХреЗрдЬ "рд╕рднреА рдПрдХ рдмреЛрддрд▓ рдореЗрдВ" рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░рд╣ рдХрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╣реИред рдЗрд╕ рдЧрд╛рдЗрдб рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рдЪрд╛рд▓рди рдирд┐рдЧрд░рд╛рдиреА рд╕рдорд╛рдзрд╛рди рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдЬреЛ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЖрдЧреЗ "рд╕рдорд╛рдкреНрдд" рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЪрд▓реЛ рдХреЛрд╢рд┐рд╢ рдХрд░реЛ!
рддреЛ:
рд╣рдордиреЗ рдПрдХ рдирдпрд╛ рдореЗрдЬрдмрд╛рди рдЦрдбрд╝рд╛ рдХрд┐рдпрд╛ред рдФрд░ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
1. рддрд╛рдХрд┐ рдЗрд╕рдХреА рдореЙрдиреАрдЯрд░рд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ Icinga2 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ, рдФрд░ рдмреЗрд╕рд┐рдХ рдЪреЗрдХ рдмрдиреЗ
рдЪреЗрдХреЛрдВ
| рддрд╕реНрд╡реАрд░реЗрдВ
| рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
|
рдореЗрдЬрд╝рдмрд╛рди
| 
| рджреА рдЧрдИ рдЖрд╡реГрддреНрддрд┐ рдкрд░, рд╣рдо рдкрд┐рдВрдЧ рдХрдорд╛рдВрдб рд╕реЗ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╣реЛрд╕реНрдЯ "рд▓рд╛рдЗрд╡" рд╣реИред
|
рдбрд┐рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ
| 
| рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рд╣реИред |
рд▓реЛрдб рдФрд╕рдд
| 
| рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЛрдб рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдореЙрдирд┐рдЯрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред |
рдореБрдХреНрдд рд╕реНрдореГрддрд┐
| 
| рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдореБрдХреНрдд рдореЗрдореЛрд░реА рд╣реИред |
рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдЦреЛрд▓реЗрдВ
| 
| рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЦреБрд▓реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХрд╛ рдирдХреНрд╢рд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдо рдореЙрдирд┐рдЯрд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирдП рдЦреБрд▓реЗ рдпрд╛ рдмрдВрдж рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдереЗред |
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрджреНрдпрддрди
| 
| рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдкрдбреЗрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреЗ рд╣реИрдВред |
2. рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЪреЗрдХ рдЬреЛрдбрд╝реЗрдВред рдлрд┐рд░ рдХреНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рдХ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рд╣рдо рдХрд┐рддрдиреЗ рдЕрдЪреНрдЫреЗ рдлреЙрд▓реЛрд╡рд░реНрд╕ рд╣реИрдВ рдФрд░ рдкреБрд░рд╕реНрдХрд╛рд░ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ!
рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:
рд╕реЗрд╡рд╛
| YAML рд╕рддреНрдпрд╛рдкрди рдХреЛрдб
|
---|
рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ"рд▓рд╛рдЗрд╡" рд╣реЛрд╕реНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдпрд╛ рдирд╣реАрдВред

| '%{::fqdn} virtual host' : target: /etc/icinga2/zones.d/master/%{::fqdn}.conf apply: true assign: [ 'host.name == %{::fqdn}' ] display_name: '%{::fqdn} virtualhost' check_command: 'http' vars: http_uri: / http_ssl: true http_vhost: 'hostname' http_address: "%{lookup('host_address')}"
|
PostgreSQLрдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рд╣рдо PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

| '%{::fqdn} PostgreSQL': target: /etc/icinga2/zones.d/master/%{::fqdn}.conf apply: true assign: [ 'host.name == %{::fqdn}' ] display_name: 'PostgreSQL' command_endpoint: '%{::fqdn}' check_command: "postgres" vars: postgres_host: "localhost" postgres_action: "connection" phone_notifications: true
|
рдирдЧреНрдиреЗрдХреНрд╕ рд╕реНрдерд┐рддрд┐рд╣рдо stub_status рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Nginx рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреЗ рд╣реИрдВред

| '%{::fqdn} nginx status' : target: /etc/icinga2/zones.d/master/%{::fqdn}.conf apply: true assign: [ 'host.name == %{::fqdn}' ] command_endpoint: '%{::fqdn}' display_name: 'nginx status' check_command: 'nginx_status' vars: nginx_status_host_address: localhost nginx_status_servername: server.com nginx_status_critical: '1600,60,30' nginx_status_warn: '1500,55,25'
|
3. рдпрд╣ рд╕рдм рдХреБрдЫ рд╕рд╛рдл, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рд╕реБрдВрджрд░ рдерд╛ред рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде 30 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рди рдмрд┐рддрд╛рдПрдВред
рдЖрдкрдХреЗ рдкрд╛рд╕ рдбреЛрдХрд░ рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдХреЗ рд╕рд╛рде - рдЕрдкрдиреЗ рдЖрдк рд╕реЗред
рдпрд╣ рд╕реЗрдЯрдЕрдк рдбреЗрдмрд┐рдпрди / рдЙрдмрдВрдЯреВ рдХреЗ рддрд╣рдд рд╡рд░реНрдгрд┐рдд рд╣реИред рдФрд░, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ рдХреЛрдИ рдЕрдиреНрдп рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реА рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЦреБрдж рдРрд╕реА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ CentOS рдХреЗ рд╕рд╛рде рдХреБрдЫ рдорд╢реАрдиреЗрдВ рд╣реИрдВ, рдпрд╣ рд╡рд╣рд╛рдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░, рдлрд┐рд░ рднреА, рдбреЗрдмрд┐рдпрди / рдЙрдмрдВрдЯреВ рд╣реИрдВред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рдЬрдм рдореИрдВ рд╕рдВрдкреВрд░реНрдг рд╣реЛрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рд╕реЗрд╡рд╛рдПрдБ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░, рдЦрд╛рддреЗ, рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдБ, рддреЛ рдореИрдВ рддреБрд░рдВрдд рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдБ - рд╡реЗ рдПрдХ рдпрд╛рдореНрд▓-рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреЗрддрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓рд╛, рдЬрд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╣реЛрд╕реНрдЯ рдирд╛рдо рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ, рдлрд┐рд░ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрд╕реНрдЯ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЦреЛрд▓рд╛ред рдФрд░ рдЖрдк рддреБрд░рдВрдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореЗрдЬрдмрд╛рди рдкрд░ рдХреНрдпрд╛ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдХреНрдпрд╛ рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛рддреА рд╣реИ, рдЖрджрд┐ред
рдпрд╣ рд╣реИ рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рдХреИрд╕реА рд╣реИ: project_1/hostname1.com.yaml project_2/hostname2.com.yaml project_3/hostname3.com.yaml
рдореИрдВ рдпрд╣рд╛рдБ рдРрд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБ, рдЬреЛ рд╣рдорд╛рд░реЗ рдХрд┐рд╕реА рднреА рд╕рд░реНрд╡рд░ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ:
рдкреВрд░реНрдг рдЯреЗрдореНрдкрд▓реЗрдЯ #============================|INPUT DATA|=================================# #---------------------------------------|VARS|----------------------------# #---//Information about variables, keys & contacts//----------------------# host_address: xxxx my_company: my_mail_domain: my_ssh_port: #---------------------------------------|CLASSES|-------------------------# #---//Classes are modules installed on the server.//----------------------# #---//These modules process the arguments typed below.//------------------# #---//Without classes nothing will work.//--------------------------------# #---//Class default_role is mandatory. This class will install//----------# #---//etckeeper, some required perl modules and manages all the logics.//-# classes: - default_role #---------------------------------------|TIMEZONE|------------------------# #---//Set timezone, which will be used on the host.//---------------------# timezone::timezone: Europe/Moscow #---------------------------------------|FACTS|---------------------------# #---//Facts are variables which puppet agent uses.//----------------------# facter::facts_hash: role: value: 'name' company: value: 'name of company' file: 'location.txt' #=========================================================================# #============================|PUPPET|=====================================# #---//Settings for puppet agent.//----------------------------------------# puppet::runmode: cron puppet::ca_server: puppet::puppetmaster: #=========================================================================# #============================|CRON TASKS|=================================# cron_tasks: Name: command: user: minute: '' hour: '' #=========================================================================# #============================|SUPERVISOR|=================================# #---//Supervisor is a process manager//-----------------------------------# supervisord::install_pip: false supervisord::install_init: false supervisord::service_name: supervisor supervisord::package_provider: apt supervisord::executable: /usr/bin/supervisord supervisord::executable_ctl: /usr/bin/supervisorctl supervisord::config_file: /etc/supervisor/supervisord.conf supervisord::programs: 'name': ensure: present command: 'su - rails -c "/home/name/s2"' autostart: no autorestart: 'false' directory: /home/name/domainName/current #=========================================================================# #============================|SECURITY|===================================# #-------------------------------------|FIREWALL|--------------------------# #---//Iptables rules//----------------------------------------------------# firewall: 096 Allow inbound SSH: dport: proto: tcp action: accept #-------------------------------------|FAIL2BAN|--------------------------# #-------------------------------------|ACCESS|----------------------------# #--------------------------------------------|ACCOUNTS|-------------------# #---//Discription of accounts which will be created on server.//----------# accounts: user: shell: '/bin/bash' password: '' locked: false purge_sshkeys: true groups: - docker sshkeys: - #--------------------------------------------|SUDO|-----------------------# #---//Appointment permissions for users.//--------------------------------# sudo::config_file_replace: false sudo::configs: user: content: #--------------------------------------------|SSH|------------------------# #--------//Settings for ssh server.//-------------------------------------# ssh::storeconfigs_enabled: true ssh::server_options: Protocol: '2' Port: PasswordAuthentication: 'yes' PermitRootLogin: 'without-password' SyslogFacility: 'AUTHPRIV' UsePAM: 'yes' X11Forwarding: 'no' #--------------------------------------------|VPN|------------------------# #---//Settings for vpn server.//------------------------------------------# openvpn::servers: 'namehost': country: '' province: '' city: '' organization: '' email: '' server: 'xxxx 255.255.255.0' dev: tun local: openvpn::client_defaults: server: 'namehost' openvpn::clients: # Firstname Lastname 'user': {} openvpn::client_specific_configs: 'user': server: 'namehost' redirect_gateway: true route: - xxxx 255.255.255.255 #=========================================================================# #============================|OPERATING SYSTEM|===========================# #---------------------------------------------|SYSCTL|--------------------# #---//set sysctl parameters//---------------------------------------------# sysctl::base::values: fs.file-max: value: '2097152000' net.netfilter.nf_conntrack_max: value: '1048576' net.nf_conntrack_max: value: '1048576' net.ipv6.conf.all.disable_ipv6: value: '1' vm.oom_kill_allocating_task: value: '1' net.ipv4.ip_forward: value: '0' net.ipv4.tcp_keepalive_time: value: '3' net.ipv4.tcp_keepalive_intvl: value: '60' net.ipv4.tcp_keepalive_probes: value: '9' #---------------------------------------------|RCS|-----------------------# #---//Managment of RC scenario//------------------------------------------# rcs::tmptime: '-1' #---------------------------------------------|WEB SERVERS|---------------# #---------------------------------------------------------|HAPROXY|-------# #---//HAProxy is software that provides a high availability load//--------# #---//balancer and proxy server for TCP and HTTP-based applications//-----# #---// that spreads requests across multiple servers.//-------------------# haproxy::merge_options: true haproxy::defaults_options: log: global maxconn: 20000 option: [ 'tcplog', 'redispatch', 'dontlognull' ] retries: 3 stats: enable timeout: [ 'http-request 10s', 'queue 1m', 'check 10s', 'connect 300000000ms', 'client 300000000ms', 'server 300000000ms' ] haproxy_server: stats: ipaddress: ports: '9090' options: mode: 'http' stats: [ 'uri /', 'auth puppet:123123123' ] postgres: collect_exported: false ipaddress: '0.0.0.0' ports: '5432' options: option: - tcplog balance: roundrobin haproxy_balancemember: hostname1: listening_service: postgres server_names: hostname1 ipaddresses: ports: 6432 options: check hostname2: listening_service: postgres server_names: hostname2 ipaddresses: ports: 6432 options: - check - backup #---------------------------------------------|NGINX|---------------------# #---//Nginx is a web server which can also be used as a reverse proxy,//--# #---//load balancer, mail proxy and HTTP cache//--------------------------# nginx::nginx_cfg_prepend: 'load_module': - modules/ngx_http_geoip_module.so nginx::http_raw_append: - 'real_ip_header X-Forwarded-For;' - 'geoip_country /usr/share/GeoIP/GeoIP.dat;' - 'set_real_ip_from 0.0.0.0/0;' nginx::worker_rlimit_nofile: 16384 nginx::confd: true nginx::server_purrge: true nginx::server::maintenance: true #---------------------------------------------nginx-|MAPS|----------------# nginx::string_mappings: allowed_country: ensure: present string: '$geoip_country_code' mappings: - key: 'default' value: 'yes' - key: 'US' value: 'no' #---------------------------------------------nginx-|UPSTREAMS|-----------# nginx::nginx_upstreams: : ensure: present members: - #---------------------------------------------nginx-|VHOSTS|--------------# nginx::nginx_servers: 'hostname': proxy: 'http://' location_raw_append: - 'if ($allowed_country = no) {return 403;}' try_files: - '' - /index.html - =404 ssl: true ssl_cert: ssl_key: ssl_trusted_cert: ssl_redirect: false ssl_port: 443 error_pages: '403': /usa-restrict.html #---------------------------------------------nginx-|HTTPAUTH|------------# httpauth: 'admin': file: password: '' realm: realm mechanism: basic ensure: present #---------------------------------------------nginx-|LOCATIONS|-----------# nginx::nginx_locations: 'domain1.com/usa-restricted': location: /usa-restrict.html www_root: /home/clientName1/clientName1-client-release/current/dist server: domain1.com ssl: true '^~ domain2.com/resources/upload/': location: '^~ /resources/upload/' server: domain2.com location_alias: '/home/clientName2/upload/' raw_append: - 'if ($allowed_country = no) {return 403;}' '/nginx_status-domain3.com': location: /nginx_status stub_status: on raw_append: - access_log off; - allow 127.0.0.1; - deny all; #---------------------------------------------nginx-|WELL-KNOWN|----------# #---//These locations are needed for SSL certificates generating//--------# #---//with Letsencrypt.//-------------------------------------------------# 'x.hostname.zz/.well-known': location: '/.well-known' server: x.hostname.zz proxy: 'http://kibana' auth_basic: auth_basic_user_file: add_header Pragma public;public, must-revalidate, proxy-revalidate/home/hostname/hostname-release/shared/ecosystem.config.jslogslog_typeformat%{::domain}%{lookup('host_address')}/32(rw,fsid=root,insecure,no_subtree_check,async,no_root_squash)host_addresso=Debian,n=${distro_codename}o=Debian,n=${distro_codename}-securityo=Debian,n=${distro_codename}-updateso=Debian,n=${distro_codename}-proposedo=Debian,n=${distro_codename}-backportso=debian icinga,n=icinga-${distro_codename}o=Zabbix,n=${distro_codename}%{lookup('my_ftp_hostname')}%{lookup('my_backup_ftp_username')}%{lookup('my_backup_ftp_password')}%{lookup('my_backup_compressor')}/tmp/mediastagetv_netbynet%{lookup('host_address')}:/%{lookup('host_address')}redis%{lookup('host_address')}*.*;auth,authpriv.none /var/log/syslog\nmail.* -/var/log/mail.log\n& stopauth,authpriv.* /var/log/auth\n& stop:programname,contains,\ /var/log/puppetlabs/puppet/puppet-agent.log\n& stop:msg,contains,\ /var/log/iptables/iptables.log\n& stop:msg,regex,\ /var/log/admin/auth.log\n& stop:msg,regex,\ /var/log/admin/auth.log\n& stop #---------------------------------------------|LOGWATCH|------------------# #---//Logwatch is a log-analysator for create short reports.//------------# logwatch::format: text logwatch::service: # Ignore this servie - -http - -iptables #---------------------------------------------|LOGROTATE|-----------------# #---//Management of rotation of log files.//------------------------------# my_rclogs_path: '/home/hostname/hostname/shared/log' my_rclogs_amazon_path: '/home/hostname1/hostname1/shared/log_amazon' my_ttlogs_path: '/home/hostname2/hostname2/shared/log' my_ttlogs_amazon_path: '/home/hostname/hostname/shared/log_amazon' logrotate::ensure: latest logrotate::config: dateext: true compress: true logrotate::rules: booking-logs: path: '%{lookup("my_rclogs_path")}/booking_com.log' size: 2500M rotate: 20 copytruncate: true delaycompress: true dateext: true dateformat: -%Y%m%d-%s compress: true postrotate: mv %{lookup('my_rclogs_path')}/booking_com.log*.gz %{lookup('my_rclogs_amazon_path')}/ #---------------------------------------------|ATOP|----------------------# #---//ATOP service displays a new information about CPU//-----------------# #---//and memory utilization.//-------------------------------------------# atop::service: true atop::interval: 30 #----------------------------------------|DNS|----------------------------# #---//Management of file /etc/resolv.conf//-------------------------------# resolv_conf::nameservers: - 0.0.0.0 - 0.0.0.0 #=========================================================================# #============================|DATABASES|==================================# #--------------------------------------|MYSQL|----------------------------# #---//MySQL is a relational database management system.//-----------------# mysql::server::package_ensure: 'installed' #┬╖ mysql::server::root_password: mysql::server::manage_config_file: true mysql::server::service_name: 'mysql' # required for puppet module mysql::server::override_options: 'mysqld': 'bind-address': '*' : , : , : , mysql::server::db: : user: password: host: grant: - #-------------------------------------|ELASTICSEARCH|---------------------# #---//Elasticsearch is a search engine based on Lucene.//-----------------# #---//It provides a distributed, multitenant-capable full-text search//---# #---//engine with an HTTP web interface and schema-free JSON documents.//-# elasticsearch::version: 5.5.1 elasticsearch::manage_repo: true elasticsearch::repo_version: 5.x elasticsearch::java_install: false elasticsearch::restart_on_change: true elasticsearch_instance: 'es-01': ensure: 'present' #-------------------------------------|REDIS|-----------------------------# #---//Redis is an in-memory database project implementing//---------------# #---//a distributed, in-memory key-value store with//---------------------# #---//optional durability.//----------------------------------------------# redis::bind: 0.0.0.0 #-------------------------------------|ZOOKEPER|--------------------------# #---//Zooker is a centralized service for distributed systems//-----------# #---//to a hierarchical key-value store, which is used to provide//-------# #---//a distributed configuration service, synchronization service,//-----# #---//and naming registry for large distributed systems.//----------------# zookeeper::init_limit: '1000' zookeeper::id: '1' zookeeper::purge_interval: '1' zookeeper::servers: - #-------------------------------------|POSTGRES|--------------------------# #---//Postgres, is an object-relational database management system//------# #---//with an emphasis on extensibility and standards compliance.//-------# #---//As a database server, its primary functions are to store data//----# #---//securely and return that data in response to requests from other//--# #---//software applications.//--------------------------------------------# postgresql::server::postgres_password: postgresql::server::ip_mask_allow_all_users: '0.0.0.0/0' postgresql::postgresql::server: ip_mask_allow_all_users: '0.0.0.0/32' postgres_db: master: user: password: confluence: user: password: postgres_config: 'max_connections': value: 300 postgres_hba: 'Allow locals without password': order: 1 description: 'locals postgres no password' type: 'host' address: '127.0.0.1/32' database: 'all' user: 'all' auth_method: 'trust' #----------------------------------------------|PGBOUNCER|----------------# #---//PgBouncer is a connection pooler for PostgreSQL//-------------------# pgbouncer::group: postgres pgbouncer::user: postgres pgbouncer::userlist: - user: password: pgbouncer::databases: - source_db: recommender host: dest_db: recommender auth_user: recommender pool_size: 200 auth_pass: - source_db: master host: dest_db: recommender auth_user: recommender pool_size: 50 auth_pass: - source_db: slave host: dest_db: recommender auth_user: recommender pool_size: 200 auth_pass: #=========================================================================# #==============================|APPLICATION SERVICES|=====================# #---------------------------------------------------|CONFLUENCE|----------# #---------------------------------------------------|JENKINS|-------------# #=========================================================================#
рдЙрджрд╛рд╣рд░рдг рдирд┐рдЧрд░рд╛рдиреА рдЕрдиреБрднрд╛рдЧ:
#============================|MONITORING|=================================# #---------------------------------------|ICINGA SERVICES|-----------------# #---//Managment of monitoring system.//-----------------------------------# icinga2_service: '%{::fqdn} virtual host' : target: /etc/icinga2/zones.d/master/%{::fqdn}.conf apply: true assign: [ 'host.name == %{::fqdn}' ] display_name: '%{::fqdn} virtualhost' check_command: 'http' vars: http_uri: / http_ssl: true http_vhost: 'hostname' http_address: '%{::fqdn} nginx status' : target: /etc/icinga2/zones.d/master/%{::fqdn}.conf apply: true assign: [ 'host.name == %{::fqdn}' ] command_endpoint: '%{::fqdn}' display_name: 'nginx status' check_command: 'nginx_status' vars: nginx_status_host_address: localhost nginx_status_servername: server.com nginx_status_critical: '1600,60,30' nginx_status_warn: '1500,55,25' '%{::fqdn} redis': target: /etc/icinga2/zones.d/master/%{::fqdn}.conf apply: true assign: [ 'host.name == %{::fqdn}' ] display_name: 'Redis' command_endpoint: '%{::fqdn}' check_command: vars: redis_hostname: localhost redis_port: 6379 redis_perfvars: '*' #=========================================================================#
рдРрд╕реА рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ:
- рд╣рдо рдореЗрдЬрдмрд╛рди рдкрд░ рдХрдардкреБрддрд▓реА рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рдореЗрдЬрдмрд╛рди рдЙрди рдЪреЗрдХ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдардкреБрддрд▓реА рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред
- Icinga2 рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрдардкреБрддрд▓реА рдЪрд▓рд╛рдПрдВ - рдХрдардкреБрддрд▓реА рд╕реЗ рдЪреЗрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ Icinga2 рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ, рдХрдИ рдХрд╣реЗрдВрдЧреЗ:
"рдореБрдЭреЗ рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЕрдЧрд░ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп icinga2 рдЙрдард╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдпрд╛ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪреЗрдХ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ?"рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЛ рд╕реИрдХрдбрд╝реЛрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рджрд░реНрдЬрди рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЕрдЪреНрдЫреА рд╕реНрдореГрддрд┐ (рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реА) рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рд╛рдл-рд╕реБрдерд░реЗ рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрдЧреАрдЪреЗ рдХреЛ рдмрд╛рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдорд╛рдорд▓рд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╣реИ рдФрд░ рдРрд╕реА рднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдХреБрдЫ рднреВрд▓ рдЧрдП рд╣реИрдВред рдРрд╕реЗ рдХреНрд╖рдгреЛрдВ рдореЗрдВ, рд╕реНрд╡рдЪрд╛рд▓рди рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрд▓рдорд╛рд░рд┐рдпреЛрдВ рдкрд░ рд╕рдм рдХреБрдЫ рд▓рдЧрд╛рдиреЗ рдФрд░ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдорд╛рдирд╡ рдХрд╛рд░рдХред
рдореБрдЦреНрдп рд▓рд╛рдн рдХреЛ рдирдХрд╛рд░реЗрдВ:
рдЖрдЗрдП рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рджреЗрдЦреЗрдВ: icinga2_service: '%{::fqdn} disk service': target: /etc/icinga2/zones.d/master/%{::fqdn}.conf apply: true assign: [ 'host.name == %{::fqdn}' ] display_name: 'Disk usage' command_endpoint: '%{::fqdn}' check_command: 'disk' vars: #All disks disk_all: true disk_exclude_type: - aufs - tmpfs disk_ignore_ereg_path: - /run/docker
+ 1. Hiera тАФ .. . Icinga2, , . , , , .
+ 2. , . тАФ .
+ 3. , .. , Icinga2 , puppet Icinga2.
+ 4. рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдПрдХрд▓ рдХрдардкреБрддрд▓реА рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬреЛ рднреА рдЪреЗрдХ рдЬрдорд╛ рдХрд┐рдпрд╛ рд╣реИ, рд╣рдо рдЖрдЧреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рддреЛ рдЪрд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВ
1. рдХрдардкреБрддрд▓реА рдХреА рд╕реНрдерд╛рдкрдирд╛ред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ docker рдФрд░ docker-compose рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИредрдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:рдбреЙрдХрд┐рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ ...рдбреЙрдХрдЯрд░-рд╕рдВрд╕реНрдерд╛рдкрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ ...2. рд╣рдо рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ:
git clone http://git.comgress64.com/external/puppet-icinga2-how-to.git
3. рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде docker-compose.yaml рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рджреЗрдЦреЗрдВред
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдкреИрдХ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рде рдХрдИ рдХрдВрдЯреЗрдирд░ рдмрдврд╝рддреЗ рд╣реИрдВ - PuppetServer, PuppetDb, PostgreSQL рд╕рд░реНрд╡рд░ рдФрд░ PuppetBoardред рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдорд╛рдЙрдВрдЯреЗрдб рд╡реЙрд▓реНрдпреВрдо рднреАред рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ PostgreSQL рд╕рд░реНрд╡рд░ рд╣реИ, рдХреЛрдИ рдЕрдиреНрдп рдХреЛрдб рдкрд░ рдХреЛрдб рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ - рдпрд╣рд╛рдВ рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ - рдЖрдк рдмрд╛рдж рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд▓реЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╣рдорд╛рд░реЗ рдкреИрдХ рдХреЛ рдЙрдард╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ:4. рдХрдардкреБрддрд▓реА, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ, рдХрдардкреБрддрд▓реА, рдФрд░ рдЧреНрд░реЗрдлрд╛рдЗрдЯ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред
рдЕрдм рд╣рдордиреЗ рдХрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рд╣реИ, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛ рд╣реИред рдЖрдЗрдП рд╣рдо рд╕рднреА рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ - рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЙрдЧ рд╡реНрдпреВ рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП Ctrl + C рджрдмрд╛рдПрдВред5. рд╣рдорд╛рд░реЗ рдХрдардкреБрддрд▓реА рдорд╛рд╕реНрдЯрд░ рдХреЗ рдХрд╛рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
docker run --net puppeticinga2howto_default --link puppet:puppet puppet/puppet-agent
6. рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ:
Notice: Applied catalog in 0.03 seconds Changes: Total: 1 Events: Success: 1 Total: 1 Resources: Changed: 1 Out of sync: 1 Total: 8 Time: Schedule: 0.00 File: 0.00 Transaction evaluation: 0.01 Catalog application: 0.03 Convert catalog: 0.04 Config retrieval: 0.45 Node retrieval: 1.38 Last run: 1532605377 Fact generation: 2.24 Plugin sync: 4.50 Filebucket: 0.00 Total: 8.65 Version: Config: 1532605376 Puppet: 5.5.1
Icinga2 рд╕рд░реНрд╡рд░ рд╕реЗрдЯ рдХрд░реЗрдВред7. Dockerfile рд╕реЗ рдЫрд╡рд┐ рдмрдирд╛рдХрд░ рдХрд░реЗрдВ:
docker-compose build icinga
8. рдЙрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЪрд▓рд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ Icinga2 рд╕рд░реНрд╡рд░ рд▓рд╛рдЗрд╡ рд╣реЛрдЧрд╛ред
docker-compose up -d icinga
9. рдЕрдм рддрдХ, рд╣рдорд╛рд░рд╛ рдХрдВрдЯреЗрдирд░ рдЦрд╛рд▓реА рд╣реИред рдЖрдЗрдП рд╣рдорд╛рд░реЗ Puppet рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ icinga2 рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
10. рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ Icinga, Icingaweb2, рдФрд░ Apache рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
рдЖрдкрдХрд╛ Icinga2 рд╕рд░реНрд╡рд░ рддреИрдпрд╛рд░ рд╣реИ!
Icingaweb2
1. рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЗрдЦрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХрд░реЗрдВ:рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВ http://ip___:8081/icingaweb2
рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде Icinga рдкрд░ рдЬрд╛рдПрдВ: icingaadmin / icinga редрд╣рдо рдЗрд╕ рддрд╕реНрд╡реАрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:
рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдЬрд╛рдБрдЪреЛрдВ рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:
рд░реЗрдЦрд╛рдВрдХрди рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Icinga2 рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡реЗрдм рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА Icinga рд╕реЗ рдХреЛрдИ рд╣реЛрд╕реНрдЯ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рдореЗрдЬрдмрд╛рди рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред2. рдирдП рд╣реЛрд╕реНрдЯ рдХреЛ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╣реЛрд╕реНрдЯ рд╣реИ рдЬреЛ рдХрд┐ icinga2 - Icinga рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред рдЪрд▓реЛ рдПрдХ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВредрдореИрдВ рдПрдХ рдбреЙрдХрдЯрд░ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдПрдХ рд╣реА рдирдВрдЧреЗ рдзрд╛рддреБ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ:рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдХрдардкреБрддрд▓реА рдХреЗ рд▓рд┐рдП рдореЗрдЬрдмрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
. hostname , : docker run --hostname example.com --rm -t --link puppet:puppet --net puppeticinga2howto_default -i phusion/baseimage:latest /sbin/my_init -- bash -l
puppet : apt-get update && apt-get install -y ruby make gcc perl-modules && gem install --no-ri --no-rdoc puppet
puppet: puppet agent --server puppet --waitforcert 60 --test
icinga2 puppetDB. , puppet icinga2: docker-compose exec icinga puppet agent --server puppet --waitforcert 60 --test
рд╣рдо рдЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдорд┐рд▓рд╛ рдерд╛:
рдЪреЗрдХ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ рдФрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред5 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж:
рдЙрд╕реА рддрд░рд╣, рдЕрдиреНрдп рд╕рднреА рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкреНрд░рдорд╛рдг рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдВрд╢реЛрдзрди рдХреЗ рдмрд┐рдирд╛ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдпрджрд┐ рд▓реЗрдЦ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдЕрдЧрд▓реА рдмрд╛рд░ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдк рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╕реНрдЯрдо рдЪреЗрдХ рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд░рд╣рд╕реНрдп рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдХреЛрдИ рдЗрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдЕрдВрджрд░ рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредрдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
Confluence:/ ./docs.comgress64.com/...:https://github.com/Icinga/puppet-icinga2https://forge.puppet.com/icinga/icingaweb2https://docs.docker.com/https://docs.puppet.com/https://docs.puppet.com/hiera/