icinga 是 nagios 的分支,在以往都是選擇 nagios 來做外部服務監控,如 http, ping, dns .. 等,但隨著資訊技術的演變,在面對越來越龐大的系統架構,自動化這件事情就變得越來越重要了,在監控這塊 nagios 一直是主流,但是想必用過的人都知道,nagios 的設定在少量機器的狀況下還好,但當你的數量大到一定程度後就會變得不好管理
對於一個管理者來說,如果 “設定監控” 這件事情要耗費這麼多時間的話,那很快你就會發現時間越來越少。
對於 icinga2 或是 nagios 來說,我都是把它當作外部監控主機來使用,用來監控以使用者角度,或是設備異常為主,我會選擇 icinga2 的原因是:
- 雖然設計上許多還是有 nagios 的影子,但是 icinga2 參考 Puppet 的設計方式以 object-based 的概念來改善許多使用者垢病 nagios 的缺點。
- 提供 API 接口 (這點很重要)
- 優化過的模組 (Icinga Director、Grafana Integration ..)
- 支援所有 nagios 模組套件
雖然對於 icinga2 我還是有很多的意見 (介面還是太醜,顯示的資訊太多太複雜),
Ubuntu 16.04 安裝 icinga2 core
Step 1. 用 ppa 來裝 repository
$ sudo add-apt-repository ppa:formorer/icinga -y $ sudo apt-get update $ sudo apt-get install -y icinga2 icinga2-ido-mysql nagios-plugins mysql-server mysql-client
Step 2. 查看有哪些模組可以用,以及開啟的模組,把一些可能會用到的開啟,如 command、graphite .. 這個之後在 Web console 也可以開啟。
$ sudo icinga2 feature list Disabled features: api compatlog debuglog gelf influxdb livestatus opentsdb perfdata statusdata syslog Enabled features: checker mainlog notification $ sudo icinga2 feature enable command graphite ido-mysql
如果你在 apt install 的時候就設定了 icinga2 的資料庫,那 Step3,4 就不用做了,icinga2 在這個地方自動化做的不錯。
Step 3. 設定 mysql,匯入 icinga2 的資料庫
$ sudo systemctl start mysql $ mysql_secure_installation $ mysql -u root -p mysql> CREATE DATABASE icinga2; mysql> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga2.* TO 'icinga2'@'localhost' IDENTIFIED BY 'icinga2'; mysql> flush privileges; $ mysql -u root -p icinga2 < /usr/share/icinga2-ido-mysql/schema/mysql.sql
Step 4. ido-mysql 的設定檔 (現在好多都改用 available/enable model 的方式)
$ sudo vim /etc/icinga2/features-enabled/ido-mysql.conf library "db_ido_mysql" object IdoMysqlConnection "ido-mysql" { user = "icinga2", password = "icinga2", host = "localhost", database = "icinga2" }
Step 5. 啟動 icinga2 core
$ sudo systemctl enable icinga2 $ sudo systemctl start icinga2
這樣就完成 icinga2 的 core,就可以開始設計監控的項目。
ICINGA2 取代 NAGIOS 的監控系統 – 安裝 Icinga Web 2