Zabbix企業分布式監控工具


前言:在工作中常常需要對服務器進行監控,但是要選擇一款合適監控軟件可不容易,今天介紹下zabbix這款監控軟件

一、Zabbix介紹
1.Zabbix是一個企業級的、開源的、分布式的監控套件
2.Zabbix可以監控網絡和服務的監控狀況.Zabbix利用靈活的告警機制,允許用戶對事件發送基於Email的告警.
這樣可以保證快速的對問題作出相應. Zabbix可以利用存儲數據提供傑出的報告及圖形化方式. 這一特性將幫助用戶完成容量規划。
3.Zabbix 支持 polling和trapping兩種方式. 所有的 Zabbix報告都可以通過配置參數在WEB前端進行訪問.
Web前端將幫助你在任何區域都能夠迅速獲得你的網絡及服務狀況. Zabbix 可以通過盡可能的配置來扮演監控你的IT基礎框架的角色,
而不管你是來自於小型組織還是大規模的公司.
4.Zabbix是零成本的. 因為 Zabbix 編寫和發布基於 GPL V2 協議. 意味着源代碼是免費發布的
5.Zabbix公司也提供商業化的技術支持

二、Zabbix特性
1.數據收集
a.可用性及性能檢測
b.支持SNMP(trapping及polling)、IPMI-(智能平台管理接口,定義了嵌入式管理子系統進行通信的特定方法)、JMX監控-(是一個為應用程序、設備、系統等植入管理功能的框架)
c.自定義檢測
b.自定義間隔收集數據
e.server/porxy/agents

2.靈活的閥值定義
a.允許靈活地自定義問題閥值,Zabbix中稱為觸發器(trigger),存儲在后端數據庫中。

3.高級告警配置
a)可以自定義告警升級(escalation)、接收者及告警方式
b)告警信息可以配置並允許使用宏變量,讓zabbix更加靈活
c)通過遠程命令實行自動化動作(action)

4.實時繪圖
a)通過內置的繪圖方法實現監控數據實時繪圖

5.擴展的圖形化顯示
b)允許自定義創建多監控項視圖
c)網絡拓撲
d)自定義的面板(screen)和slide shows,並允許在dashboard頁面顯示
e)報告
f)高等級(商業)監控資源

6.歷史數據存儲
a)數據存儲在數據庫中
b)歷史數據可配置
c)內置數據清理機制

7.配置簡單
a)主機通過添加監控設備方式添加
b)一次配置,終生監控(除非調整或刪除)
c)監控設備允許使用模板

8.模板使用
a)模板中可以添加組監控
b)模板允許繼承

9.網絡自動發現
a)自動發現網絡設備
b)agent自動注冊
c)自動發現文件系統、網卡設備、SNMP OID(對象標識符)等

10.快速的web接口
a)web前端采用php編寫
b)訪問無障礙
c)你想怎么做就能做
d)審計日志

11.Zabbix API
a)Zabbix API提供程序級別的訪問接口,第三方程序可以很快接入

12.權限系統
b)安全的權限認證
c)用戶可以限制運行維護的列表

13.全特性、agent易擴展
a)在監控目標上部署
b)支持Linux及window

14.二進制守護進程
a)C開發,高性能,低內存
b)易移植

15.具備應對負責環境情況
a)通過Zabbix proxy可以非常容易的創建遠程監控

三、Zabbix進程構成
默認情況下 zabbix 包含 5 個程序: zabbix_agentd、 zabbix_get、 zabbix_proxy、 zabbix_sender、
zabbix_server,另外 zabbix_java_gateway
1.zabbix_agentd
客戶端守護進程,收集客戶端數據,例如 cpu 負載、內存、硬盤使用情況等
2.zabbix_get
zabbix工具,單獨使用的命令,通常在 server 或者 proxy 端執行, 用戶獲取被監控端數據, 通常用於排錯。
例如在 server 端獲取不到客戶端的內存數據,我們可以使用 zabbix_get 獲取客戶端的內容的方式來做故障排查
3.zabbix_sender
zabbix工具,用於發送數據給 server 或者 proxy,通常用於耗時比較長的 check,並且與 trapper 配合使用。 生
存環境中,個別非常耗時間 check 經常導致 zabbix 超時。於是我們在腳本執行完畢之后,使用 sender 主動提交數據
4.zabbix_server
zabbix服務端守護進程。zabbix_agentd、 zabbix_get、 zabbix_sender、 zabbix_proxy、 zabbix_java_gateway 的數
據最終都是提交到 server
備注:當然不是數據都是主動提交給 zabbix_server,大多數情況下都是 server 主動去取數據。
5.zabbix_proxy
zabbix代理守護進程。功能類似server,唯一不同的是它只是一個中轉站,它需要把收集到的數據提交/被提交到server里。
一般跨機房、地區的環境需要用到proxy。
6.zabbix_java_gateway
zabbix2.0 之后引入的一個功能。顧名思義: Java 網關,類似 agentd,但是只用於 Java 方面。
需要特別注意的是,它只能主動去獲取數據,而不能被動獲取數據。它的數據最終會給到 server 或者 proxy。

