0x00 Nagios介紹與安裝

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

  1. 最初稱爲nagios的服務,如今稱爲nagios core .core 是做爲IT系統, 網絡和基礎架構的開源監視軟件免費提供的。經過容許插件擴展監控 能力, Core 包含了各類基礎結構監控。是付費nagios監控的基礎。
  2. nagios core 包含有一個可選擇的web界面,用於展現網絡狀態,通知,日誌文件等。
  3. 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. 這種屬於輪詢調度。

被動檢查一般使用場景

  • 自己監控項的就是應該異步的,不適合輪詢方式監控,那麼採用被動檢查。
  • 要監控的節點實在防火牆後面,也就是隻能出外網,不能外網訪問,那麼能夠採起被動。

問題:被動檢測怎麼獲取到統一的檢測配置呢?難道不能集中管理?

被動檢查是怎樣工做的

  1. 一個external application 檢測主機或者服務的狀態
  2. the external application 寫檢測結果到 external command file
  3. 下一次,Nagios Core 讀取the external command file,它將把被動檢測的結果放入一個隊列中供後續的處理。
  4. Nagios COre 將定義期執行一個check result reaper event 而後掃描檢測結果隊列。每個服務的檢測結果一樣的方式處理。不管這個檢測結果是active或者passive檢測結果。而後根據處理結果,可能會發送通知或者日誌告警等。

開啓被動檢測

  1. 設置accept_passive_service_checks = 1 # 控制全局
  2. 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

建議學習路徑

  1. 放鬆點,雖然nagios不是開箱即用的一個監控系統。提供了靈活的配置,因此要有心理準備會花些時間在上面,難度就在花時間,而不是其它的。
  2. 使用了快速搭建指導,大概就20min就能安裝並監控到你的本地系統。一旦完成,建議開始學習怎麼配置nagios去作更多事情。
  3. 當你不瞭解一些東西時,你可能會感到很是大的挑戰在進行配置時。這時候就要靜下心來,肯定讀取了文檔文檔鏈接 ,特別是讀取「Configuring Naigos」和 「The Basics」,即配置ngaiso和基礎支持部分。對於高階知識部分要在你對基礎有好的掌握後進行學習。
  4. 求助能夠經過論壇

安裝Nagios

System Requirements系統要求

  1. Linux or Unix
  2. 可以被網絡訪問到
  3. 若是是源碼安裝,須要有一個C complier
  4. 若是須要web界面,那麼還須要一個web server,如推薦apache,及Thomas Boutell's gd library version 1.6.3 or higher (required by the statusmap and trends cgis)+

Ubu安裝

  1. disable selinux 停用掉selinux, ubu默認是關閉了的
  2. 作一些準備工做, 這裏已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
  1. 下載源碼
    參照這裏

  2. 編譯

cd /tmp/nagioscore-nagios-4.x.x/
sudo ./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all
  1. 建立用戶和組,用戶nagios應用的用戶和組
    後面的www-data 用戶也會加入到這個nagios組中
sudo make install-groups-users 
sudo usermod -a -G nagios www-data
  1. 安裝二進制
sudo make install
  1. 安裝配置服務/Daemon
    就是建立服務配置文件,並用於開機啓動
sudo make install-daemoninit
  1. 安裝命令模式
    安裝和配置其它的命令文件
sudo make install-commandmode
  1. 安裝 配置文件
    安裝樣例配置文件,這些配置用於nagios啓動
sudo make install-config
  1. 安裝apache配置文件
    安裝apache web server的配置文件和設置
sudo make install-webconf
sudo a2enmod rewrite
sudo a2enmod cgi
  1. 配置防火牆
    容許80 入口流量在本地防火牆
sudo ufw allow Apache
sudo ufw reload
  1. 建立nagiosadmin帳號
    建立一個Apache用戶帳號用於登陸到Nagios
    下面這條命令,將建立一個用戶帳號,叫作nagiosadmin,須要提供一個password
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

注意:當要添加額外帳號時,也是用上面命令,可是要把-c 參數去掉,否則會新建這個帳號會替換掉nagiosadmin。還有這裏的是帳號時基於apache的一個帳號,說明apache有權限操做nagios,做爲nagios的一個web代理操做nagios。問題:nagios沒有帳號管理嗎?

  1. 啓動apache web server
sudo systemctl restart apache2.service # 適用 ubu 15.x/16.x/17.x/18.x/20.x
  1. 啓動nagios service daemon
sudo systemctl start nagios.service  # 適用 ubu 15.x/16.x/17.x/18.x/20.x
  1. 如今能夠訪問nagios web interface了
  1. 到此只是安裝完成了nagios core, 這是web會提示一個no outpu on stdout。。。錯誤提示,是由於尚未安裝nagios plugins。下面將安裝nagios plugins。

Centos/Debian系統安裝

安裝指導:點擊連接

安裝Nagios Plugins

  1. 安裝依賴
sudo apt-get install -y autoconf gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext
  1. 下載源碼
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
  1. 編譯和安裝
cd /tmp/nagios-plugins-release-2.2.1/
sudo ./tools/setup
sudo ./configure
sudo make
sudo make install
  1. 測試Plugins
    安裝Nagios Core最後一步說了,在默認的hosts和service下的監控項,都是紅色的錯誤提示,那是由於沒有安裝Nagios Plugins。如今已經安裝了,咱們能夠經過進出入監控項,而後在監控項詳情的右邊列表中,有一個「Re-Schedule ...next chekc」,點擊進去,就能夠手動調度一次監控項的檢測,而後直接submit提交,就能夠看到咱們的監控項狀態變爲OK。這就說明咱們的nagios plugins安裝運行成功。

Nagios後臺服務啓停管理

  1. 啓動
    sudo systemctl start nagios.service
  2. 中止
    sudo systemctl stop nagios.service
  3. 重啓
    sudo systemctl restart nagios.service
  4. 查看狀態
    sudo systemctl status nagios.service

其它方式

  1. init腳本啓動nagios core
/etc/rc.d/init.d/nagios start
  1. nagios二進制啓動方式
/usr/local/nagios/bin/nagios -d /user/local/nagios/etc/nagios.cfg  # -d表示daemon啓動,後面是指定配置文件
  1. 當修改配置文件是,能夠要restart/reload
# init 腳本重啓
/etc/rc.d/init.d/nagios reload

# web 界面
進入process info,而後在裏面有一個「restart the nagios process"能夠重啓

# 利用linux進程信號量
kill -HUP pid
  1. 中止nagios
# init 腳本中止
/etc/rc.d/init.d/nagios stop

# web 界面
仍是process info 點擊」shutdown the nagios process"
其實原理就是經過cgi腳原本關閉

# linux信號量
kill <nagios-pid>

很久沒更新過了,最近研究開源域控,用到nagios監控,從新梳理一遍

相關文章
相關標籤/搜索