簡介php
在企業網絡運維過程當中,管理員必須時刻關注服務器的運行狀態,如CPU、內存、磁盤空間使用狀況等。爲了可以及時的發現問題,儘可能減小故障的發生。當網絡中的設備,服務器等數量較多時,能夠部署一套監控系統來實時跟蹤服務器,咱們一般會藉助一些軟件來實現html
今天咱們就以Cacti套件爲例,介紹服務器集中監測體系的構建和使用python
Cacti是一款使用PHP語言開發的性能與流量監測工具,監測的對象可使linux或windows服務器也能夠是路由交換等網絡設備,主要是基於SNMP(Simple Network Management Protocol 簡單網絡管理協議)來蒐集CPU、佔用、內存使用、運行進程數以及磁盤使用空間、網卡流量等各類數據。說白了就是監控服務器狀態。mysql
實際上Cacti自己只是一個Web界面的管理套件,經過調用Net-SNMP工具來採集檢測數據 並結合RRDtool(Round Robin Database tool 輪詢數據庫工具)記錄數據並繪製圖片。如圖1所示linux
圖1web
Cacti提供了優秀的整合和協調能力,充分利用LAMP技術平臺、SNMP協議工具以及RRDtool數據引擎、不只配置簡單、直觀、並且支持插件和數據模板,使用時很是整潔,便於擴展。sql
實際上Cacti能夠從邏輯上分爲三個部分、第一部分:被檢測的對象,也就是客戶端。第二部分:檢測平臺,也就是服務器端。第三部分:管理平臺。Cacti採用了兩種結構實現功能,一種是C/S結構主要是實現服務器到客戶端監控另一種就是B/S主要完成對Cacti平臺的管理。從圖1咱們能夠看出,管理端是在Web上對Cacti進行管理。數據庫
簡單的整理一下Cacti的工做過程。vim
首先經過LAMP平臺部署Cacti監控工具,以後經過客戶端的web登陸Cacti進行多其餘客戶端的設置,能夠從圖1看到Cacti採集數據時必需要使用SNMP協議來鏈接客戶端進而可以採集數據嗎,也就是說客戶端必須支持SNMP協議。監控以後經過RRDtool來生成圖表,其實這個圖表是靜態的,通過頻繁的數據採集,咱們也能夠認爲是動態的,也就是說Cacti是基於某段時間的監控。windows
主機 |
操做系統 |
IP地址 |
主要軟件 |
centos1 |
CentOS 7 x86_64 |
192.168.92.130 |
Cacti-0.8.8b.tar.gz Rrdtool-1.4.8.tar.gz |
centos2 |
CentOS 7 x86_64 |
192.168.1.132 |
Mysql.5.5.tar.gz |
構建Cacti集中監測平臺的服務器端時,應提早安裝好LAMP或者是LNMP平臺,以及Net-SNMP和RRDtool等軟件支持,而後下載Cacti源碼包
前面已經學習過了如何部署源碼包的LAMP或LNMP平臺,爲了方便演示這裏直接以RPM包的LAMP平臺爲基礎搭建Cacti。所需安裝包以下所述。若還提示缺乏一些包請在以YUM的方式進行安裝便可。
# yum -y install httpd # yum -y install mariadb mariadb-server # yum -y install zlib freetype libjpeg fontconfig gd libxml2 libxml2-devel php-gd //安裝PHP須要的庫文件 # yum -y install php php-mysql # systemctl start httpd.service # chkconfig httpd on # systemctl start mariadb # chkconfig mariadb on # setenforce 0 # iptables -I INPUT -p tcp --dport 80 -j ACCEPT # iptables -I INPUT -p tcp --dport 3306 -j ACCEPT # mysqladmin -u root -p password '123.abc' Enter password: (此處直接回車便可)
服務啓動以後咱們能夠編寫測試頁來驗證LAMP平臺的協同工做
# cat /var/www/html/test.php <?php $link=mysql_connect('localhost','root','123.abc'); if ($link) echo "mysql connect is ok!!"; mysql_close(); phpinfo(); ?>
訪問頁面測試
通過測試LAMP平臺已經可以徹底的結合在一塊兒並運行。
以後在客戶端進行訪問
Cacti平臺經過SNMP協議採集檢測數據,這些工具由net-snmp-utils軟件包提供,所需安裝的軟件包以下所示。
# yum -y install net-snmp net-snmp-utils
下載rrdtool軟件到/root目錄下
經過YUM確認並安裝相關軟件包
# yum -y install cairo-devel zlib libxml2 libxml2-devel glib2 glib2-devel libpng libpng-devel freetype freetype-devel libart_lgpl pango pango-devel perl-CPAN
若是提示須要其餘軟件包,在另行安裝。
安裝rddtool源碼包
# tar -xvf rrdtool-1.4.5.tar.gz # cd rrdtool-1.4.5/ # ./configure --prefix=/usr/local && make && make install
下載到root目錄下
將下載的源碼包解壓到root下並移動到網頁文檔根目錄下更名爲cacti
# wget http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz # tar -xvf cacti-0.8.8b.tar.gz # mv cacti-0.8.8b /var/www/html/cacti
添加一個用戶,用來讀寫檢測數據的用戶帳戶(如cacti),並調整期目錄的屬主,以便正常讀取以及寫入數據
# useradd cacti # chown -R cacti:cacti /var/www/html/cacti/
先建立一個用於cacti檢測平臺的數據庫,並受權一個用戶cactiuser而後使用cacti源碼目錄下的cacti.sql腳本,導入預設的各類數據表
# mysql -uroot -p123.abc Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 6 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database cacti default character set utf8; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant all on cacti.* to cactiuser@'localhost' identified by '123.abc'; Query OK, 0 rows affected (0.11 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.16 sec)
導入
# cd /var/www/html/cacti/
# mysql -u cactiuser -p cacti < cacti.sql
Enter password: //輸入密碼
[root@localhost cacti]# mysql -uroot -p123.abc Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> use cacti; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [cacti]> show tables; //驗證是否導入表到cacti庫中
+---------------------------+ | Tables_in_cacti | +---------------------------+ | cdef | | cdef_items | | colors | | data_input | | data_input_data | | data_input_fields | | data_local | | data_template | | data_template_data | | data_template_data_rra | | data_template_rrd | | graph_local | | graph_template_input | | graph_template_input_defs | | graph_templates | | graph_templates_gprint | | graph_templates_graph | | graph_templates_item | | graph_tree | | graph_tree_items | | host | | host_graph | | host_snmp_cache | | host_snmp_query | | host_template | | host_template_graph | | host_template_snmp_query | | plugin_config | | plugin_db_changes | | plugin_hooks | | plugin_realms | | poller | | poller_command | | poller_item | | poller_output | | poller_reindex | | poller_time | | rra | | rra_cf | | settings | | settings_graphs | | settings_tree | | snmp_query | | snmp_query_graph | | snmp_query_graph_rrd | | snmp_query_graph_rrd_sv | | snmp_query_graph_sv | | user_auth | | user_auth_perms | | user_auth_realm | | user_log | | version | +---------------------------+ 52 rows in set (0.00 sec)
上訴操做中,建立Cacti庫時,指定默認的編碼字符集爲utf8,便於中文支持,導入預設庫時最好是使用cactiuser導入。最後驗證一下是否導入。
cacti的配置文件位於源碼目錄下的include/目錄下,名稱爲config.php,要使Cacti系統可以正常訪問並使用數據庫,必須修改config.php文件,卻保數據庫鏈接參數正確。
# vim include/config.php $database_type = "mysql"; //指定鏈接的類型 $database_default = "cacti"; //鏈接的庫 $database_hostname = "localhost"; //登陸源 $database_username = "cactiuser"; //用戶名 $database_password = "123.abc"; //用戶密碼 $database_port = "3306"; //鏈接的端口 $database_ssl = false; //不啓用ssl $url_path = "/"; //指定cacti的根目錄,這個目錄是cacti的文件目錄下,咱們後面還須要修改httpd的主配置文件。
修改httpd的主配置文件,設置好網頁文檔根目錄、自動索引頁
# vim /etc/httpd/conf/httpd.conf DocumentRoot "/var/www/html/cacti" <Directory "/var/www/html/cacti"> Options Indexes none AllowOverride None Order allow,deny Allow from all </Directory> DirectoryIndex index.php index.html index.html.var AddDefaultCharset UTF-8
重啓服務
# systemctl restart httpd
在遊覽器中訪問Cacti服務器的Web服務,如http://192.168.1.1,除此訪問時會自動跳轉至安裝指南界面如圖3所示
以上就是安裝界面,內容是一些歡迎信息,直接點擊下一步繼續
選擇新的安裝,點擊Next繼續
以上信息必須所有都爲綠色,若是出現紅色,請檢查相關步驟。點擊Finish完成安裝
只要看到了這個登陸界面,那麼咱們今天的Cacti就部署完成了,默認的用戶名和密碼都是admin,首次登陸以後須要修改密碼。我的建議先不要進行登陸,先進行一下操做,以後在進行登陸。
不管是路由器、交換機、仍是linux或windows服務器,只要正確支持SNMP協議,並容許Client服務器採集數據,就可以對其進行監測。下面僅介紹在linux服務器中啓用SNMP支持並設置共同體名的簡單方法
ps:共同體名,值的是一種驗證機制,全部的client都必須使用同一個共同體名,就像咱們以前學習的hsrp的組同樣,只有組號相同才能是一個組的,這裏也是如此,只有共同體名相同的時候,Cacti才能經過這個共同體名對client進行監控。
須要安裝net-snmp、lm_sensors軟件包,而後經過修改其配置文件/etc/snmp/snmpd.conf,並啓動snmpd服務,並創建規則,默認監聽UDP的161號端口。
# yum -y install net-snmp lm_sensors # vim /etc/snmp/snmpd.conf com2sec notConfigUser 192.168.90.130 public access notConfigGroup "" any noauth exact all none none view all included .1 80
192.168.92.130 指的是Cacti的服務器IP(默認是default),表示容許其查詢本機數據,public指的就是共同體名,用來識別及驗證
all表示開放全部的SNMP查詢權限(默認是 SystemView)
去掉註釋以後,以便支持各類查詢。
# systemctl start snmpd # iptables -I INPUT -p udp --dport 161 -j ACCEPT
配置好Cacti的主控端、被控端以後,就能夠設置集中監測任務了。下面講學習在Cacti系統的Web控制檯的基本操做,以及如何經過添加插件來擴展集中監測功能。
在遊覽器中訪問Cacti系統,如http://192.168.1.1,輸入用戶和密碼,便可登陸到Web控制檯界面
未完待續。。。