四、Zabbix安裝

安裝Zabbix前需要搭建LNMP環境

4.1、安裝Nginx
1.創建用戶

useradd -M -s /sbin/nologin nginx

2.進入/usr/local/src目錄,創建/usr/local/nginx目錄

cd /usr/local/src
mkdir /usr/local/nginx

3.解壓nginx源碼包

tar xf nginx-1.10.3.tar.gz 

4.安裝前的准備,安裝pcre和openssl,支持rewrite和https  

yum install pcre* openssl* -y

5.編譯nginx

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
make && make install

6.啟動Nginx 

/usr/local/nginx/sbin/nginx 
訪問測試一下
[root@lnmp nginx]# curl -I http://localhost 
HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Wed, 22 Mar 2017 16:41:22 GMT

7.添加環境變量  

vim /etc/profile.d/nginx.sh
export PATH=/usr/local/nginx/sbin:$PATH
source /etc/profile.d/nginx.sh 

4.2、安裝MySQL服務  

1.創建用戶

useradd mysql -M -s /sbin/nolgoin 

2.進入目錄,解壓mysql二進制包  

cd /usr/local/
tar xf mysql-5.5.54-linux2.6-x86_64.tar.gz

3.生成配置文件和開機腳本 

cd mysql-5.5.54-linux2.6-x86_64/support-files/
cp my-small.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld

4.編輯/etc/init.d/mysqld文件  

cat /etc/init.d/mysqld | grep -E "^basedir=|^datadir="
basedir=/usr/local/mysql		#原始目錄
datadir=/usr/local/mysql/data		#數據目錄
chmod 755 /etc/init.d/mysqld 

5.做一個軟鏈接  

ln -s mysql-5.5.54-linux2.6-x86_64/ mysql  

6.修改權限,為了生成初始化數據庫

chown mysql.mysql -R /usr/local/mysql

7.初始化數據庫  

cd /usr/local/mysql/scripts/
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
WARNING: The host 'lnmp' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...
170323  1:12:30 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
170323  1:12:30 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.5.54) starting as process 5104 ...
OK
Filling help tables...
170323  1:12:30 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
170323  1:12:30 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.5.54) starting as process 5111 ...
OK

8.啟動數據庫

/etc/init.d/mysqld start
. SUCCESS! 

9.添加環境變量  

vim /etc/profile.d/mysql.sh 
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile.d/mysql.sh 

10.添加數據庫密碼

mysqladmin -uroot password '123456'

11.登錄測試  

終端命令:mysql -p123456
結果輸出: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.5.54 MySQL Community Server (GPL) Copyright (c) 2000, 2016, 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>

4.3、安裝PHP

1.安裝依賴  

yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel -y

2.創建目錄

mkdir /usr/local/php

3.解壓編譯安裝PHP

cd /usr/local/ && tar xf php-5.5.38.tar.gz
cd php-5.5.38/
/configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc --with-bz2 --with-curl \
--enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-fpm-user=nginx --with-fpm-group=nginx \
--with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --enable-soap --enable-static \
--with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-mhash --enable-pcntl \
--with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-inline-optimization \
--with-mysql=mysqlnd --enable-fpm --with-libdir=lib64 --enable-bcmath  --enable-shmop --enable-sysvsem 
make && make install

4.安裝成功后配置php,在php.ini配置文件添加內容

cd /usr/local/php-5.5.38 
cp php.ini-production /usr/local/php/etc/php.ini
cp php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

5.安全優化  

vim /usr/local/php/etc/php.ini
expose_php = Off		#關閉版本信息
display_errors = Off		#錯誤信息控制,測試的時候開啟
log_errors = On			#打開錯誤日志
error_log = /usr/local/php/log/php_errors.log	#log日志路徑,log_errors必須開啟
allow_url_fopen = Off		#打開遠程(禁止)
cgi.fix_pathinfo=0		#防止nginx文件類型錯誤解析漏洞
max_execution_time = 300	#單個腳本最大運行時間,單位是秒
memory_limit = 128M		#單個腳本最大使用的內存,單位為K或M
post_max_size = 16M			
upload_max_filesize = 2M	#上傳文件最大許可2M
max_input_time = 300		#單個腳本等待輸入最長時間
date.timezone = 'Asia/Shanghai'	#時間區域

6.啟動php-fpm  

cd /usr/local/php-5.5.38/
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm 
chkconfig php-fpm on
service php-fpm start
Starting php-fpm  done

查看端口

netstat -tpunl | grep php
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      125593/php-fpm  

7.設置環境變量

cd /etc/profile.d/
[root@lnmp profile.d]# vim php.sh
[root@lnmp profile.d]# cat php.sh 
export PATH=/usr/local/php/sbin:$PATH
[root@lnmp profile.d]# source php.sh

