主頁 > 作業系統 > 0x00 Nagios介紹與安裝

0x00 Nagios介紹與安裝

2020-09-22 17:44:47 作業系統

Nagios介紹與安裝

目錄
  • Nagios介紹與安裝
    • 介紹
      • Nagios幾個產品的區別
        • Nagios Core
        • Nagios XI
        • Nagios Log Server
        • Nagios Network Analyzer
        • Nagios Fusion
      • 監控方式或途徑
        • agent-base
        • agentless
        • 主動檢測Active Check
        • 被動檢測Passive Check
      • 被動檢查通常使用場景
      • 被動檢查是怎樣作業的
      • 開啟被動檢測
      • 提交被動服務檢測結果
      • 從遠程主機提交被動檢查結果
      • 建議學習路徑
    • 安裝Nagios
      • System Requirements系統要求
      • Ubu安裝
      • Centos/Debian系統安裝
    • 安裝Nagios Plugins
    • Nagios后臺服務啟停管理
      • 其它方式

Nagios是一款監控系統,開源的監控系統,用于監控計算機/網路系統,安裝運行在linux環境,

介紹

  • 開源,當然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 基礎上提供了跟人性化的介面界面,還有周期報告,和郵 件技術支持等,是要付費購買

Nagios Log Server

是一個日志監控及管理工具,可以組織日志查看,排序,配置日志,包括windows event logs,收集分析日志,

Nagios Network Analyzer

跟蹤網路流量和帶寬利用率

Nagios Fusion

是針對Core 與 XI的聚合服務,可以在一個視圖中顯示多個系統,可以借助Fusion,可以允許哪些用戶查看哪些服務的監控,

除了nagios core和nagios plugins其它的都不是我們目前關心的,因為其它都是商業付費的,這里只是列舉出來,避免誤入歧途,把時間花費志研究商業版本

監控方式或途徑

agent-base

安裝代理軟體在目標系統或主機上,通過代理軟體收集目標中的資料并報告給管理server

代理軟體包括:

  • Nagios Remote Data Processor (NRDP)
  • Nagios Cross Plaform Agent (NCPA)
  • Nagios Remote Pluin Executor (NRPE) 用于運行遠程腳本和插件,多用于收集系統引數:負載,記憶體,磁盤用量,

check_nrpe插件,安裝位于本地; 而NRDP插件安裝運行在遠程主機,

關于插件:

  • 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了
  • http://yourip/nagios
  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監控,重新梳理一遍

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/106223.html

標籤:其他

上一篇:003.當在windows終端輸入ipconfig時,顯示不是內部或外部命令,也不是可運行的程式或批處理檔案

下一篇:005.作業系統及Linux系統,虛擬機的作用和發展歷史

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more