2011年1月6日 星期四

Zabbix - 網路監控

前言

zabbix2部分構成,zabbix server與可選元件zabbix agent
zabbix server可以通過SNMPzabbix agentping,埠監視等方法提供對遠端伺服器/網路狀態的監視,資料收集等功能,它可以執行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台之上。
zabbix agent需要安裝在被監視的目標伺服器上,它主要完成對硬體資訊或與作業系統有關的記憶體,CPU等資訊的收集。 zabbix agent可以執行在Linux ,Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows 2000/2003/XP/Vista等系統之上。

zabbix server可以單獨監視遠端伺服器的服務狀態;同時也可以與zabbix agent配合,可以輪詢zabbix agent主動接收監視資料polling方式),同時還可被動接收zabbix agent發送的資料trapping方式)
另外zabbix server還支援SNMP (v1,v2),可以與SNMP軟體(例如:net-snmp)等配合使用。


zabbix的主要特點
- 安裝與配置簡單,學習成本低
- 支援多語言(包括中文)
- OpenSource
- 自動發現伺服器與網路設備
- 分散式監視以及WEB集中管理功能
- 可以無agent監視
- 使用者安全認證和soft的授權方式
- 通過WEB介面設置或查看監視結果
- Email,SMS等通知功能

Zabbix主要功能
- CPU負荷
- 記憶體使用
- 磁片使用
- 網路狀況
- 埠監視
- 日誌監視



1.     架構

2. 確認所需套件
zlib-devel.*  openssl-devel.*  libxml2-devel.*  flex 
bison  gcc  automake  autoconf  snmp  rrdtool 
php-gd  php-mysql  php-pear  phpMyAdmin  apache2  mysql  php

例如:  # rpm -qa |grep zlib-devel
#zlib-devel-1.2.3-18.fc9.i386
以此類推查詢,看系統是否缺少某一套件

3. 安裝套件
Ex: 1. 原始檔安裝 libxml package
 下載網址 ftp://xmlsoft.org/ 

# tar zxvf libxml2-2.7.2.tar.gz
# cd libxml2-2.7.2
# ./configure
# make && make install

  2. yum安裝 libxml2  package
# yum install –y  libxml2-devel.*

3. rpm安裝 libxml2  package
    網址: http://www.rpmfind.net/linux/rpm2html
 # rpm –ivh libxml2-2.7.2-1.fc10.i386.rpm

4. Apache2

4.1 解壓縮/編譯安裝  Apache2
[root@test darwin]# tar zxvf httpd-2.2.15.tar.gz
[root@test darwin]# cd httpd-2.2.15
[root@test httpd-2.2.15]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=static --enable-mods-shared=all --enable-modules=most --with-mpm=worker
[root@test httpd-2.2.15]  make && make install

4.2 編輯httpd.conf檔案

# vi /usr/local/apache2/conf/httpd.conf User apache  
ßApache 使用者
Group apache 
ß
Apache 群組
ServerAdmin darwin@catchlink.com  ß管理E-mail位址
ServerName  192.168.1.100:80
ß
伺服器位址:80

<IfModule dir_module>
    DirectoryIndex index.html index.php index.php3 index.htm
</IfModule>

4.3 啟動apache2
[root@test httpd-2.2.15]# /usr/local/apache2/bin/apachectl start  ß啟動Apache2

[root@test httpd-2.2.15]# ps -ef |grep httpd
root      4734     1  0 10:43 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
apache    4735  4734  0 10:43 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
apache    4736  4734  0 10:43 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
apache    4739  4734  0 10:43 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
apache    4743  4734  0 10:43 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
apache    4822  4734  0 10:43 ?        00:00:00 /usr/local/apache2/bin/httpd -k start

測試網頁 http://webserver IP/index.html
出現 It Work!代表成功了
[root@test httpd-2.2.15]# /usr/local/apache2/bin/apachectl stop   ßApach2停止

4.4 調整Apache效能
4.4.1 編輯httpd-default檔案
[root@test httpd-2.2.15]# vi /usr/local/apache2/conf/extra/httpd-default.conf
內容如下
Timeout 60
KeepAlive On
MaxKeepAliveRequests 800
KeepAliveTimeout 5
HostnameLookups Off

4.4.2 編輯httpd-mpm檔案
[root@test httpd-2.2.15]# vi /usr/local/apache2/conf/extra/httpd-mpm.conf
內容如下
<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          800
    MinSpareThreads      25
    MaxSpareThreads      100
    ThreadsPerChild      50
    MaxRequestsPerChild  100
</IfModule>

4.5 修改httpd.conf檔案
[root@test httpd-2.2.15]#vi /usr/local/apache2/conf/httpd.conf
httpd-mpm.confhttpd-default註解取消 , 沒有此2行的就自行加入
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-default.conf