8.結合nginx連接php 添加php文件

[root@lnmp html]# vim /usr/local/nginx/html/index.php
[root@lnmp html]# cat index.php 
<?php
   phpinfo();
 ?>

9.配置nginx配置文件

cd /usr/local/nginx/conf
grep -vE "(#|^$)" nginx.conf.default > nginx.conf
vim nginx.conf
在http標簽下輸入以下內容
server {
    listen  80;
    server_name www.test.com;
    index index.php
    root html;
    location ~ .*\.(php|php5)?$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi.conf;
	}
}

10.重啟nginx服務

nginx -s reload

瀏覽器訪問是否處理php頁面,如果有就成功了

4.4正式安裝zabbix

確保以下參數選項

1.數據庫要在my.cnf添加的選項

character-set-server=utf8     #設置字符集為utf8
innodb_file_per_table=1        #讓innodb的每個表文件單獨存儲

2.PHP配置參數,php.ini配置文件

max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = 'Asia/Shanghai'

3.安裝所需的依賴包

yum install net-snmp-devel.x86_64 mysql-devel 

4.做一個軟件接

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
/sbin/ldconfig

5.創建zabbix編譯時指定目錄

mkdir /usr/local/zabbix

6.解壓zabbix源碼包,並且編譯安裝

cd /usr/local/ && tar xf zabbix-3.2.4.tar.gz
cd zabbix-3.2.4/
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 
參數說明 
―prefix=/usr/local/zabbix 為指定安裝目錄為/usr/local/zabbix
―enable-server 為安裝zabbix服務端程序 
―enable-agent 為安裝agent程序 
―with-mysql 為使用mysql數據庫 
―with-net-snmp 為啟用snmp支持 
―with-libcurl 為啟用curl 
―with-libxml2 編譯xml模塊,主要用於監控vm虛擬機
[root@zabbix zabbix-3.2.4]#make
[root@zabbix zabbix-3.2.4]#make install
***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*                                  *
***********************************************************

7.創建zabbix用戶  

groupadd zabbix
useradd -g zabbix zabbix
id zabbix
uid=502(zabbix) gid=502(zabbix) groups=502(zabbix)
chown -R zabbix:zabbix /usr/local/zabbix/ 
mkdir -p /var/log/zabbix-server 
mkdir -p /var/log/zabbix-agentd 
chown -R zabbix:zabbix /var/log/zabbix-server/ 
chown -R zabbix:zabbix /var/log/zabbix-agentd/ 

8.初始化zabbix數據庫
zabbix server 與 proxy 需要數據庫, angent 不需要。尤其要注意的是proxy只需要導入1個sql文件,而server一共要導入3個sql 文件。
我當時在搭建 proxy 的時候導入了3個sql,導致出現報錯。后來才發現 proxy 只需要導入1個表結構即可。
創建zabbix數據庫,和zabbix用戶

mysql> create database zabbix character set utf8;
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 (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

9.進入zabbix-3.2.4的源碼目錄,按順序導入三個SQL腳本導入zabbix庫

cd /usr/local/zabbix-3.2.4/
mysql -uzabbix -p'123456' -hlocalhost zabbix < database/mysql/schema.sql 
mysql -uzabbix -p'123456' -hlocalhost zabbix < database/mysql/images.sql 
mysql -uzabbix -p'123456' -hlocalhost zabbix < database/mysql/data.sql 

10.修改zabbix.conf

vim /usr/local/zabbix/etc/zabbix_server.conf

DBName=zabbix  數據庫名字
DBUser=zabbix  數據庫用戶
DBPassword=123456  zabbix密碼
DBHost=localhost   主機
PidFile=/tmp/zabbix_server.pid
DBSocket=/tmp/mysql.sock

11.zabbix3.2.4的啟動

拷貝zabbix_server,zabbix_agentd文件
cp /usr/local/zabbix-3.2.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
cp /usr/local/zabbix-3.2.4/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd
修改zabbix_server,zabbix_agentd文件
vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix
vim /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix
啟動
/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agentd start

12.添加環境變量和開機自啟動

cd /etc/profile.d/
vim zabbix.sh 
export PATH=/usr/local/zabbix/sbin:$PATH
source /etc/profile.d/zabbix.sh 
chkconfig --add zabbix_server
chkconfig zabbix_server on

13.拷貝zabbix的web環境文件

cd /usr/local/zabbix-3.2.4/frontends/
cp -rf php /usr/local/nginx/html/zabbix

確保前面都沒問題,打開瀏覽器訪問http://url/zabbix

 

 

 

 

 

 

 

 

 

 

 

 

 

如果這一步有問題,chmod 777 /usr/local/nginx/html/zabbix/conf/,因為要生成zabbix.conf.php文件

默認用admin用戶登錄,密碼為zabbix

這是效果圖,可以根據自己的需求來調整zabbix

 

 

 

 

PS:有需要zabbix詳細學習文檔的私信我~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM