1. 程式人生 > >Zabbix監控平臺(一)搭建部署與概述

Zabbix監控平臺(一)搭建部署與概述

一、Zabbix架構

zabbix 是一個基於 WEB 介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。zabbix 能監視各種網路引數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。

Zabbix 的執行架構如下圖所示:

1.1 元件

zabbix 由以下幾個元件部分構成:

1) Zabbix Server:

負責接收 agent 傳送的報告資訊的核心元件,所有配置,統計資料及操作資料均由其組織進行;

2) Database Storage:

專用於儲存所有配置資訊,以及由 zabbix 收集的資料;

3) Web interface:

zabbix 的 GUI 介面,通常與 Server 執行在同一臺主機上;

4) Proxy:

可選元件,常用於分佈監控環境中,代理 Server 收集部分被監控端的監控資料
並統一發往 Server 端;

5) Agent:

部署在被監控主機上,負責收集本地資料併發往 Server 端或 Proxy 端;

注:zabbix node 也是 zabbix server 的一種 。

1.2 程序

預設情況下zabbix包含5個程式: zabbix_agentd、 zabbix_get、 zabbix_proxy、 zabbix_sender、zabbix_server,另外一個 zabbix_java_gateway 是可選,這個需要另外安裝。

下面來分別介紹下他們各自的作用:

 zabbix_agentd

客戶端守護程序,此程序收集客戶端資料,例如 cpu 負載、記憶體、硬碟使用情況等。

 zabbix_get

zabbix 工具,單獨使用的命令,通常在 server 或者proxy端執行獲取遠端客戶端資訊的命令。 通常使用者排錯。 例如在server端獲取不到客戶端的記憶體資料, 我們可以使用zabbix_get獲取客戶端的內容的方式來做故障排查。

 zabbix_sender

zabbix 工具,用於傳送資料給 server 或者proxy,通常用於耗時比較長的檢查。很多檢查非常耗時間,導致 zabbix 超時。於是我們在指令碼執行完畢之後,使用 sender 主動提交資料。

 zabbix_server

zabbix 服務端守護程序。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway 的資料最終都是提交到 server
備註:當然不是資料都是主動提交給 zabbix_server,也有的是 server 主動去取資料。

 zabbix_proxy

zabbix 代理守護程序。功能類似server,唯一不同的是它只是一箇中轉站,它需要把收集到的資料提交/被提交到 server 裡。

 zabbix_java_gateway 

zabbix2.0 之後引入的一個功能。顧名思義:Java 閘道器,類似 agentd,但是隻用於 Java方面。需要特別注意的是,它只能主動去獲取資料,而不能被動獲取資料。 它的資料最終會給到server或者proxy。

1.3 zabbix監控環境中相關術語

  • 主機(host) :

要監控的網路裝置,可由 IP 或 DNS 名稱指定;

  • 主機組(host group):

主機的邏輯容器,可以包含主機和模板,但同一個組織內的主機和模板不能互相連結;主機組通常在給使用者或使用者組指派監控許可權時使用;

 監控項(item) :

一個特定監控指標的相關的資料;這些資料來自於被監控物件;item是 zabbix 進行資料收集的核心,相對某個監控物件,每個 item 都由"key"標識;

 觸發器(trigger) :

一個表示式,用於評估某監控物件的特定 item 內接收到的資料是否在合理範圍內,也就是閾值;接收的資料量大於閾值時,觸發器狀態將從"OK"轉變為"Problem",當資料再次恢復到合理範圍,又轉變為"OK";

 事件(event) :

觸發一個值得關注的事情,比如觸發器狀態轉變,新的 agent 或重新上
線的 agent 的自動註冊等;

 動作(action) :

指對於特定事件事先定義的處理方法,如傳送通知,何時執行操作;

 報警媒介型別(media) :

傳送通知的手段或者通道,如 Email、Jabber 或者 SMS 等;

 模板 (template) :

用於快速定義被監控主機的預設條目集合, 通常包含了 item、 trigger、graph、 screen、 application 以及 low-level discovery rule;模板可以直接連結至某個主機;

 前端(frontend) :

Zabbix 的 web 介面

二,ZabbixServer的安裝

2.1 搭建自定義yum倉庫並安裝支援包

