X

Nagios 安裝設定 於 Debian、Ubuntu Linux

Nagios 可以自動做多台主機的檢查、通知...  等等,於一個介面統一控管、查詢使用,也有歷史資料可以查詢。

Nagios 除了內建常用的外,有缺少需要的可以自己寫,或者是找此處有更多寫好的可以直接下載安裝使用:

Plugins - Nagios Exchange # extension 監控 script 不夠用, 可以從這邊找

Ex:

Nagios 安裝設定 於 Debian、Ubuntu Linux

Nagios 的 Server、Client 的角色常常會互換,因為監控的部分,可以是 Server 自己去 Client 要資料,也可以是 Client 送資料到 Server 來, 這部分常常會搞得有點混亂,所以在此統一定義:

  • Server:Nagios 監控主機(含 Nagios Web 這台) - 下述的 server# 都指這台
  • Client:各台要被監控的主機 - 下述的 client# 都指這台 * n
  • 註: Nagios 會透過 nrpe 來互傳資料

基本資料

  • Server IP: 123.123.123.123 / 內部IP: 192.168.1.1 (Monitor Server)
  • Client IP: 192.168.1.100 # 盡量使用內部IP,外部IP 會需要搭配 iptables
  • Nagios 帳號 / 密碼: nagiosadmin / nagiospassword

