目錄php
經常使用監控軟件有:cacti, nagios, zabbix, ganglia,centreon,prometheusjava
Cacti 是一套基於 PHP,MySQL,SNMP 及 RRDTool 開發的網絡流量監測圖形分析工具。 簡單的說 Cacti 就是一個 PHP 程序。它經過使用 SNMP 協議獲取遠端網絡設備和相關信息,並經過 RRDTOOL 工 具繪圖,經過 PHP 程序展示出來。咱們使用它能夠展示出監控對象一段時間內的狀態或者 性能趨勢圖。mysql
Nagios 是一款開源的免費網絡監視工具,能有效監控 Windows、Linux 和 Unix 的主機狀 態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第 一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。ios
zabbix 是一個基於 WEB 界面的提供分佈式系統監視以及網絡監視功能的企業級的開源 解決方案。zabbix 能監視各類網絡參數,保證服務器系統的安全運營;並提供柔軟的通知機 制以讓系統管理員快速定位/解決存在的各類問題。
zabbix 由 2 部分構成,zabbix server 與可選組件 zabbix agent。zabbix server 能夠經過 SNMP, zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能, 它能夠運行在 Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X 等平臺上。web
Ganglia 是一款爲 HPC(高性能計算)集羣而設計的可擴展的分佈式監控系統,它能夠監視 和顯示集羣中的節點的各類狀態信息,它由運行在各個節點上的 gmond 守護進程來採集 CPU 、內存、硬盤利用率、I/O 負載、網絡流量狀況等方面的數據,而後彙總到 gmetad 守 護進程下,使用 rrdtool 存儲數據,最後將歷史數據以曲線方式經過 PHP 頁面呈現。 Ganglia 監控系統有三部分組成,分別是 gmond、gmetad、webfrontend。sql
Centreon 是一款功能強大的分佈式 IT 監控系統,它經過第三方組件能夠實現對網絡、 操做系統和應用程序的監控:首先,它是開源的,咱們能夠無償使用它;其次,它的底層採用 nagios 做爲監控軟件,同時 nagios 經過 ndoutil 模塊將監控到的數據定時寫入數據庫中, 而 Centreon 實時從數據庫讀取該數據並經過 Web 界面展示監控數據;,最後,咱們能夠經過 Centreon 管理和配置 nagios,或者說 Centreon 就是 nagios 的一個管理配置工具,經過Centreon 提供的 Web 配置界面,能夠輕鬆完成 nagios 的各類繁瑣配置。docker
Prometheus是一套開源的監控&報警&時間序列數據庫的組合,起始是由SoundCloud公司開發的。隨着發展,愈來愈多公司和組織接受採用Prometheus,社區也十分活躍,他們便將它獨立成開源項目,而且有公司來運做。google SRE的書內也曾提到跟他們BorgMon監控系統類似的實現是Prometheus。如今最多見的Kubernetes容器管理系統中,一般會搭配Prometheus進行監控。數據庫
Prometheus 的優勢:apache
Prometheus 的特性:vim
一、中小企業監控平臺選擇 Zabbix
Zabbix 是一款綜合了數據收集、數據展現、數據提取、監控報警配置、用戶展現等方面 的一款綜合運維監控平臺。
Zabbix 學習入門較快,功能也很強大,是一個能夠迅速用起來的監控軟件,可以知足中 小企業(服務器數 500 臺一下)的監控報警需求,所以是中小型企業運維監控的首選平臺。
可是,Zabbix 當監控服務器數量較多時,會產生不少問題,如監控數據不及時、報警超 時等等問題,這是由於 Zabbix 對服務器性能要求較高,當監控的服務器數量超過 500 臺後, 監控性能急劇降低,此時須要進行分佈式監控部署,而且須要提高監控服務器的性能。
安全性方面,Zabbix 客戶端的 agent 若是故障,收集到的數據將丟失,同時 Zabbix Server也是單點,可能還須要對 Zabbix Server 作 HA 保證數據的安全和監控的高可用。
二、互聯網大企業監控平臺選擇 Ganglia+Centreon
開源監控軟件組合應用+二次開發
是大型互聯網企業構建監控平臺的一個基本策略,
對於有海量服務器、多業務系統的複雜監控,沒有哪一個軟件能獨立完成企業的全部監控需求, 所以,多種開源監控軟件組合應用+二次開發纔是監控平臺的最終方向。
推薦 ganglia 是由於 ganglia 客戶端軟件對服務資源佔用很是低,而且擴展插件很是多,
監控擴展也很是容易,同時結合專業的 web 監控平臺 centreon,能夠實如今數據收集、數 據展現、數據提取、監控報警配置、用戶展現等方面的完美配合,所以這裏對海量服務器進
行監控
Zabbix是一個基於WEB界面的分佈式開源監控系統,主要有2部分構成,Zabbix server與Zabbix agent,同時也支持Zabbix proxy。zabbix能監視各類網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各類問題。
zabbix server能夠單獨監視遠程服務器的服務狀態;同時也能夠與zabbix agent配合,能夠輪詢zabbix agent主動接收監視數據(agent方式),同時還可被動接收zabbix agent發送的數據(trapping方式)。
zabbix agent須要安裝在被監視的目標服務器上,它主要完成對硬件信息或與操做系統有關的內存,CPU等信息的收集。
另外zabbix server還支持SNMP (v1,v2),能夠與SNMP軟件(例如:net-snmp)等配合使用。
Zabbix的底層採集程序是用C語言編寫的Server和Agent,而用戶界面是經過PHP編寫WEB,採用Mysql(Pgsql)數據庫來存儲數據。整個Zabbix其實就是一個框架,其中內置了一些針對各種OS的系統參數採集命令,能夠直接調用,而其它的自定義監控參數,則能夠經過本身來寫一些快捷的Shell命令經過管道傳遞,或經過各類腳本甚至程序來傳遞。Zabbix只管把最後的返回值經過agent拿到,存儲統計,繪圖,根據定義的閥值進行報警等。
zabbix的主要特色:
zabbix主要功能:
zabbix監控的內容
zabbix程序的組件:
zabbix邏輯組件:
zabbix配置文件有兩種:
服務器端配置文件zabbix_server.conf經常使用配置參數:
參數 | 做用 |
---|---|
LogFile | 設置服務端日誌文件存放路徑 |
ListenIP | 設置服務端監聽IP |
ListenPort | 設置服務端監聽的端口號 |
PidFile | 設置服務端進程號文件存放路徑 |
DBHost | 指定zabbix的數據庫服務器IP |
DBName | 指定zabbix使用的數據庫庫名 |
DBUser | 指定zabbix數據庫登陸用戶 |
DBPassword | 指定zabbix數據庫登陸密碼 |
DBPort | 指定zabbix數據庫端口號 |
User | 設置zabbix以什麼用戶的身份運行 |
AlertScriptsPath | 設置告警腳本存放路徑 |
ExternalScripts | 外部腳本存放路徑 |
客戶端配置文件zabbix_agentd.conf經常使用配置參數:
參數 | 做用 |
---|---|
Server | 指定zabbix服務器的IP或域名 |
ServerActive | 指定zabbix服務器的IP或域名 |
Hostname | 指定本機的主機名,此項必須與web界面配置項一致 |
UnsafeUserParameters | 是否啓用自定義監控項,可選值爲{1 |
UserParameter | 指定自定義監控腳本參數 |
LogFile | 設置客戶端日誌文件存放路徑 |
建立主機組—>建立主機並加入主機組——>建立監控項——>告警觸發器配置——>配置警告動做
環境說明:由於zabbix是用php語言開發的,因此必須先部署lamp架構,使其可以支持運行php網頁
環境 | IP |
---|---|
服務器端 | 192.168.43.166 |
客戶端 | 192.168.43.247 |
//安裝依賴包 [root@localhost ~]# yum -y install net-snmp-devel libevent-devel //下載源碼包(速度很慢) [root@localhost ~]# cd /usr/src/ [root@localhost src]# wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz //解壓 [root@localhost src]# tar xf zabbix-4.0.3.tar.gz //建立zabbix用戶和組 [root@localhost ~]# groupadd -r zabbix [root@localhost ~]# useradd -r -g zabbix -M -s /sbin/nologin zabbix //配置zabbix數據庫 [root@localhost mysql]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.7.22-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec) mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '123456'; Query OK, 0 rows affected, 2 warnings (0.29 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> quit Bye [root@localhost ~]# cd /usr/src/zabbix-4.0.3/database/mysql/ [root@localhost mysql]# ls data.sql images.sql Makefile.am Makefile.in schema.sql //導入數據庫文件到zabbix [root@localhost mysql]# mysql zabbix < schema.sql [root@localhost mysql]# mysql zabbix < images.sql [root@localhost mysql]# mysql zabbix < data.sql //編譯安裝zabbix [root@localhost ~]# cd /usr/src/zabbix-4.0.3 [root@localhost zabbix-4.0.3]# ./configure --enable-server \ --enable-agent \ --with-mysql \ --with-net-snmp \ --with-libcurl \ --with-libxml2 [root@localhost zabbix-4.0.3]# make install
//配置文件路徑 [root@localhost zabbix-4.0.3]# ls /usr/local/etc/ zabbix_agentd.conf zabbix_agentd.conf.d zabbix_server.conf zabbix_server.conf.d //修改配置文件(經常使用參數),保持默認不變只設置數據庫信息 vim /usr/local/etc/zabbix_server.conf DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=123456 //啓動zabbix_server和zabbix_agentd [root@localhost etc]# ln -s /usr/local/mysql/lib/* /usr/lib/ (mysql庫文件若是沒作軟鏈接會報錯) [root@localhost etc]# ldconfig -v [root@localhost etc]# zabbix_agentd [root@localhost etc]# zabbix_server [root@localhost etc]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:111 *:* LISTEN 0 5 192.168.122.1:53 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 127.0.0.1:6010 *:* LISTEN 0 128 *:10050 *:* LISTEN 0 80 :::3306 :::* LISTEN 0 128 :::111 :::* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 ::1:631 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 ::1:6010 :::*
/安裝依賴包 [root@localhost ~]# yum -y install net-snmp-devel libevent-devel //下載源碼包(速度很慢) [root@localhost ~]# cd /usr/src/ [root@localhost src]# wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz //解壓 [root@localhost src]# tar xf zabbix-4.0.3.tar.gz //編譯安裝zabbix [root@localhost ~]# cd /usr/src/zabbix-4.0.3 [root@localhost zabbix-4.0.3]# ./configure --enable-agent //修改配置文件 [root@localhost etc]# vim zabbix_agentd.conf Server = 192.168.43.166 ServerActive = 192.168.43.166 Hostname = client247 UnsafeUserParameters = 1 UserParameter = 1 //啓動zabbix_agent服務 [root@localhost etc]# zabbix_agentd
//修改php配置文件並重啓php-fpm [root@localhost ~]# sed -ri 's/(post_max_size =).*/\1 16M/g' /etc/php.ini [root@localhost ~]# sed -ri 's/(max_execution_time =).*/\1 300/g' /etc/php.ini [root@localhost ~]# sed -ri 's/(max_input_time =).*/\1 300/g' /etc/php.ini [root@localhost ~]# sed -i '/;date.timezone/a date.timezone = Asia/Shanghai' /etc/php.ini [root@localhost ~]# service php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done //準備zabbix的php頁面 [root@localhost ~]# cd /usr/src/zabbix-4.0.3 [root@localhost zabbix-4.0.3]# ls aclocal.m4 ChangeLog config.log configure.ac frontends m4 man README AUTHORS compile config.status COPYING include Makefile misc sass bin conf config.sub database INSTALL Makefile.am missing src build config.guess configure depcomp install-sh Makefile.in NEWS upgrades [root@localhost zabbix-4.0.3]# mkdir /usr/local/apache/htdocs/zabbix [root@localhost zabbix-4.0.3]# cp -a frontends/php/* /usr/local/apache/htdocs/zabbix/ [root@localhost zabbix-4.0.3]# chown -R apache.apache /usr/local/apache/htdocs //配置apache虛擬主機 [root@localhost ~]# vim /etc/httpd24/httpd.conf //取消註釋,啓用proxy模塊 #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_http_module modules/mod_proxy_http.so //在配置文件的末尾加以下內容 <VirtualHost *:80> DocumentRoot "/usr/local/apache/htdocs/zabbix" ServerName www.wang.com ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/zabbix/$1 <Directory "/usr/local/apache/htdocs/zabbix"> Options none AllowOverride none Require all granted </Directory> </VirtualHost> //設置zabbix/conf目錄的權限,讓zabbix有權限生成配置文件zabbix.conf.php [root@localhost ~]# chmod 777 /usr/local/apache/htdocs/zabbix/conf [root@localhost ~]# ll -d /usr/local/apache/htdocs/zabbix/conf drwxrwxrwx 2 apache apache 81 Aug 17 13:03 /usr/local/apache/htdocs/zabbix/conf //重啓Apache [root@localhost zabbix-4.0.3]# service httpd stop [root@localhost zabbix-4.0.3]# service httpd start [root@localhost zabbix-4.0.3]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:111 *:* LISTEN 0 5 192.168.122.1:53 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 127.0.0.1:6010 *:* LISTEN 0 128 *:10050 *:* LISTEN 0 128 127.0.0.1:9000 *:* LISTEN 0 80 :::3306 :::* LISTEN 0 128 :::111 :::* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 ::1:631 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 ::1:6010 :::*
zabbix初次默認登陸用戶名和密碼:
用戶名:Admin
密碼: zabbix
若是出現中文亂碼 解決中文亂碼方法: 上傳本地字體 找到本地C:\Windows\Fonts\STXINWEI.TTF(華文新魏)上傳到/usr/local/apache/htdocs/zabbix/fonts/ 將上傳字體更名成默認字體並覆蓋,zabbix_server命令刷新便可