[[email protected] rpm]# pwd
/root/rpm
[[email protected] rpm]# ls
fontconfig-2.8.0-5.el6.x86_64.rpm        libX11-common-1.6.4-el6.noarch.rpm
fontconfig-devel-2.8.0-5.el6.x86_64.rpm  libX11-devel-1.6.4-3.el6.x86_64.rpm
freetype-2.3.11-17.el6.x86_64.rpm        libXau-devel-1.0.6-4.el6.x86_64.rpm
freetype-devel-2.3.11-17.el6.x86_64.rpm  libxcb-1.12-4.el6.x86_64.rpm
gd-devel-2.0.35-11.el6.x86_64.rpm        libxcb-devel-1.12-4.el6.x86_64.rpm
libICE-1.0.6-1.el6.x86_64.rpm            libXext-1.3.3-1.el6.x86_64.rpm
libSM-1.2.1-2.el6.x86_64.rpm             libXpm-devel-3.5.10-2.el6.x86_64.rpm
libvpx-1.3.0-5.el6_5.x86_64.rpm          libXt-1.1.4-6.1.el6.x86_64.rpm
libvpx-devel-1.3.0-5.el6_5.x86_64.rpm    repodata
libX11-1.6.4-3.el6.x86_64.rpm            xorg-x11-proto-devel-7.7-14.el6.noarch.rpm
[[email protected] rpm]# cat /etc/yum.repos.d/CentOS-Media.repo 
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[rpm]
name=rpm
baseurl=file:///root/rpm/
gpgcheck=0
enabled=1

[[email protected] yum.repos.d]# yum -y install pcre pcre-devel zlib-devel libaio libaio-devel libxml2 libxml2-devel bzip2-devel openssl openssl-devel net-snmp-devel net-snmp curl-devel gd gcc gcc-c++ make libjpeg-devel libpng-devel libcurl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker mysql-devel net-snmp-utils#如果下一步出現問題,請註釋掉yum配置檔案裡的本地光碟源

 #如果下一步出現問題,請註釋掉yum配置檔案裡的本地光碟源

[[email protected] rpm]# yum -y install libvpx-devel gd-devel

2.2 編譯安裝LNMP環境

2.2.1 安裝nginx