4.6 自動啟動和關閉Apache Server
[root@test httpd-2.2.15]# ln  -s /usr/local/apache2/bin/apachectl  /etc/rc3.d/S85httpd
[root@test httpd-2.2.15]# ln  -s /usr/local/apache2/bin/apachectl  /etc/rc0.d/K85httpd
[root@test httpd-2.2.15]# ln  -s /usr/local/apache2/bin/apachectl  /etc/rc1.d/K85httpd[root@test httpd-2.2.15]# ln  -s /usr/local/apache2/bin/apachectl  /etc/rc2.d/K85httpd
5. MySQL5

下載網址 http://dev.mysql.com/downloads/

5.1 新增Mysql 使用者群組
[root@test darwin]# groupadd mysql
[root@test darwin]# useradd –g mysql mysql

5.2 解壓縮 Mysql 5.1.45
[root@test ]# tar zxvf mysql-5.1.45.tar.gz
[root@test darwin]# cd mysql-5.1.45

5.3 編譯/安裝 Mysql 5.1.45
 [root@test mysql-5.1.45]# ./configure --prefix=/usr/local/mysql5 --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innobase,myisammrg
[root@test mysql-5.1.45]# make && make install

5.4 資料庫安裝/啟用
[root@test mysql-5.1.45]# chown -R mysql:mysql /usr/local/mysql5
[root@test mysql-5.1.45] # /usr/local/mysql5/bin/mysql_install_db  --user=mysql
[root@test mysql-5.1.45] # cp /usr/local/mysq5/share/mysql/mysql.server /etc/init.d/mysqld
[root@test mysql-5.1.45]# /usr/local/mysql5/bin/mysqld_safe  --user= mysql  &
[root@test mysql-5.1.45]# export PATH=$PATH:/usr/local/mysql5/bin
[root@test mysql-5.1.45]# export LD_LIBRARY_PATH=/usr/local/mysql5/lib:/lib:/usr/local/lib:/var/lib

5.5 查看Mysql
[root@test darwin]# netstat -na |grep -w 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

5.6 設定 Mysql root user密碼
[root@test darwin]# mysqladmin -u root password 'gh8Q6prt'
[root@test darwin]# mysqladmin -u root -h `hostname` password 'gh8Q6prt' -p
Enter password:  ß輸入DB 密碼
5.7 測試 Mysql Server
[root@test darwin]# mysqladmin version -p
Enter password:
mysqladmin  Ver 8.42 Distrib 5.1.45, for pc-linux-gnu on i686
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Server version          5.1.45-log
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /tmp/mysql.sock
Uptime:                 4 min 53 sec
Threads: 1  Questions: 11  Slow queries: 0  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second avg: 0.37
如出現上面的有關mysql5相關資訊 , 則表示安裝成功!
5.8 查看Mysql 內所有資料庫
[root@test darwin]# mysqlshow -p
Enter password:
+---------------------------+
|     Databases     |
+--------------------+
| information_schema |
| mysql             |
| test               |

5.9 自動啟動和關閉MySQL Server
[root@test darwin] #chkconfig --add mysqld
[root@test darwin] #service mysqld restart
[root@test darwin] # chkconfig mysqld on



6. PHP5

下載網址 http://www.php.net/
6.1 解壓縮
[root@test darwin]# tar jxvf php-5.2.13.tar.bz2
[root@test darwin]# cd php-5.2.13

6.2 編譯及安裝php
[root@test php-5.2.13]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql5 --with-gd --with-jpeg-dir --with-png-dir  --with-zlib --with-freetype-dir  --with-libxml-dir  --with-curl=/usr/bin/curl --with-snmp  --with-openssl  --with-iconv  --enable-bcmath --enable-sockets  --enable-mbstring  --with-config-file-path= /etc

[root@test php-5.2.13]# make && make install
[root@test php-5.2.13]# libtool --finish /home/darwin/php-5.2.13/libs
[root@test php-5.2.13]# ldconfig

php.ini-development 設定檔copy/etc目錄內
[root@test php-5.2.13]# cp php.ini-dist /etc/php.ini

6.3 檢查php 模組
編輯Apache 設定檔 , Apache可以看得懂PHP Script 並使PHP模組去解析它們
[root@test php-5.2.13]# vi /usr/local/apache2/conf/httpd.conf
檢查所下, 如沒有自行加入
DirectoryIndex index.html index.php index.php3 index.phtml
LoadModule php5_module        modules/libphp5.so
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .phtml

