1. 程式人生 > >zabbix的搭建與入門

zabbix的搭建與入門

date glob memory 自動註冊 execution entos tmp 連接mysql schema

一,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倉庫並安裝支持包

技術分享圖片

[root@localhost rpm]# pwd
/root/rpm
[root@localhost rpm]# ls
fontconfig-2.8.0-5.el6.x86_64.rpm        libX11-common-1.6.4-3.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
[root@localhost 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

[root@localhost 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配置文件裏的本地光盤源
[root@localhost rpm]# yum -y install libvpx-devel gd-devel

2.2 編譯安裝LNMP環境

2.2.1 安裝nginx

[root@localhost ~]# useradd -s /sbin/nologin -M www
[root@localhost ~]# tar xf nginx-1.10.2.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/nginx-1.10.2/
[root@localhost 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
[root@localhost nginx-1.10.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

#創建nginx配置文件模版
[root@localhost nginx-1.10.2]# cd /usr/local/nginx/conf/
[root@localhost conf]# egrep -v "^$|#" nginx.conf.default > nginx.conf

#將nginx配置文件改成如下內容
[root@localhost conf]# vim nginx.conf
[root@localhost conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
    location / {
        root   html;
        index  index.php index.html index.htm;
    }
    location = /nginx-status {
                stub_status on;
                access_log off;
        }
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
[root@localhost conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

2.2.2 安裝mysql

[root@localhost ~]# tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv mysql-5.5.32-linux2.6-x86_64 mysql
[root@localhost local]# cd mysql/
[root@localhost mysql]# /bin/cp support-files/my-small.cnf /etc/my.cnf 
[root@localhost mysql]# useradd -s /sbin/nologin -M mysql
[root@localhost mysql]# chown -R mysql.mysql data
[root@localhost mysql]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK
...以下省略若幹...

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chmod +x /etc/init.d/mysqld 
[root@localhost mysql]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 
[root@localhost mysql]# netstat -antup | grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      3990/mysqld   

2.2.3 安裝libmcrypt

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

2.2.4 安裝GD

[root@localhost ~]# tar xf GD-2.18.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/GD-2.18/
[root@localhost GD-2.18]# perl Makefile.PL
[root@localhost GD-2.18]# make && make install

2.2.5 安裝PHP

[root@localhost ~]# tar xf php-5.6.30.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/php-5.6.30/
[root@localhost 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
[root@localhost php-5.6.30]# make && make install

#創建php配置文件
[root@localhost php-5.6.30]# cp php.ini-development /usr/local/php/etc/php.ini

#修改php配置文件php.ini
[root@localhost php-5.6.30]# cat -n /usr/local/php/etc/php.ini | sed -n ‘372p;382p;393p;660p;702p;820p;936p‘
   372  max_execution_time = 300
   382  max_input_time = 300
   393  memory_limit = 256M
   660  post_max_size = 32M
   702  always_populate_raw_post_data = -1
   820  upload_max_filesize = 16M
   936  date.timezone =Asia/Shanghai

#創建php-fpm配置文件
[root@localhost php-5.6.30]# cd /usr/local/php/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf

#修改php-fpm.conf配置文件
[root@localhost etc]# cat -n php-fpm.conf | sed -n ‘149,150p‘
   149  user = www
   150  group = www

2.3 安裝zabbix server端

2.3.1 編譯安裝zabbix server

[root@localhost ~]# useradd zabbix -s /sbin/nologin -M
[root@localhost ~]# tar xf zabbix-3.2.4.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/zabbix-3.2.4/
[root@localhost zabbix-3.2.4]# ./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-libxml2
[root@localhost zabbix-3.2.4]# make && make install

#由於zabbix啟動腳本路徑默認指向的是/usr/local/sbin路徑,因此,需要提前簡歷軟連接:
[root@localhost zabbix-3.2.4]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
[root@localhost zabbix-3.2.4]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/

2.3.2 配置zabbix的mysql環境

Zabbix server 和mysql安裝到一臺服務器上,首先需要手動創建zabbix數據庫,操作如下:

[root@localhost ~]# which mysqladmin
/usr/bin/mysqladmin
[root@localhost ~]# mysqladmin -uroot password ‘123123‘
[root@localhost ~]# mysql -uroot -p123123 -e ‘create database zabbix character set utf8;‘
[root@localhost ~]# mysql -uroot -p123123 -e "grant all privileges on zabbix.* to zabbix@‘localhost‘ identified by ‘123123‘;"
[root@localhost ~]# mysql -uroot -p123123 -e ‘flush privileges;‘

#如下數據的導入順序不可以錯
[root@localhost ~]# mysql -uzabbix -p123123 zabbix < /usr/src/zabbix-3.2.4/database/mysql/schema.sql 
[root@localhost ~]# mysql -uzabbix -p123123 zabbix < /usr/src/zabbix-3.2.4/database/mysql/images.sql 
[root@localhost ~]# 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根目錄下

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

2.4.2 啟動nginx服務及php-fpm

[root@localhost html]# /usr/local/nginx/sbin/nginx 
[root@localhost html]# netstat -antup | grep nginx
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      8439/nginx   
[root@localhost local]# /usr/local/php/sbin/php-fpm 
[root@localhost local]# netstat -antup | grep php-fpm
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      8522/php-fpm  

2.4.3 登錄web根據提示生成zabbix.conf.php配置文件

#起初並沒有zabbix.conf.php配置文件,我們可以選擇自動生成配置文件
[root@localhost ~]# cd /usr/local/nginx/html/zabbix/conf
[root@localhost conf]# ls
maintenance.inc.php  zabbix.conf.php.example

在瀏覽器裏輸入http://IP/zabbix,配置zabbix數據庫環境,如下圖所示:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

執行如上圖所示的步驟生成zabbix.conf.php配置文件

[root@localhost conf]# pwd
/usr/local/nginx/html/zabbix/conf
[root@localhost conf]# ls
maintenance.inc.php  zabbix.conf.php  zabbix.conf.php.example
[root@localhost conf]# cat zabbix.conf.php      #裏面記錄的信息就是我們剛剛的操作
<?php
// Zabbix GUI configuration file.
global $DB;

$DB[‘TYPE‘]     = ‘MYSQL‘;
$DB[‘SERVER‘]   = ‘localhost‘;
$DB[‘PORT‘]     = ‘0‘;
$DB[‘DATABASE‘] = ‘zabbix‘;
$DB[‘USER‘]     = ‘zabbix‘;
$DB[‘PASSWORD‘] = ‘123123‘;

// Schema name. Used for IBM DB2 and PostgreSQL.
$DB[‘SCHEMA‘] = ‘‘;

$ZBX_SERVER      = ‘localhost‘;
$ZBX_SERVER_PORT = ‘10051‘;
$ZBX_SERVER_NAME = ‘zabbixserver‘;

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

提示:
除了通過web界面的方式生成zabbix.conf.php文件外,我們也可以利用zabbix.conf.php.example的模版文件直接修改成我們需要的配置文件。

2.4.4 登錄zabbix web

技術分享圖片

技術分享圖片

2.4.5 設置zabbix中文模式

技術分享圖片

技術分享圖片

技術分享圖片

三,zabbix server的配置

3.1 zabbix_server.conf配置

通過源碼安裝方式將zabbix安裝到/usr/local/zabbix下面,zabbix server的配置文件為/usr/local/zabbix/etc/zabbix_server.conf,需要修改的內容為如下:

#需要修改的內容為如下:
[root@localhost ~]# cd /usr/local/zabbix/etc/
[root@localhost etc]# cat -n zabbix_server.conf | sed -n ‘12p;38p;87p;103p;111p;118p;136p;165p;181p;297p;447p‘
    12  # ListenPort=10051
    38  LogFile=/tmp/zabbix_server.log
    87  DBName=zabbix
   103  DBUser=zabbix
   111  # DBPassword=
   118  # DBSocket=/tmp/mysql.sock
   136  # StartPollers=5
   165  # StartTrappers=5
   181  # StartDiscoverers=1
   297  # ListenIP=0.0.0.0
   447  # AlertScriptsPath=${datadir}/zabbix/alertscripts

#將zabbix_server.conf文件內容修改成如下所示:
[root@localhost etc]# cat -n zabbix_server.conf | sed -n ‘12p;38p;87p;103p;111p;118p;136p;165p;181p;297p;447p‘
    12  ListenPort=10051    #zabbix server監聽端口
    38  LogFile=/tmp/zabbix_server.log  #zabbix server日誌路徑
    87  DBName=zabbix   #zabbix server連接MySQL數據庫的數據庫名
   103  DBUser=zabbix   #zabbix server連接MySQL數據庫的用戶名
   111  DBPassword=123123   #zabbix server連接MySQL數據庫的密碼
   118  DBSocket=/tmp/mysql.sock    #MySQL的實例文件位置
   136  StartPollers=5  #用於設置zabbix server服務啟動時啟動Pollers(主動收集數據進程)的數量,數量越多,則服務端吞吐能力越強,同時對系統資源消耗越大
   165  StartTrappers=10    #用於設置zabbix server服務啟動時啟動Trappers(負責處理Agentd推送過來的數據的進程)的數量。Agentd為主動模式時,zabbix server需要設置這個值大一些。
   181  StartDiscoverers=10 #用於設置zabbix server服務啟動時啟動Discoverers進程的數量,如果zabbix監控報Discoverers進程忙時,需要提高該值。
   297  ListenIP=0.0.0.0    #zabbix server啟動的監聽端口對哪些ip開放,Agentd為主動模式時,這個值建議設置為0.0.0.0
   447  AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts  #zabbix server運行腳本存放目錄,一些供zabbix server使用的腳本,都可以放在這裏。

3.2 添加相關服務和端口到系統配置文件

編輯/etc/services文件,在最後添加以下代碼:

[root@localhost ~]# tail -4 /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

其中,10051是zabbix server的監聽端口,10050是zabbix agent的監聽端口。

3.3 添加管理維護腳本

從zabbix源碼包misc/init.d/fedora/cora/目錄中找到zabbix_server和zabbix_agentd,然後復制到/etc/init.d目錄下,由於我們的zabbix_agnetd采用rpm的安裝方式,會自動添加啟動腳本,所以在此處,我們不進行zabbix_agentd的啟動腳本的復制。

[root@localhost ~]# cp /usr/src/zabbix-3.2.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
[root@localhost ~]# cd /etc/init.d/
[root@localhost init.d]# chmod +x /etc/init.d/zabbix_server 
[root@localhost init.d]# chkconfig zabbix_server on

3.4 啟動zabbix_server端進程

[root@localhost ~]# /etc/init.d/zabbix_server start
Starting zabbix_server:                                    [  OK  ]
[root@localhost ~]# netstat -antup | grep zabbix_server
tcp        0      0 0.0.0.0:10051               0.0.0.0:*                   LISTEN      9319/zabbix_server 

四,zabbix_agent的安裝與配置

zabbix agent端的安裝建議采用rpm包方式安裝,可從http://repo.zabbix.com/zabbix/3.2/下載zabbix的agent端rpm包,版本與zabbix server端保持一致,安裝如下:

[root@localhost chen]# wget http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-agent-3.2.4-1.el6.x86_64.rpm
[root@localhost ~]# rpm -ivh zabbix-agent-3.2.4-1.el6.x86_64.rpm

安裝完成後,zabbix agent端已經安裝完成了,zabbix agent端的配置目錄位於/etc/zabbix下,可在此目錄進行配置文件的修改。

特別提示:

  • zabbix server的源碼包本身就包含了zabbix server端和zabbix agent端,因此,zabbix服務器端無需再安裝zabbix agent的rpm包。
  • 然而zabbix agent的rpm包是為了方便在服務器上進行快速安裝而設計的快捷安裝包。
  • 因此為了統一,監控端和被監控端的zabbix agent我們都用rpm的安裝方式

修改zabbix agent端的配置文件

#需要修改的內容如下所示:
[root@Zabbix_Server ~]# cd /etc/zabbix/
[root@localhost zabbix]# cat -n zabbix_agentd.conf | sed -n ‘13p;32p;95p;103p;120p;136p;147p;265p;284p‘
    13  PidFile=/var/run/zabbix/zabbix_agentd.pid
    32  LogFile=/var/log/zabbix/zabbix_agentd.log
    95  Server=127.0.0.1
   103  # ListenPort=10050
   120  # StartAgents=3
   136  ServerActive=127.0.0.1
   147  Hostname=Zabbix server
   265  Include=/etc/zabbix/zabbix_agentd.d/*.conf
   284  # UnsafeUserParameters=0

#將內容修改為如下所示:
[root@localhost zabbix]# cat -n zabbix_agentd.conf | sed -n ‘13p;32p;95p;103p;120p;136p;147p;265p;284p‘
    13  PidFile=/var/run/zabbix/zabbix_agentd.pid   #進程pid存放路徑
    32  LogFile=/var/log/zabbix/zabbix_agentd.log   #zabbix agent日誌存放路徑
    95  Server=127.0.0.1,192.168.0.220  #指定zabbix server端IP地址
   103  ListenPort=10050    #指定agentd的監聽端口
   120  StartAgents=3       #指定啟動agentd進程數量。設置0表示關閉
   136  ServerActive=192.168.0.220:10051    #啟用agnetd主動模式,啟動主動模式後,agentd將主動將收集到的數據發送到zabbix server端,Server Active後面指定的IP就是zabbix server端IP
   147  Hostname=192.168.0.220 #需要監控服務器的主機名或者IP地址,此選項的設置一定要和zabbix web端主機配置中對應的主機名一致。
   265  Include=/etc/zabbix/zabbix_agentd.d/    #相關配置都可以放到此目錄下,自動生效
   284  UnsafeUserParameters=1  #啟用agent端自定義item功能,設置此參數為1後,就可以使用UserParameter指令了。UserParameter用於自定義item

啟動zabbix_agent端進程

[root@localhost ~]# /etc/init.d/zabbix-agent start
Starting Zabbix agent:                                     [  OK  ]
[root@localhost ~]# netstat -antup | grep zabbix_agent
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      1322/zabbix_agentd  
tcp        0      0 :::10050                    :::*                        LISTEN      1322/zabbix_agentd  
[root@localhost init.d]# chkconfig zabbix-agent on

我們在監控端和被監控端都進行如上所述的zabbix agent端的安裝。

五,測試zabbix server監控

如何知道zabbix server監控已經生效呢,可通過zabbix server上的zabbix_get命令來完成,在zabbix server上執行如下命令即可進行測試:

#利用如下命令進行測試
/usr/local/zabbix/bin/zabbix_get -s 192.168.0.221 -p 10050 -k "system.uptime"

-s 是指定zabbix agent端的IP地址
-p 是指定zabbix agent端的監聽端口
-k 是監控項,即item
如果有輸出結果,表面zabbix server可以從zabbix agent獲取數據,配置成功。

具體操作如下:

#在監控端zabbix_server端進行如下操作
[root@localhost init.d]# /usr/local/zabbix/bin/zabbix_get -s 192.168.0.221 -p 10050 -k "system.uptime"
26330       #有數據顯示就代表監控正常
[root@localhost init.d]# /usr/local/zabbix/bin/zabbix_get -s 192.168.0.220 -p 10050 -k "system.uptime"
55653       #有數據顯示就代表監控正常

六,Zabbix的web操作入門

6.1 Zabbix Web 操作概述

6.1.1 Zabbix首頁儀表提示面板

技術分享圖片

  • 常用的圖形:可以根據自己喜好,添加按主機按監控項添加快捷的查看鏈接
  • 常用的聚合圖形:可以將多個監控圖形的曲線合並顯示
  • 常用的拓撲圖:集群的架構圖
  • 主機狀態:被監控的主機的實時狀態
  • Web檢測:發一個http請求,看看web是否能正常訪問
  • 系統狀態:監控端zabbix server服務器的狀態
  • 最近20個問題:最後發生的20個告警信息
  • Zabbix狀態:zabbix server監控的詳細匯總信息

6.1.2 自定義首頁面板

技術分享圖片

調整後,如下所示:

技術分享圖片

6.1.3 追加常用的監控圖形

技術分享圖片

技術分享圖片

技術分享圖片

6.1.4 修改賬戶密碼

技術分享圖片

技術分享圖片

技術分享圖片

6.1.5 設置報警提示聲音

技術分享圖片

技術分享圖片

技術分享圖片

6.1.6 獲取最新的zabbix共享模版

技術分享圖片

技術分享圖片

6.2 自定義被監控的服務器

6.2.1 自定義一個主機組

技術分享圖片

技術分享圖片

技術分享圖片

特別提示
在生產環境時,主機組的名字一定要用英文,不然,當zabbix進行二次開發的時候,中文名稱都是亂碼。那感覺很讓人想死...

6.2.2 自定義一個主機

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

特別提示
在生產環境中主機的名字一定要是英文,並且務必和真實主機的主機名一致,且必須歸類加入到主機組中。不然zabbix在進行二次開發的時候會非常麻煩(需要建立類似索引形式的東西去關聯真實服務器)

6.3 自定義一個監控項

6.3.1 進行監控項的後臺定義

現在假如我們要定義一個獲取nginx連接數的監控項,那麽我們先得去嘗試能夠獲取這個值。在之前的nginx配置文件裏我們已經加入了status模塊的獲取

技術分享圖片

(1)我們登錄網頁獲取這個信息

技術分享圖片

(2)我們嘗試通過命令獲取這個信息

[root@localhost zabbix_agentd.d]# curl -s "http://192.168.0.220:80/nginx-status" 
Active connections: 6 
server accepts handled requests
 301 301 8833 
Reading: 0 Writing: 1 Waiting: 5 
[root@localhost zabbix_agentd.d]# curl -s "http://192.168.0.220:80/nginx-status" | grep "Active"
Active connections: 6 
[root@localhost zabbix_agentd.d]# curl -s "http://192.168.0.220:80/nginx-status" | grep "Active" | awk ‘{print $NF}‘
6

(3)在zabbix agent配置文件裏定義這個監控項

[root@localhost ~]# cd /etc/zabbix/     #進入zabbix agent目錄
[root@localhost zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@localhost zabbix]# vim zabbix_agentd.conf 
[root@localhost zabbix]# sed -n ‘257,270p‘ zabbix_agentd.conf   
### Option: Include
#   You may include individual files or all files in a directory in the configuration file.
#   Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time.
#
# Mandatory: no
# Default:
# Include=

Include=/etc/zabbix/zabbix_agentd.d/        #我們發現zabbix_agentd.d目錄已經默認被include進入了主配置文件。

# Include=/usr/local/etc/zabbix_agentd.userparams.conf
# Include=/usr/local/etc/zabbix_agentd.conf.d/
# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf

由於zabbix_agentd.conf配置文件默認導入了所有zabbix_agentd.d目錄下的內容,因此我們可以將監控項定義到zabbix_agentd.d目錄下。

技術分享圖片

(4)參考模版,自己定義監控項的獲取命令

[root@localhost zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@localhost zabbix_agentd.d]# vim nginx.conf
[root@localhost zabbix_agentd.d]# cat nginx.conf 
[root@localhost zabbix_agentd.d]# cat nginx.conf 
UserParameter=nginx.active,/usr/bin/curl -s "http://192.168.0.220:80/nginx-status" | grep "Active" | awk ‘{print $NF}‘

(5)自定義監控項,等於改變了配置文件,自然需要重啟zabbix_agentd

[root@localhost ~]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent:                                [  OK  ]
Starting Zabbix agent:                                     [  OK  ]

(6)在zabbix server端測試獲取自定義的監控項信息

[root@localhost ~]# zabbix_get -s 192.168.0.220 -p 10050 -k "nginx.active"
6

至此zabbix自定義監控項的後臺定義全部完成

6.3.2 進行監控項的前臺定義

(1)點選一個被監控的主機

技術分享圖片

(2)進入監控項創建模版

技術分享圖片

(3)創建監控項

技術分享圖片

技術分享圖片

(4)創建完成的監控項

技術分享圖片

監控項創建完成以後,在zabbix server這個主機裏就出現這個新定義的監控項了。

6.4 自定義一個監控項的圖形

(1)點選一個被監控的主機

技術分享圖片

(2)進入圖形創建模版

技術分享圖片

技術分享圖片

(3)查看圖形繪圖

技術分享圖片

(4)關於圖形的各種顯示效果

技術分享圖片

正常圖形:

技術分享圖片

層積圖形

技術分享圖片

Pie圖形

技術分享圖片

爆發的圖形

技術分享圖片

6.5 自定義一個聚合圖形

(1)創建一個聚合圖形

技術分享圖片

技術分享圖片

(2)編輯聚合圖形

技術分享圖片

技術分享圖片

技術分享圖片

(3)選擇展示圖形

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

(4)將聚合圖形添加到zabbix web首頁面板

技術分享圖片

技術分享圖片

技術分享圖片

6.6 自定義一個拓撲圖形

(1)進入拓撲圖編輯界面

技術分享圖片

技術分享圖片

(2)添加一個新的拓撲圖形

技術分享圖片

技術分享圖片

(3)拓撲圖鏈接拓撲圖

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

(4)拓撲圖顯示時時的連接帶寬

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

上圖中的標簽內容如下:
{linux-node1.yunjisuan.com:net.if.out[eth0].last(0)}
linux-node1.yunjisuan.com為定義的主機名
net.if.out[eth0]為監控項的表達式
last(0)為取監控項的最後一個值

技術分享圖片

zabbix的搭建與入門