Nagios介紹與安裝
Nagios是一款監控系統。開源的監控系統,用於監控計算機/網絡系統。安裝運行在linux環境。php
介紹
- 開源,固然nagios也有其商業的版本,那就是nagios xi. 主要就是nagios core是開源的,咱們也主要使用nagios core 和開源nagios pulgins組成咱們的開源監控系統
- 支持主動check和被動check,主動check是由nagios發起,被動check則是來自被鏈接到監控工具的外部應用
- Nagios起初是叫作Netsaint,發佈於1999年。Ethan Galstad 開發了Nagios,隨後做爲開源項目有了不少的貢獻者
- Nagios公司成立來維護Nagios核心技術,並提供了多種產品,像XI, Log server, Network Analyzer and Fusion。
Nagios幾個產品的區別
Nagios Core
- 最初稱爲nagios的服務,如今稱爲nagios core .core 是做爲IT系統, 網絡和基礎架構的開源監視軟件免費提供的。經過容許插件擴展監控 能力, Core 包含了各類基礎結構監控。是付費nagios監控的基礎。
- nagios core 包含有一個可選擇的web界面,用於展現網絡狀態,通知,日誌文件等。
- nagiso core 支持通知,支持SMTP, HTTP, Ping
Nagios XI
在nagios core 基礎上提供了跟人性化的接口界面,還有周期報告,和郵 件技術支持等,是要付費購買html
Nagios Log Server
是一個日誌監控及管理工具,能夠組織日誌查看,排序,配置日誌,包括windows event logs。收集分析日誌。linux
Nagios Network Analyzer
跟蹤網絡流量和帶寬利用率ios
Nagios Fusion
是針對Core 與 XI的聚合服務,能夠在一個視圖中顯示多個系統。能夠藉助Fusion,能夠容許哪些用戶查看哪些服務的監控。git
除了nagios core和nagios plugins其它的都不是咱們目前關心的,由於其它都是商業付費的。這裏只是列舉出來,避免誤入歧途,把時間花費志研究商業版本github
監控方式或途徑
agent-base
安裝代理軟件在目標系統或主機上,經過代理軟件收集目標中的數據並報告給管理serverweb
代理軟件包括:apache
- Nagios Remote Data Processor (NRDP)
- Nagios Cross Plaform Agent (NCPA)
- Nagios Remote Pluin Executor (NRPE) 用於運行遠程腳本和插件,多用於收集系統參數:負載,內存,磁盤用量。
check_nrpe插件,安裝位於本地; 而NRDP插件安裝運行在遠程主機。
windows
關於插件:centos
- nagios支持插件是獨立和可擴展的,這樣用戶能夠自定義目標的哪些參數須要被監控。
- 插件處理命令行傳入的參數,將命令與nagios core 交流通訊。
- 大概有50多個插件被nagios開發和維護,有3000多個來自社區維護。
- 插件被分類出來,包括硬件,軟件,雲,OSes, 安全, 日誌文件,網絡鏈接。
agentless
不經過代理軟件的方式, 是利用監控目標支持的對外協議或對外接口來達到(如ssh, tcp/ip原理)模擬一個agent做用
主動檢測Active Check
- 主動檢測是被Nagios Core進程初始化
- 按期執行主動檢查
主動檢查由Nagios Core守護程序中的檢查邏輯啓動。當Nagios Core須要檢查主機或服務的狀態時,它將執行插件並向其傳遞有關須要檢查的信息。而後,插件將檢查主機或服務的運行狀態,並將結果報告回Nagios Core守護程序。 Nagios Core將處理主機或服務檢查的結果,並根據須要採起適當的措施(例如,發送通知,運行事件處理程序等)。

被動檢測Passive Check
- 被動檢測初始化和performed是被額外的進程
- 被動檢測的結果被提交到Nagios Core處理
- 與主動check的主要不一樣點就是,主動檢查的初始化和執行都是被Nagios Core來調度的。而被動檢查的初始化和執行都是被external applications。
大多數的狀況下,都是使用Nagios Core來監控hosts和services利用定義調度的主動check. 這種屬於輪詢調度。

