Otomasi sistem pemantauan berdasarkan Icinga2 dan Wayang
Mari kita bicara sedikit tentang ... Infrastruktur sebagai kode (IaC).
Di Habré ada beberapa artikel bagus tentang Icinga2, ada juga artikel bagus tentang Wayang:
Icinga2 adalah opsi yang mudahKami meningkatkan pemantauan mikro pada icinga2 dengan biaya minimumMenyiapkan server Wayang modern dari awalNamun, topik otomatisasi dan integrasi kedua sistem yang menakjubkan ini tidak diungkapkan sama sekali.
Dalam panduan ini, saya akan menunjukkan dalam contoh "hidup" bagaimana Anda dapat menggabungkan keduanya
sistem, dapatkan alat yang ampuh untuk memantau infrastruktur Anda dengan semua fungsi yang diperlukan. Artikel ini adalah semacam panduan untuk bertindak tentang menginstal paket "semua dalam satu botol." Setelah menyelesaikan panduan ini, Anda akan memiliki solusi pemantauan operasional penuh yang tersedia, yang selanjutnya dapat "diselesaikan" sendiri. Ayo kita coba!
Jadi:
Kami mengangkat tuan rumah baru. Dan kita membutuhkan:
1. Sehingga pemantauannya secara otomatis muncul di Icinga2, dan pemeriksaan dasar dibuat:
Cek
| Jepretan
| Penjelasan
|
Tuan rumah
| 
| Pada frekuensi yang diberikan, kami memeriksa dengan perintah ping bahwa tuan rumah "hidup".
|
Penggunaan disk
| 
| Periksa apakah kami memiliki cukup ruang disk kosong. |
Rata-rata beban
| 
| Kami memantau beban di server secara dinamis. Jumlah prosesor di dalamnya diperhitungkan. |
Memori bebas
| 
| Kami memeriksa bahwa kami memiliki cukup memori bebas di server. |
Buka port
| 
| Kami memindai port di server dan membuat peta port terbuka. Kami memantau bahwa kami tidak memiliki port terbuka atau tertutup baru. |
Pembaruan kritis
| 
| Kami memantau keberadaan pembaruan penting di server. |
2. Tambahkan pemeriksaan khusus untuk berbagai layanan dengan cara yang nyaman dan mudah dimengerti. Apa yang kemudian akan menunjukkan kepada sutradara betapa bagusnya kita dan dapatkan hadiah!
Beberapa contoh:
Layanan
| Kode verifikasi YAML
|
---|
Tuan rumah virtualPeriksa host "langsung" atau tidak.

| '%{::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')}"
|
PostgreSQLPeriksa apakah kita dapat terhubung ke database 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
|
Status nginxKami memantau status Nginx melalui stub_status.