Nagios Server 安裝、設定

  1. server# sudo apt-get install nagios3 nagios-nrpe-plugin
  2. 中途會建立 nagiosadmin 所需要的密碼,請輸入自己的密碼,依照上述設定是採用:
  3. nagiospassword # 會建立於 /etc/nagios3/htpasswd.users
    • /etc/nagios3/conf.d/*
    • generic-host_nagios2.cfg : 主機的檢查, 設定哪些要啟動
    • generic-service_nagios2.cfg : 服務檢查, 設定 service 規則哪些要啟用/停用
    • contacts_nagios2.cfg : 出事要聯絡誰? Email 給誰?
    • hostgroups_nagios2.cfg : 設定 hostgroup, ex: debian server / http / ssh, 有哪些 member.. 等.
    • services_nagios2.cfg : check 哪些 service 正常運作, 所有機器都需要的, 要啟用哪些規則.
    • extinfo_nagios2.cfg : 系統資訊
    • localhost_nagios2.cfg : 設定要檢測的項目, 到哪邊需要警告... 等等, ex: hd usage, load, process ...
    • timeperiods_nagios2.cfg : 時間與名稱對應
    • 以上這些都要初始化要設定的主要是 generic-service_nagios2.cfg 和 nagios.cfg 這兩個檔案。
  4. 後續要增加機器持續修改的,會是 localhost_nagios2.cfg 這個檔案不斷複製修改。
  5. Nagios 有哪些預設設定檔可以參考使用,可見: /etc/nagios-plugins/config/
  6. Nagios 檢測套件程式可見: /usr/lib/nagios/plugins/
  7. server# vim /etc/nagios3/conf.d/generic-service_nagios2.cfg
    • notifications_enabled: 要不要通知
    • max_check_attempts: 重試幾次才通知? 還是 每次 failed 就立刻通知
    • notification_period: 通知的時間要7*24, 還是只要上班時間就好
    • normal_check_interval: 每次檢查的時間間隔要多久
    • contact_groups: 有問題要 Email 給誰
  8. server# vim /etc/nagios3/nagios.cfg
    • check_external_commands=0 # 改成1
    • check_external_commands=1
    • #dont_blame_nrpe=0 # 改成1, 允許丟參數進來
    • dont_blame_nrpe=1
  9. 新增監控機器 * n
    1. server# sudo cp localhost_nagios2.cfg  www.cfg # www.cfg 可自行取機器名字,ex: f1、f2、db1.. 等等.
    2. 將 host_name 後面的值都換成 www_hostname
    3. 將 address 後面的值換成 www_hostname 的 IP
  10. /etc/init.d/nagios3 restart

Nagios Client 安裝、設定

Nagios 要被監控的主機 Client 部分的安裝設定如下:(這邊採用 Client 設定分別寫死監控數字,Server 純粹呼叫即可得到結果,不需傳參數進來的方式)

  1. client# apt-get install nagios-nrpe-server nagios-plugins
  2. vim /etc/nagios/nrpe.cfg
    1. allowed_hosts=127.0.0.1 # 加上 monitor server ip
    2. allowed_hosts=127.0.0.1,192.168.1.1 # 加上 monitor server ip
    3. #server_address=127.0.0.1
    4. server_address=192.168.1.100 # 改成自己的內部 IP,這樣子就不用開放外部Port都可以看到, 比較安全
    5. 下面這些看有哪些要 check 的, 用這些語法去檢查.
    6. #command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
    7. command[check_root]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/disk/by-uuid/6a9b5d9c-c46d-4fbb-aae4-9a54a0ab0b96
    8. #command[...] ..  這些 可以寫成 /etc/nagios/nrpe.d/nginx.cfg # check nginx..  等等另外處理
    9. # 這些 [] 裡面對應的是 server# 設定裡面的 check_command check_nrpe!check_root!20%!10%
  3. sudo /etc/init.d/nagios-nrpe-server restart

此時就可以到 http://123.123.123.123/nagios3/ , 用 nagiosadmin / nagiospassword 登入了.

註: 上述設定的 check_nrpe 是什麼東西? 詳細可見下述:

  • server# vim /etc/nagios-plugins/config/check_nrpe.cfg
  • server# vim /etc/nagios3/commands.cfg # Email 那些都是怎麼執行的,可見此設定

nrpe 手動執行檢查方式

  • ./check_nrpe -H 192.168.1.100 -c check_nginx_status # 註: nginx 需要另外安裝
  • /usr/lib/nagios/plugins/check_nrpe -H 192.168.1.100 -c check_procs -a 250 400
  • /usr/lib/nagios/plugins/check_nrpe -H 192.168.1.100 -c check_nginx_status -a localhost /nginx_status localhost 8 10000,100,200 20000,200,300

後續陸續增加 Nagios Client 方式

  1. ssh server
    1. server# cp /etc/nagios3/conf.d/localhost_nagios2.cfg /etc/nagios3/conf.d/web1.cfg
    2. vim /etc/nagios3/conf.d/web1.cfg # 修改 host_name, alias, address.. 等等
    3. sudo /etc/init.d/nagios3 restart
  2. ssh client
    1. client# apt-get install nagios-nrpe-server nagios-plugins # 套件安裝
    2. ifconfig # 記下 192.168.1.x 的 IP
    3. vim /etc/nagios/nrpe.cfg
      • #server_address=127.0.0.1 改成
      • server_address=192.168.1.100
      • allowed_hosts=127.0.0.1 加上
      • allowed_hosts=127.0.0.1,192.168.1.1
      • #dont_blame_nrpe=0 # 允許外部參數
      • dont_blame_nrpe=1
    4. sudo /etc/init.d/nagios-nrpe-server restart
    5. vim /etc/nagios/nrpe.cfg # 修改設定值
      • #command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200 # 改成
      • command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 400
      • #command[check_disk]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ # 改成
      • command[check_disk]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
    6. sudo /etc/init.d/nagios-nrpe-server restart

相關問題

Q1: 關於安全性問題,沒有內部IP,想要只允許 Monitor Server 可以存取此 Port,下述作法可以參考看看:

Q2: 若 SSH port 有修改, 要如何修改設定? (假設 SSH Port 由 22 改成 2222)

  1. 檢測 SSH port 是否通的程式是: /usr/lib/nagios/plugins/check_ssh, 操作方式如下:
  2. /usr/lib/nagios/plugins/check_ssh localhost
  3. /usr/lib/nagios/plugins/check_ssh -p 2222 localhost
  4. vim /etc/nagios3/conf.d/services_nagios2.cfg
    # check that ssh 222 port services are running
    define service {
        hostgroup_name                  ssh2-servers
        service_description             SSH2
        check_command check_ssh_port!2222!server
        use generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
    }
  5. sudo vim hostgroups_nagios2.cfg # 需增加 hostgroup 對應上面的 hostgroup_name
    # A list of your ssh-accessible servers
    define hostgroup {
        hostgroup_name  ssh2-servers
        alias           SSH2 servers
        members         localhost
    }
  6. 可參考此篇: linux - Monitor ssh on non-default port with Nagios - Server Fault

Q3: 出現 CHECK_NRPE: Error - Could not complete SSL handshake 的問題,該怎麼解決?

  1. Client# vim /etc/nagios/nrpe.cfg # 修改下述
    • #server_address=127.0.0.1 改成 Client 對外IP
    • server_address=192.168.1.100
    • allowed_hosts=127.0.0.1 加上查詢 Server 的 IP
    • allowed_hosts=127.0.0.1,123.123.123.123
  2. sudo /etc/init.d/nagios-nrpe-server restart

相關網頁

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post