6.4 重啟動 Apache2
[root@test ]# usr/local/apache2/bin/apachectl restart ß重新啟動Apache2
6.5 測試php5 module的方法
[root@test php-5.2.13]# vi /usr/local/apache2/htdocs/info.php
內容如下
<?
phpinfo();
?>

測試網頁 http://webserver IP/info.php

7. PHPMyAdmin – (選項) - 可有可無


7.1 解壓縮phpMyAdmin
[root@test darwin]# tar zxvf phpMyAdmin-3.3.2-all-languages.tar.gz
[root@test darwin]# mv phpMyAdmin-3.3.2-all-languages /usr/local/apache2/htdocs/phpMyAdmin

打開瀏覽器
輸入mysql 資料庫的帳號及密碼即可.



8. zabbix1.8


8.1 建立zabbix使用者
[root@test darwin]# groupadd zabbix
[root@test darwin]# useradd -g zabbix -s /sbin/nologin zabbix

8.2 解壓縮/安裝
[root@test darwin]# tar zxvf zabbix-1.8.2.tar.gz
[root@test darwin]# cd zabbix-1.8.2

[root@test zabbix-1.8.2]# ./configure --prefix=/usr/local/zabbix --with-mysql=/usr/local/mysql5/bin/mysql_config  --with-net-snmp  --with-curl=/usr/bin/curl --enable-server --enable-agent
[root@test zabbix-1.8.2]# make install

8.3 導入資料庫
[root@test zabbix-1.8.2]# /usr/local/mysql5/bin/mysql -uroot -p
Enter password:  ß輸入mysql 密碼
mysql> create database zabbix;
Query OK, 1 row affected (0.05 sec)
grant all on zabbix.* to zabbix@localhost identified by 'zabbix';

mysql> quit;

[root@test zabbix-1.8.2]# cd create/schema/
[root@test schema]# cat mysql.sql |/usr/local/mysql5/bin/mysql -uroot -p zabbix
Enter password:  ß輸入mysql 密碼
[root@test schema]# cd ../data/
[root@test data]# cat data.sql |/usr/local/mysql5/bin/mysql -uroot -p zabbix
Enter password:  ß輸入mysql 密碼
[root@test data]# cat images_mysql.sql |/usr/local/mysql5/bin/mysql -uroot -p zabbix
Enter password:  ß輸入mysql 密碼