| '%{::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. Bahwa semuanya rapi, dapat diandalkan, dan indah. Dan yang paling penting, habiskan tidak lebih dari 30 menit meributkan dengan pengaturan awal.
Anda harus memiliki pengalaman dengan Docker, dan karenanya dengan Linux - dengan sendirinya.
Pengaturan ini dijelaskan di bawah Debian / Ubuntu. Dan, meskipun saya tidak melihat alasan baginya untuk tidak bekerja pada sistem mirip Unix lainnya, saya sendiri tidak dapat memberikan jaminan seperti itu. Saya memiliki beberapa mesin dengan CentOS, ini berfungsi di sana, tetapi kebanyakan, bagaimanapun, adalah Debian / Ubuntu.
Mari kita mulai
Saya akan katakan segera, nyaman bagi saya ketika seluruh konfigurasi host adalah layanan, konfigurasi, perangkat lunak, akun, dll. - mereka dijelaskan oleh satu file yaml, ini sebenarnya menghindari mendokumentasikan infrastruktur dan memberikan konfigurasi yang jelas. Dia membuka proyek yang sesuai di repositori git, di mana nama file sesuai dengan nama host, kemudian membuka konfigurasi host yang diinginkan. Dan Anda dapat segera melihat layanan apa yang ada di host, apa yang didukung dari ini, apa yang dipantau, dll.
Ini adalah bagaimana struktur proyek dalam repositori terlihat: project_1/hostname1.com.yaml project_2/hostname2.com.yaml project_3/hostname3.com.yaml
Di sini saya menggunakan templat seperti itu, yang menjelaskan konfigurasi server kami:
Template lengkap #============================|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|-------------# #=========================================================================#
Contoh bagian pemantauan:
#============================|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: '*' #=========================================================================#
Skema operasi umum dari skema semacam itu hanya terdiri dari dua tindakan sederhana:
- Kami mulai boneka pada tuan rumah - tuan rumah melihat cek yang menjadi miliknya dan mengekspornya ke puppetDB.
- Jalankan boneka dalam wadah icinga2 - cek dari puppetdb berubah menjadi konfigurasi Icinga2 nyata.
Di sini, banyak yang akan mengatakan:
"Mengapa saya harus membuat semua ini terjadi, jika saya dapat meningkatkan icinga2 seperti biasa dan menambahkan cek dengan tangan saya atau melalui antarmuka web?"Memang, jika Anda perlu memantau selusin host dengan ratusan layanan, dan Anda adalah orang yang cukup rapi dengan memori yang baik (tidak ditemukan di alam), maka tidak masuk akal untuk pagar taman. Ini masalah yang sama sekali berbeda jika Anda memiliki infrastruktur yang agak besar dan ada perasaan bahwa Anda mungkin telah melupakan sesuatu di suatu tempat. Pada saat-saat seperti itu, otomatisasi sangat membantu, karena membantu meletakkan segala sesuatu di rak dan menghindari, dalam banyak hal, faktor manusia.
Nyatakan keunggulan utama:
Mari kita lihat templat ini: 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. Jadi, semua cek yang kami simpan di database puppetDB tunggal kami dapat membuat skrip yang cukup kuat untuk otomatisasi lebih lanjut, di mana kami akan menggunakan informasi ini.
Jadi ayo pergi
1. Siapkan boneka.
Semoga Anda telah mengkonfigurasi buruh pelabuhan dan susunan buruh pelabuhan.Jika tidak, maka Anda harus menginstalnya:Menginstal Docker ...Menginstal Docker-compose ...2. Kami mengkloning repositori ke server kami:
git clone http://git.comgress64.com/external/puppet-icinga2-how-to.git
3. Buka docker-compose.yaml dengan editor favorit Anda dan lihatlah.
Kami melihat bahwa dalam bundel ini kami memiliki beberapa wadah yang naik sekaligus - PuppetServer, PuppetDb, server PostgreSQL, dan PuppetBoard. Volume yang dipasang juga dari direktori saat ini. Konfigurasi ini tidak optimal untuk semua orang, jadi pertimbangkan infrastruktur Anda. Seseorang sudah memiliki server PostgreSQL, seseorang ingin menyimpan kode di bagian lain - ini kebebasan untuk kreativitas. Pada tahap ini, saya sarankan untuk meninggalkan template default - Anda selalu dapat kembali lagi nanti. Mari mengambil paket wadah kami dan melihat apa yang terjadi:4. Luncurkan wadah Wayang, Postgres, Boneka, dan Grafit.
Sekarang kami telah memuat beberapa gambar dan meluncurkan wadah, membuat basis data di PostgreSQL. Biarkan kami menunggu sampai semua server dimulai - kesalahan dapat diabaikan, karena mereka akan stabil setelah beberapa waktu. Tekan Ctrl + C untuk keluar dari mode tampilan log.5. Periksa karya master boneka kami:
docker run --net puppeticinga2howto_default --link puppet:puppet puppet/puppet-agent
6. Jika semuanya baik-baik saja, Anda akan melihat kesimpulan ini:
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
Siapkan server Icinga2.7. Buat gambar dari Dockerfile dengan melakukan:
docker-compose build icinga
8. Jalankan wadah tempat server Icinga2 akan hidup.
docker-compose up -d icinga
9. Sejauh ini, wadah kami kosong. Mari kita mengkonfigurasi server icinga2 menggunakan server Wayang kami dengan melakukan:
10. Instal dan konfigurasikan Icinga, Icingaweb2, dan Apache.
Server Icinga2 Anda sudah siap!
Icingaweb2
1. Mari kita lihat apa yang kita dapatkan.
Lebih mudah untuk melihat keadaan sistem pemantauan di browser, lakukan:Buka di browser http://ip___:8081/icingaweb2
dan buka Icinga dengan login default: icingaadmin / icinga .Kami melihat gambar ini:
Setelah beberapa menit, kami melihat bahwa semua pemeriksaan berhasil bagi kami:
Grafik juga berfungsi:
Kami memiliki lingkungan web yang berfungsi untuk Icinga2, tetapi belum ada host yang terhubung ke Icinga, mari hubungkan host pertama kami.2. Hubungkan host baru ke sistem pemantauan
Sekarang kami hanya memiliki satu host yang terhubung ke icinga2 - Icinga itu sendiri. Mari kita hubungkan yang lain.Saya menunjukkan contoh di buruh pelabuhan, tetapi semuanya akan bekerja pada bare metal:Pertama, Anda perlu menyiapkan template dan memberikan beberapa informasi tentang host untuk boneka:
. 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
Kami melihat melalui browser apa yang kami dapatkan:
Cek telah ditambahkan dan sedang menunggu penyelesaian.Setelah 5 menit:
Dengan cara yang sama, semua host lain ditambahkan ke sistem. Saya ingin menarik perhatian Anda pada kenyataan bahwa panduan ini adalah bukti konsep dan tidak dapat digunakan dalam lingkungan produksi tanpa modifikasi apa pun.Jika artikelnya tampak menarik, lain kali saya akan menunjukkan bagaimana Anda dapat menambahkan semua jenis pemeriksaan kustom yang menarik, berbagi rahasia dan menceritakan semua jenis seluk-beluk. Juga, jika ada keinginan, saya akan menceritakan lebih detail tentang bagaimana semua ini bekerja dari dalam.Terima kasih atas perhatian anda!
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/