標籤:cli des orm template hosts 電腦 包括 ftp 監控系統
Nagios是一個流行的電腦系統和網路監控程式,它檢測主機和服務,當異常發生和解除時能提醒使用者。它是基於GPLv2開發的開源軟體,可免費獲得及使用。
nagios工作原理
nagios的功能是監控服務和主機,但是其自身並不包括這些功能,所有的監控、檢測功能都是通過各種外掛程式來完成的。啟動nagios後,它會周期性的自動調用外掛程式去檢測伺服器狀態,同時nagios會維持一個隊列,所有外掛程式返回的狀態資訊都進入隊列,nagios每次都從隊首讀取資訊,進行處理後,再把狀態結果通過web顯示出來。這就是被動模式,經常用於監控主機的系統資源,比如系統負載、磁碟使用率、記憶體使用量率、網路狀態、系統進程數等等。另一種是主動模式,主要是nagios伺服器主動去擷取資料,常用於探測URL的監控和服務的狀態監控。相比於主動模式中伺服器主動去被監控機上輪詢擷取監控資料的方式,這樣做的一個很大優勢就是將除去資料處理的其他工作都放在了被監控機上面(包括資料的傳輸),就避免了被監控機數量大時一次輪詢時間過長而導致監控反應延遲,這也是被動模式能承擔更大監控量的關鍵。nagios提供了許多外掛程式,利用這些外掛程式可以方便的監控很多服務狀態。安裝完成後,在nagios主目錄下的/libxec裡放有nagios內建的可以使用的所有外掛程式。
nagios主要功能
- 網路服務監控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
- 主機資源監控(CPU load、disk usage、system logs),也包括Windows主機(使用NSClient++ plugin)
- 指定自己編寫的Plugin通過網路收集資料來監控任何情況(溫度、警告……)
- 通過配置Nagios遠程執行外掛程式遠程執行指令碼
- 遠程監控支援SSH或SSL加通道方式進行監控
- 簡單的plugin設計允許使用者很容易的開發自己需要的檢查服務,支援很多開發語言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)
- 包含很多圖形化資料Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
- 可並行服務檢查
- 能夠定義網路主機的層次, 允許逐級檢查, 就是從父主機開始向下檢查
- 當服務或主機出現問題時發出通告,可通過email, pager, sms 或任意使用者自訂的plugin進行通知
- 能夠自訂事件處理機制重新啟用出問題的服務或主機
- 自動日誌迴圈
- 支援冗餘監控
- Web介面可以查看當前網路狀態,通知,問題曆史,記錄檔等
本次項目主要介紹如何部署nagios,如何對nagios進行配置,使其能夠對指定的主機進行監控操作
項目環境準備關閉防火牆及selinux系統版本:centos 7.4虛擬機器分配
本次項目只對被監控端做簡單測試,所以被監控端不需安裝nagios外掛程式。 角色 |
IP地址 |
所用軟體 |
監控端 |
172.16.10.34 |
nagios-4.4.2、nagios-plugins-2.2.1 |
被監控端 |
172.16.10.20 |
被監控端 |
172.16.10.23 |
部署nagios監控系統
因為nagios監控系統的網頁需要動態網頁支援,所以需要安裝httpd和php軟體,或者直接在lamp環境下安裝,所以實驗前要準備好虛擬機器環境,對於lamp架構的搭建,在這裡就不多贅述。
安裝環境包
yum install -y -- gcc -- glibc -- glibc-common -- gd -- gd-devel -- xinetd -- openssl-devel
建立系統管理使用者
useradd -s /sbin/nologin nagios
建立安裝目錄,指定屬主屬組
mkdir /usr/local/nagioschown -R nagios.nagios /usr/local/nagios
編譯安裝nagios
tar -zxvf nagios-4.4.2.tar.gz -C /optcd /opt/nagios-4.4.2./configure --prefix=/usr/local/nagiosmake allmake installmake install-initmake install-commandmodemake install-config
驗證安裝結果
ls /usr/local/nagios
安裝nagios-plugins
tar xvzf nagios-plugins-2.2.1.tar.gz -C /optcd /opt/nagios-plugins-2.2.1./configure --prefix=/usr/local/nagiosmake && make install
配置nagios監控系統修改httpd.conf
vim /etc/httpd/conf/httpd.conf User nagios Group nagios //修改原使用者名稱apache為nagios<IfModule dir_module> DirectoryIndex index.html index.php //增加index.php</IfModule>AddType application/x-httpd-php .php //插入該句
增加安全驗證配置
為了安全起見,一般情況下要讓nagios 的web 監控頁面必須經過授權才能訪問,這需要增加驗證配置,即在httpd.conf 檔案最後插入如下資訊:
vim /etc/httpd/conf/httpd.conf#setting for nagios ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" <Directory "/usr/local/nagios/sbin"> AuthType Basic Options ExecCGI AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd Require valid-user </Directory> Alias /nagios "/usr/local/nagios/share" <Directory "/usr/local/nagios/share"> AuthType Basic Options None AllowOverride None Order allow,deny Allow from all AuthName "nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd Require valid-user </Directory>
設定登陸使用者名稱及密碼
htpasswd -c /usr/local/nagios/etc/htpasswd chen
配置nagios
配置nagois 一般在目錄/usr/local/nagios/etc/下
templates.cfg
主要用於監控主機資源以及服務,在nagios配置中稱為對象,為了不必重複定義一些監控對象,Nagios引入了一個模板設定檔,將一些共性的屬性定義成模板,以便於多次引用。contact_groups 聯絡組屬性改成 np 將在後面的contacts.cfg檔案中定義
vim /usr/local/nagios/etc/object/templates.cfgcontact_groups np //文中有五處都需修改
resource.cfg檔案
resource.cfg是nagios的變數定義檔案 一般無需更改
commands.cfg檔案
此檔案預設是存在的,無需修改即可使用,當然如果有新的命令需要加入時,在此檔案進行添加即可
hosts.cfg檔案
此檔案預設不存在,需要手動建立,hosts.cfg主要用來指定被監控的主機地址以及相關屬性資訊,注意書寫格式,不要有多餘的空格
vim /usr/local/nagios/etc/objects/hosts.cfgdefine host{ use linux-server //引用主機linux-server的屬性資訊,linux-server主機在templates.cfg檔案中進行了定義。 host_name Nagios-Linux //主機名稱,自訂 alias Nagios-Linux //主機別名 address 172.16.10.20 //被監控的主機地址,這個地址可以是ip,也可以是網域名稱。 } define hostgroup{ //定義一個主機群組 hostgroup_name bsmart-servers //主機群組名稱,可以隨意指定。 alias bsmart servers //主機群組別名 members Nagios-Linux //主機群組成員,其中“Nagios-Linux”就是上面定義的主機。 }
localhost.cfg
用來監控本機 一般無需更改
services.cfg
此檔案預設也不存在,需要手動建立,主要用於定義監控的服務和主機資源
vim /usr/local/nagios/etc/objects/services.cfgdefine service{ use local-service //引用local-service服務的屬性值,local-service在templates.cfg檔案中進行了定義。 host_name Nagios-Linux //指定要監控哪個主機上的服務,“Nagios-Server”在hosts.cfg檔案中進行了定義。 service_description check-host-alive //對監控服務內容的描述,以供維護人員參考。 check_command check-host-alive //指定檢查的命令。 }
contacts.cfg
contacts.cfg是一個定義連絡人和連絡人群組的設定檔,注意書寫格式。
vim /usr/local/nagios/etc/objects/contacts.cfgdefine contact{ contact_name chen //連絡人的名稱,這個地方不要有空格 use generic-contact //引用generic-contact的屬性資訊,其中“generic-contact”在templates.cfg檔案中進行定義 alias Nagios Admin email 46****[email protected] //填入真實可用郵箱,也可不寫 }define contactgroup{ contactgroup_name np //連絡人群組的名稱,同樣不能空格 alias Technical Support //連絡人群組描述,言簡意賅,能懂什麼意思就行 members chen //連絡人群組成員,其中“chen”就是上面定義的連絡人,如果有多個連絡人則以逗號相隔 }
cgi.cfg
此檔案用來控制相關cgi指令碼,由於nagios的web監控介面驗證使用者為chen,所以只需在cgi.cfg檔案中添加此使用者的執行許可權
default_user_name=chenauthorized_for_system_information=nagiosadmin,chen authorized_for_configuration_information=nagiosadmin,chen authorized_for_system_commands=chenauthorized_for_all_services=nagiosadmin,chen authorized_for_all_hosts=nagiosadmin,chenauthorized_for_all_service_commands=nagiosadmin,chen authorized_for_all_host_commands=nagiosadmin,chen //設定檔末尾插入
nagios.cfg
將對象設定檔在Nagios.cfg檔案中進行引用
vim /usr/local/nagios/etc/nagios.cfgcfg_file=/usr/local/nagios/etc/objects/hosts.cfgcfg_file=/usr/local/nagios/etc/objects/services.cfg //合適的位置插入command_check_interval=10s //該變數用於設定nagios對外部命令檢測的時間間隔,插入即可。
驗證設定檔準確性
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
重啟服務
systemctl restart httpd。servicesystemctl restart nagios.service
訪問nagios網站
該網站設定了登陸驗證,所以在訪問網站是輸入之前設定的使用者名稱和密碼即可登陸網站。
http://172.16.10.34/nagios/
增加主機數修改hosts.cfg檔案
此檔案預設不存在,需要手動建立,hosts.cfg主要用來指定被監控的主機地址以及相關屬性資訊,注意書寫格式,不要有多餘的空格
vim /usr/local/nagios/etc/objects/hosts.cfgdefine host{ use linux-server //引用主機linux-server的屬性資訊,linux-server主機在templates.cfg檔案中進行了定義。 host_name Nagios-Linux //主機名稱,自訂 alias Nagios-Linux //主機別名 address 172.16.10.20 //被監控的主機地址,這個地址可以是ip,也可以是網域名稱。 } define host{ use linux-server host_name Nagios-Linu alias Nagios-Linu address 172.16.10.23 }define hostgroup{ //定義一個主機群組 hostgroup_name bsmart-servers //主機群組名稱,可以隨意指定。 alias bsmart servers //主機群組別名 members Nagios-Linux,Nagios-Linu //主機群組成員,其中“Nagios-Linux”就是上面定義的主機。 }
重啟服務
systemctl restart httpd。servicesystemctl restart nagios.service
監控三劍客之Nagios