8.4 複製zabbix目錄
[[root@test zabbix-1.8.2]# mkdir /etc/zabbix
[root@test zabbix-1.8.2]#cp misc/conf/* /etc/zabbix/
[root@test zabbix-1.8.2]# mkdir /usr/local/apache2/htdocs/zabbix
[root@test zabbix-1.8.2]# cp -Rpf frontends/php/* /usr/local/apache2/htdocs/zabbix/
[root@test zabbix-1.8.2]# chown -R zabbix.zabbix /usr/local/apache2/htdocs/zabbix/


8.5 檢查zabbix 設定
[root@test zabbix-1.8.2]# vi /etc/services 
內容如下所示
zabbix-agent 10050/tcp Zabbix Agent  
zabbix-agent 10050/udp Zabbix Agent  
zabbix-trapper 10051/tcp Zabbix Trapper  
zabbix-trapper 10051/udp Zabbix Trapper  
 
[root@test zabbix-1.8.2]# vi /etc/zabbix/zabbix_server.conf
內容如下所示
ListenPort=10051 
DBHost=localhost  
DBName=zabbix  
DBUser=root  
DBPassword=   ßDB密碼
DBSocket=/tmp/mysql.sock  
 
8.6 修改php.ini
[root@test zabbix-1.8.2]# vi /etc/php.ini
max_execution_time = 300
max_input_time = 600
date.timezone = Asia/Taipei
post_max_ size = 32M

8.7 複製 Daemon啟動檔
[root@test zabbix-1.8.2]# cp -p misc/init.d/redhat/zabbix_server_ctl /etc/init.d/zabbix-server
[root@test zabbix-1.8.2]# cp -p misc/init.d/redhat/zabbix_agentd_ctl /etc/init.d/zabbix-agentd

8.8 編輯zabbix-server 啟動檔
[root@test zabbix-1.8.2]# vi /etc/init.d/zabbix-server
內容如下
# base zabbix dir  
BASEDIR=/usr/local/zabbix    
ßzabbix server程式所在位置

# PID file  
PIDFILE=/var/tmp/zabbix_server.pid    
ßserver pid 暫存目錄
# binary file  
ZABBIX_SUCKERD=$BASEDIR/sbin/zabbix_server 
ßzabbix server 程式所在位置
FpingLocation=/usr/sbin/fping  ß先決條件,系統要有裝


8.9 編輯zabbix-agentd 啟動檔
[root@test zabbix-1.8.2]# vi /etc/init.d/zabbix-agentd
# base zabbix dir
BASEDIR=/usr/local/zabbix 
ßzabbix agentd程式所在位置

# pid file (as of 1.0 beta 10)
PIDFILE=/var/tmp/zabbix_agentd.pid 
ßagentd pid 暫存目錄
# binary file
ZABBIX_AGENTD=$BASEDIR/sbin/zabbix_agentd 
ßzabbix agentd程式所在位置

[root@test data]# chown -R zabbix.zabbix /usr/local/zabbix
[root@test data]# chown -R zabbix.zabbix /etc/zabbix

8.10 啟動zabbix_server
[root@test zabbix-1.8.2]# /etc/init.d/zabbix-server start

8.11 啟動zabbix_agentd
[root@test zabbix-1.8.2]# /etc/init.d/zabbix-agentd start

8.12 開機啟動zabbix server zabbix agentd

[root@test zabbix-1.8.2]# vi /etc/rc.local
/etc/init.d/zabbix-server start
/etc/init.d/zabbix-agentd start

檢查是否有啟用
[root@test zabbix]# netstat -nalpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address        Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:10050       0.0.0.0:*                   LISTEN     12906/zabbix_agentd
tcp        0      0 0.0.0.0:10051       0.0.0.0:*                   LISTEN     12833/zabbix_server

8.13 打開瀏覽器








8.14 登入畫面
                                                                           預設帳號/密碼 admin/zabbix

8.14.1 Add user





8.14.2 Email settings


8.14.3 Add agent-enabled host
如果要新一台linux主機 windows主機至zabbix server監控, 可以使用SNMPAgent方式來監控.本例使用Agent, 也就是在被監控主機上安裝Agent Daemon,使zabbix server zabbix agent 相互溝通.

[root@dns darwin]# tar zxvf zabbix_agents_1.8.2.linux2_6.i386.tar.gz
[root@dns darwin]# cd sbin/
[root@dns sbin]# cp * /usr/local/sbin/
[root@dns sbin]# /usr/local/sbin/zabbix_agentd

8.14.3.1 編輯zabbix_aganetd.conf檔
[root@dns bin]# vi /etc/zabbix_agentd.conf
內容如下
LogFile=/tmp/zabbix_agentd.log
DebugLevel=3
Server=192.168.1.100 ß允許zabbix serverpolling
ListenPort=10050  ß本機Listen Port
Hostname=Linux Server
ListenIP=192.168.1.254   ß本機Listen IP 位址
ServerPort=10051       ßzabbix server 所使用的Port

: 以上zabbix_agentd.conf可以自行產生或從zabbix-1.8.2.tar.gz檔案裡
解壓縮開來, zabbix-1.8.2/misc/conf/zabbix_agentd.conf 拿來修改即可

8.14.3.2 啟用zabbix_agentd
[root@dns bin]# /usr/local/sbin/zabbix_agentd -c /etc/zabbix_agentd.conf

[root@dns sbin]# netstat -na |grep -w 10050
tcp        0      0 0.0.0.0:10050            0.0.0.0:*              LISTEN

ok啟用了Agent

8.14.3.3 納入至Zabbix Server

選擇Create Host

輸入主機名、 所要歸納的群組、 IP 位址, agent Port(10050) 以及使用template(Template_Linux),確定後按Save即可新增.


8.14.4 Add agent-enabled host for Windows system
作法如同上面新增linux agent一樣, 只是我們要將下載回來的agent檔解壓至c:\d:\依個人習慣,我是將它放在D:\zabbix_agentd 目錄內

先建立zabbix_agentd.win.conf檔案,可參考上面的設定,只是現在是windows系統
如下所示
DebugLevel=3
LogFile=c:/zabbix_agentd.log
Server=192.168.1.100
Hostname=Windows Host
ListenPort=10050
ListenIP=192.168.1.3
ServerPort=10051

8.14.4.1 執行zabbix agent
ok啟用了Agent

8.14.4.2 納入至Zabbix Server(作法如上linux agent 所示)


以下連結資源為官方網的設定手冊及它的相關screenshot, 在此就不展示, 有興趣的可以研究看看, Zabbix主要在監控功能, 並搭配rrdtool繪圖工具, 將之圖形化, 以server/ agent方式, 在被監控端安裝agent , 並整合進監控端server, 類似另一套很有名的監控軟體 nagios 只是nagios沒有rrdtool繪圖功能,除非自己手動Plugin rrdtool進來,否則nagios內建是沒有的, 純監控Node而已, 其實這2套都可玩玩看, 蠻有趣的!!

9. 參考資源
Online Documentation

Screenshots

沒有留言:

張貼留言