1.[[email protected] ~]# useradd -s /sbin/nologin -M www
2.[[email protected] ~]# tar xf nginx-1.10.2.tar.gz -C /usr/src/
3.[[email protected] ~]# cd /usr/src/nginx-1.10.2/
4.[[email protected] nginx-1.10.2]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module && make && make install
5.[[email protected] nginx-1.10.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
6.
7.#建立nginx配置檔案模版
8.[[email protected] nginx-1.10.2]# cd /usr/local/nginx/conf/
9.[[email protected] conf]# egrep -v "^$|#" nginx.conf.default > nginx.conf
10.
11.#將nginx配置檔案改成如下內容
12.[[email protected] conf]# vim nginx.conf
13.[[email protected] conf]# cat nginx.conf
14.worker_processes  1;
15.events {
16.    worker_connections  1024;
17.}
18.http {
19.    include       mime.types;
20.    default_type  application/octet-stream;
21.    sendfile        on;
22.    keepalive_timeout  65;
23.    server {
24.        listen       80;
25.        server_name  localhost;
26.    location / {
27.        root   html;
28.        index  index.php index.html index.htm;
29.    }
30.    location = /nginx-status {
31.                stub_status on;
32.                access_log off;
33.        }
34.    location ~ \.php$ {
35.        fastcgi_pass 127.0.0.1:9000;
36.        fastcgi_index index.php;
37.        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
38.        include fastcgi_params;
39.    }
40.        error_page   500 502 503 504  /50x.html;
41.        location = /50x.html {
42.            root   html;
43.        }
44.    }
45.}
46.[[email protected] conf]# nginx -t
47.nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
48.nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

2.2.2 安裝mysql

1.[[email protected] ~]# tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/
2.[[email protected] ~]# cd /usr/local/
3.[[email protected] local]# mv mysql-5.5.32-linux2.6-x86_64 mysql
4.[[email protected] local]# cd mysql/
5.[[email protected] mysql]# /bin/cp support-files/my-small.cnf /etc/my.cnf 
6.[[email protected] mysql]# useradd -s /sbin/nologin -M mysql
7.[[email protected] mysql]# chown -R mysql.mysql data
8.[[email protected] mysql]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
9.Installing MySQL system tables...
10.OK
11.Filling help tables...
12.OK
13....以下省略若干...
14.
15.[[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld
16.[[email protected] mysql]# chmod +x /etc/init.d/mysqld 
17.[[email protected] mysql]# /etc/init.d/mysqld start
18.Starting MySQL.. SUCCESS! 
19.[[email protected] mysql]# netstat -antup | grep 3306
20.tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      3990/mysqld   

2.2.3 安裝libmcrypt

[[email protected] ~]# tar xf libmcrypt-2.5.8.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/libmcrypt-2.5.8/
[[email protected] libmcrypt-2.5.8]# ./configure && make && make install

2.2.4 安裝GD

[[email protected] ~]# tar xf GD-2.18.tar.gz -C /usr/src/
2.[[email protected] ~]# cd /usr/src/GD-2.18/
3.[[email protected] GD-2.18]# perl Makefile.PL
4.[[email protected] GD-2.18]# make && make install

2.2.5 安裝PHP

[[email protected] ~]# tar xf php-5.6.30.tar.gz -C /usr/src/
2.[[email protected] ~]# cd /usr/src/php-5.6.30/
3.[[email protected] php-5.6.30]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-bz2 --with-curl --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath
4.[[email protected] php-5.6.30]# make && make install
5.
6.#建立php配置檔案
7.[[email protected] php-5.6.30]# cp php.ini-development /usr/local/php/etc/php.ini
8.
9.#修改php配置檔案php.ini
10.[[email protected] php-5.6.30]# cat -n /usr/local/php/etc/php.ini | sed -n '372p;382p;393p;660p;702p;820p;936p'
11.   372  max_execution_time = 300
12.   382  max_input_time = 300
13.   393  memory_limit = 256M
14.   660  post_max_size = 32M
15.   702  always_populate_raw_post_data = -1
16.   820  upload_max_filesize = 16M
17.   936  date.timezone =Asia/Shanghai
18.
19.#建立php-fpm配置檔案
20.[[email protected] php-5.6.30]# cd /usr/local/php/etc/
21.[[email protected] etc]# cp php-fpm.conf.default php-fpm.conf
22.
23.#修改php-fpm.conf配置檔案
24.[[email protected] etc]# cat -n php-fpm.conf | sed -n '149,150p'
25.   149  user = www
26.   150  group = www

2.3 安裝zabbix server端

2.3.1 編譯安裝zabbix server

1.[[email protected] ~]# useradd zabbix -s /sbin/nologin -M
2.[[email protected] ~]# tar xf zabbix-3.2.4.tar.gz -C /usr/src/
3.[[email protected] ~]# cd /usr/src/zabbix-3.2.4/
4.[[email protected] zabbix-3.2.4]# ./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-libxml2
5.[[email protected] zabbix-3.2.4]# make && make install
6.
7.#由於zabbix啟動指令碼路徑預設指向的是/usr/local/sbin路徑,因此,需要提前簡歷軟連線:
8.[[email protected] zabbix-3.2.4]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
9.[[email protected] zabbix-3.2.4]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/

2.3.2 配置zabbix的mysql環境

Zabbix server 和mysql安裝到一臺伺服器上,首先需要手動建立zabbix資料庫,操作如下:

1.[[email protected] ~]# which mysqladmin
2./usr/bin/mysqladmin
3.[[email protected] ~]# mysqladmin -uroot password '123123'
4.[[email protected] ~]# mysql -uroot -p123123 -e 'create database zabbix character set utf8;'
5.[[email protected] ~]# mysql -uroot -p123123 -e "grant all privileges on zabbix.* to [email protected]'localhost' identified by '123123';"
6.[[email protected] ~]# mysql -uroot -p123123 -e 'flush privileges;'
7.
8.#如下資料的匯入順序不可以錯
9.[[email protected] ~]# mysql -uzabbix -p123123 zabbix < /usr/src/zabbix-3.2.4/database/mysql/schema.sql 
10.[[email protected] ~]# mysql -uzabbix -p123123 zabbix < /usr/src/zabbix-3.2.4/database/mysql/images.sql 
11.[[email protected] ~]# mysql -uzabbix -p123123 zabbix < /usr/src/zabbix-3.2.4/database/mysql/data.sql

2.4 安裝Zabbix web GUI

  • Zabbix web是php程式碼編寫的,因此需要有php環境,前面已經安裝好了lnmp,因此可以直接使用。
  • 預設的nginx安裝的根目錄為/usr/local/nginx/html,因此,只需要Zabbix web的程式碼放到此目錄即可。
  • Zabbix web的程式碼在Zabbix原始碼包中的frontends/php目錄下,將這個php目錄拷貝到/usr/local/nginx/html/目錄下並改名zabbix即可完成Zabbix web端的安裝。
  • 在瀏覽器輸入http://IP/zabbix,然後會檢查zabbix web執行環境是否滿足,並提供連線資料庫的相關資訊即可,最後將連線資料庫相關資訊都存入檔案zabbix/conf/zabbix.conf.php中,這樣就可以登入zabbix的web平臺了。
  • 預設的zabbix平臺登入使用者名稱為Admin,密碼為zabbix。

2.4.1 複製zabbix web目錄到nginx web根目錄下

1.[[email protected] ~]# cp -rp /usr/src/zabbix-3.2.4/frontends/php /usr/local/nginx/html/zabbix
2.[[email protected] ~]# cd /usr/local/nginx/html/
3.[[email protected] html]# ls -l
4.total 12
5.-rw-r--r--.  1 root root  537 Dec  8 14:15 50x.html
6.-rw-r--r--.  1 root root  612 Dec  8 14:15 index.html
7.drwxr-xr-x. 13 1000 1000 4096 Feb 27  2017 zabbix
8.[[email protected] html]# chown -R www.www zabbix
9.[[email protected] html]# ll -d zabbix/
10.drwxr-xr-x. 13 www www 4096 Feb 27  2017 zabbix/