被動檢查一般使用場景
- 自己監控項的就是應該異步的,不適合輪詢方式監控,那麼採用被動檢查。
- 要監控的節點實在防火牆後面,也就是隻能出外網,不能外網訪問,那麼能夠採起被動。
問題:被動檢測怎麼獲取到統一的檢測配置呢?難道不能集中管理?
被動檢查是怎樣工做的
- 一個external application 檢測主機或者服務的狀態
- the external application 寫檢測結果到 external command file
- 下一次,Nagios Core 讀取the external command file,它將把被動檢測的結果放入一個隊列中供後續的處理。
- Nagios COre 將定義期執行一個check result reaper event 而後掃描檢測結果隊列。每個服務的檢測結果一樣的方式處理。不管這個檢測結果是active或者passive檢測結果。而後根據處理結果,可能會發送通知或者日誌告警等。
開啓被動檢測
- 設置accept_passive_service_checks = 1 # 控制全局
- passive_checks_enabled 在host和service定義中設置爲1 # 控制單個監控對象
提交被動服務檢測結果
external applications can submit passive service check results to Nagios Core by writing a PROCESS_SERVICE_CHECK_RESULT external command to the external command file.
external applications 提交被動服務檢測結果到nagios core是經過寫PROCESS_SERVICE_CHECK_RESULT命令及其結果參數到external command file
命令行格式:
[<timestamp>] PROCESS_SERVICE_CHECK_RESULT;<host name>;<svc_description>;<return_code>;<plugin_output>
svc_description就是用於給處理結果的程序定位這個監控結果是哪一個服務的。
服務必須在被動檢測開始前,就要在Nagios Core中定義好。
從遠程主機提交被動檢查結果
若是與Nagios Core駐留在同一主機上的應用程序正在發送被動主機或服務檢查結果,則它能夠簡單地將結果直接寫入外部命令文件,如上所述。 可是,遠程主機上的應用程序沒法作到這一點。
爲了容許遠程主機將被動檢查結果發送到監視主機,可使用NSCA或NRDP插件。 NSCA附加程序由在Nagios Core主機上運行的守護程序和從遠程主機執行的客戶端組成。 守護程序將偵聽來自遠程客戶端的鏈接,對提交的結果執行一些基本的驗證,而後將檢查結果直接寫入外部命令文件(如上所述)。

passive check
建議學習路徑
- 放鬆點,雖然nagios不是開箱即用的一個監控系統。提供了靈活的配置,因此要有心理準備會花些時間在上面,難度就在花時間,而不是其它的。
- 使用了快速搭建指導,大概就20min就能安裝並監控到你的本地系統。一旦完成,建議開始學習怎麼配置nagios去作更多事情。
- 當你不瞭解一些東西時,你可能會感到很是大的挑戰在進行配置時。這時候就要靜下心來,肯定讀取了文檔文檔鏈接 ,特別是讀取「Configuring Naigos」和 「The Basics」,即配置ngaiso和基礎支持部分。對於高階知識部分要在你對基礎有好的掌握後進行學習。
- 求助能夠經過論壇
安裝Nagios
System Requirements系統要求
- Linux or Unix
- 可以被網絡訪問到
- 若是是源碼安裝,須要有一個C complier
- 若是須要web界面,那麼還須要一個web server,如推薦apache,及Thomas Boutell's gd library version 1.6.3 or higher (required by the statusmap and trends cgis)+
Ubu安裝
- disable selinux 停用掉selinux, ubu默認是關閉了的
- 作一些準備工做, 這裏已ubutu 18.x 例子。不一樣版本能夠查看點擊這裏
sudo apt-get update
sudo apt-get install -y autoconf gcc libc6 make wget unzip apache2 php libapache2-mod-php7.4 libgd-dev
-
下載源碼
參照這裏
-
編譯
cd /tmp/nagioscore-nagios-4.x.x/
sudo ./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all
- 建立用戶和組,用戶nagios應用的用戶和組
後面的www-data 用戶也會加入到這個nagios組中
sudo make install-groups-users
sudo usermod -a -G nagios www-data
- 安裝二進制
sudo make install
- 安裝配置服務/Daemon
就是建立服務配置文件,並用於開機啓動
sudo make install-daemoninit
- 安裝命令模式
安裝和配置其它的命令文件
sudo make install-commandmode
- 安裝 配置文件
安裝樣例配置文件,這些配置用於nagios啓動
sudo make install-config
- 安裝apache配置文件
安裝apache web server的配置文件和設置
sudo make install-webconf
sudo a2enmod rewrite
sudo a2enmod cgi
- 配置防火牆
容許80 入口流量在本地防火牆
sudo ufw allow Apache
sudo ufw reload
- 建立nagiosadmin帳號
建立一個Apache用戶帳號用於登陸到Nagios
下面這條命令,將建立一個用戶帳號,叫作nagiosadmin,須要提供一個password
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
注意:當要添加額外帳號時,也是用上面命令,可是要把-c 參數去掉,否則會新建這個帳號會替換掉nagiosadmin。還有這裏的是帳號時基於apache的一個帳號,說明apache有權限操做nagios,做爲nagios的一個web代理操做nagios。問題:nagios沒有帳號管理嗎?
- 啓動apache web server
sudo systemctl restart apache2.service # 適用 ubu 15.x/16.x/17.x/18.x/20.x
- 啓動nagios service daemon
sudo systemctl start nagios.service # 適用 ubu 15.x/16.x/17.x/18.x/20.x
- 如今能夠訪問nagios web interface了
- 到此只是安裝完成了nagios core, 這是web會提示一個no outpu on stdout。。。錯誤提示,是由於尚未安裝nagios plugins。下面將安裝nagios plugins。
Centos/Debian系統安裝
安裝指導:點擊連接
安裝Nagios Plugins
- 安裝依賴
sudo apt-get install -y autoconf gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext
- 下載源碼
cd /tmp
wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/archive/release-2.2.1.tar.gz
tar zxf nagios-plugins.tar.gz
- 編譯和安裝
cd /tmp/nagios-plugins-release-2.2.1/
sudo ./tools/setup
sudo ./configure
sudo make
sudo make install
- 測試Plugins
安裝Nagios Core最後一步說了,在默認的hosts和service下的監控項,都是紅色的錯誤提示,那是由於沒有安裝Nagios Plugins。如今已經安裝了,咱們能夠經過進出入監控項,而後在監控項詳情的右邊列表中,有一個「Re-Schedule ...next chekc」,點擊進去,就能夠手動調度一次監控項的檢測,而後直接submit提交,就能夠看到咱們的監控項狀態變爲OK。這就說明咱們的nagios plugins安裝運行成功。
Nagios後臺服務啓停管理
- 啓動
sudo systemctl start nagios.service
- 中止
sudo systemctl stop nagios.service
- 重啓
sudo systemctl restart nagios.service
- 查看狀態
sudo systemctl status nagios.service
其它方式
- init腳本啓動nagios core
/etc/rc.d/init.d/nagios start
- nagios二進制啓動方式
/usr/local/nagios/bin/nagios -d /user/local/nagios/etc/nagios.cfg # -d表示daemon啓動,後面是指定配置文件
- 當修改配置文件是,能夠要restart/reload
# init 腳本重啓
/etc/rc.d/init.d/nagios reload
# web 界面
進入process info,而後在裏面有一個「restart the nagios process"能夠重啓
# 利用linux進程信號量
kill -HUP pid
- 中止nagios
# init 腳本中止
/etc/rc.d/init.d/nagios stop
# web 界面
仍是process info 點擊」shutdown the nagios process"
其實原理就是經過cgi腳原本關閉
# linux信號量
kill <nagios-pid>
很久沒更新過了,最近研究開源域控,用到nagios監控,從新梳理一遍