zabbix安裝以及監控(一)

1、 zabbix簡介:php

zabbix是徹底開源的工具,整合了cactinagios等特性html

cacti:snmp前端

nagios:linux主機:nrpe    設備:snmpjava

附:SNMP(udp 161  udp 162)node

衆多網絡工具都支持此協議,好比常見路由交換,常見OSmysql

其既能夠作管理端也能夠作被管理端linux

snmp協議大體有3個版本分別是v1 v2 v3ios

不管是v1 v2 的安全性是比較差的,由於傳輸是明文的, V3的認證密碼用MD5/SHA摘要算法加密nginx

 

不少工具支持網絡管理的功能,而對於非網絡設備(操做系統),能夠徹底拋開snmp這種不安全的架構來實現監控的。因此不少工具都是控制端和agent架構,他們有專屬的agentc++

Zabbix的主要功能:

具有常見的商業監控軟件所具有的功能(主機的性能監控、網絡設備性能監控、數據庫、FTP 等通用協議監控、多種告警方式、詳細的報表圖表繪製)

支持自動發現網絡設備和服務器(能夠經過配置自動發現服務器規則來實現)

支持分佈式,能集中展現、管理分佈式的監控點,擴展性強

server 提供通用接口(api 功能)能夠本身開發完善各種監控(根據相關接口編寫程序實現),編寫插件容易,能夠自定義監控項,報警級別的設置。

數據收集支持 snmp(包括 trapping and polling )IPMIJMXSSHTELNET

自定義的檢測;自定義收集數據的頻率;

服務器/代理和客戶端模式;

靈活的觸發器;能夠定義很是靈活的問題閾值,稱爲觸發器;

高可定製的報警;發送通知,可定製的報警升級,收件人,媒體類型。

CPU負荷、內存使用、磁盤使用、網絡情況、端口監視、日誌監視等等。

硬件監控:Zabbix IPMI Interface

系統監控:Zabbix  Agent Interface

Java監控:Zabbix JMX Interface

網絡設備監控:Zabbix SNMP Interface

應用服務監控:Zabbix Agent UserParameter 

MySQL數據庫監控:percona-monitoring-plulgins   

URL監控:Zabbix Web 監控

zabbix重要組件說明:

1zabbix server:負責接收agent發送的報告信息的核心組件,全部配置、統計數據及操做數據都由它組織進行;

2database storage:專用於存儲全部配置信息,以及由zabbix收集的數據;

3web interfacezabbixGUI接口;

4proxy:可選組件,經常使用於監控節點不少的分佈式環境中,代理server收集部分數據轉發到server,能夠減輕server的壓力;

5agent:部署在被監控的主機上,負責收集主機本地數據如cpu、內存、數據庫等數據發往server端或proxy端;

另外,zabbix serverproxyagent都有本身的配置文件以及log文件,重要的參數須要在這裏配置,後面會詳細說明。

一個監控系統運行的大概的流程是這樣的:

agentd須要安裝到被監控的主機上,它負責按期收集各項數據,併發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix web根據數據在前端進行展示和繪圖。這裏agentd收集數據分爲主動和被動兩種模式:

主動:agent請求server獲取主動的監控項列表,並主動將監控項內須要檢測的數據提交給server/proxy

被動:serveragent請求獲取監控項的數據,agent返回數據。

zabbix經常使用的監控架構平臺

1server-agentd模式:

這個是最簡單的架構了,經常使用於監控主機比較少的狀況下。

2server-proxy-agentd模式:

這個經常使用於比較多的機器,使用proxy進行分佈式監控,有效的減輕server端的壓力。

zabbix的系統架構:

圖片1.png

Zabbix是一個基於Web界面的提供分佈式系統監視以及網絡監視功能的企業級開源解決方案。藉助Zabbix,能夠很輕鬆地減輕運維人員們繁重的服務器管理任務,實現業務系統的持續運行。下面會逐步介紹Zabbix分佈式監控系統的部署及使用

配置好IPDNS 、網關,確保使用遠程鏈接工具可以鏈接服務器

zabbix監控服務器  #zabbix的服務端(若要監控本機,則須要配置本機的zabbix agent)

Zabbix agent被監控主機#zabbix的客戶端(被監控端,須要配置Zabbix agent

2、Zabbix部署前的LNMP環境的搭建過程

安裝編譯工具及庫文件

yum -y install make apr* autoconf automake curl-devel gcc gcc-c++  openssl openssl-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng*  libtool* libxml2 libxml2-devel patch libcurl-devel bzip2-devel freetype-devel

截圖02.png

一、系統環境:centos7.2 x86_64

截圖02.png

由於centos7.2默認安裝了mariadb-libs,因此先要卸載掉

查看是否安裝mariadb

#rpm -qa | grep mariadb

卸載mariadb

rpm -e --nodeps mariadb-libs

安裝nginx

解壓zlib

[root@localhost src]# tar zxf zlib-1.2.8.tar.gz 
[root@localhost src]# tar zxf pcre-8.39.tar.gz

不須要編譯,只須要解壓就行

[root@localhost src]# groupadd  www
[root@localhost src]# useradd -g www www -s /sbin/nologin

下載nginx的源碼包:http://nginx.org/download

解壓源碼包:

[root@localhost src]# tar zxf nginx-1.10.2.tar.gz 
[root@localhost src]# cd nginx-1.10.2/
[root@localhost nginx-1.10.2]# ./configure --prefix=/usr/local/nginx1.10 --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module  --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/src/pcre-8.39 --with-zlib=/usr/src/zlib-1.2.8 --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www

截圖03.png

[root@localhost nginx-1.10.2]# make && make install 
[root@localhost nginx-1.10.2]#  ln -s /usr/local/nginx1.10/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.10.2]# nginx
[root@localhost nginx-1.10.2]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      46471/nginx: master
[root@mysqla ~]# firewall-cmd --permanent --add-port=80/tcp
[root@mysqla ~]# firewall-cmd --reload

啓動後能夠再瀏覽器中打開頁面,會顯示nginx默認頁面。

截圖04.png

安裝php

截圖05.png

[root@localhost libmcrypt-2.5.7]# ln -s /usr/local/mysql/lib/libmysqlclient.so.20.3.0 /usr/local/mysql/lib/libmysqlclient_r.so

截圖06.png

[root@localhost php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-config-file-path=/etc  --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/usr/local/mysql/mysql.sock --with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl
[root@localhost php-5.6.27]# make && make install 
[root@localhost php-5.6.27]# cp php.ini-production  /etc/php.ini

找到:
;date.timezone = 
修改成:
date.timezone = PRC #設置時區

截圖07.png

找到:
expose_php = On 
修改成:
expose_php = Off #禁止顯示php版本的信息

截圖08.png

找到:
short_open_tag = Off 
修改成:

short_open_tag = On //支持php短標籤

截圖09.png

找到:

post_max_size = 8M

修改成:

post_max_size = 16M  //上傳文件大小

截圖10.png

找到:

max_execution_time = 30

修改成:

max_execution_time = 300  //php腳本最大執行時間

截圖11.png

找到:

max_input_time = 60

修改成:

max_input_time = 300  //以秒爲單位對經過POSTGET以及PUT方式接收數據時間進行限制

截圖12.png

always_populate_raw_post_data = -1

截圖13.png

mbstring.func_overload = 0

截圖14.png

[root@localhost php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@localhost php-5.6.27]# chmod +x /etc/init.d/php-fpm 
[root@localhost php-5.6.27]# chkconfig --add php-fpm
[root@localhost php-5.6.27]# chkconfig php-fpm on

提供php-fpm配置文件並編輯:

[root@localhost php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf

pid = run/php-fpm.pid

截圖15.png

user = www

group = www

listen =127.0.0.1:9000

pm.max_children = 300

pm.start_servers = 10

pm.min_spare_servers = 10

pm.max_spare_servers =50

截圖16.png

啓動php-fpm服務:

[root@localhost php-5.6.27]# service  php-fpm start
Starting php-fpm  done
[root@localhost php-5.6.27]# netstat -anpt | grep php-fpm
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      49041/php-fpm: mast

配置nginx支持php

[root@localhost conf]# cat /usr/local/nginx1.10/conf/nginx.conf

user  www www;

worker_processes  4;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {

use epoll;

    worker_connections  1024;

}

http {

include       mime.types;

    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

    #                  '$status $body_bytes_sent "$http_referer" '

    #                  '"$http_user_agent" "$http_x_forwarded_for"';

 

    #access_log  logs/access.log  main;

sendfile        on;

    #tcp_nopush     on;

    #keepalive_timeout  0;

    keepalive_timeout  65;

    #gzip  on;

server {

listen       80;

        server_name  localhost;

charset utf-8;

        #access_log  logs/host.access.log  main;

location / {

root   html;

index  index.php index.html index.htm;

        }

location ~ \.php$ {

root html;

            fastcgi_pass 127.0.0.1:9000;

            fastcgi_index index.php;

include fastcgi.conf;

        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html

        #

        error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

        }

location /status {

stub_status on;

        }

   }

}

[root@localhost conf]# nginx -t
nginx: the configuration file /usr/local/nginx1.10/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx1.10/conf/nginx.conf test is successful

測試LNMP

進入nginx默認的網頁根目錄,建立.php的測試頁

[root@mysqla ~]# cat /usr/local/nginx1.10/html/test1.php 
<?php
phpinfo()
?>

訪問結果

截圖17.png

NMP部署完畢。 數據mysql已經提早配置好  博客也有安裝mysql5.7文檔

3、監控系統Zabbix-3.2.1的安裝

zabbix-server端的操做

zabbix服務器端要提早安裝好LNMP環境(mysqlnginxphp5的安裝目錄均是/usr/local

建立Zabbix運行的用戶:

[root@localhost conf]# groupadd zabbix
[root@localhost conf]# useradd -g zabbix zabbix

安裝libcurlnet-snmp:

[root@localhost src]# yum -y install net-snmp* net-snmp-develcurl-develjava-1.8.0-openjdk java-1.8.0-openjdk-devel  OpenIPMI-devel*  libssh2-devel*  java*

安裝fping

[root@localhost src]# tar zxf fping-3.12.tar.gz 
[root@localhost fping-3.12]# ./configure && make && make install
[root@localhost fping-3.12]# chown root:zabbix /usr/local/sbin/fping
[root@localhost fping-3.12]# chmod 4710 /usr/local/sbin/fping

安裝Zabbix Server:

root@localhost src]# tar zxf zabbix-3.2.1.tar.gz 
[root@localhost src]# cd zabbix-3.2.1/
[root@localhost zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi

截圖18.png

注:編譯時最好帶上--enable-java這個參數,方便後續監控tomcat程序所用。

--with-ssh2 是不須要在客戶端服務器上面安裝Zabbix agent,若是須要使用ssh檢查,須要在編譯的時候加上這項,最低須要libssh2 1.0.0版本,須要安裝ssh開發包

--with-openipmi用戶能夠利用 IPMI 監視服務器的物理特徵,如溫度、電壓、電扇工做狀態、電源供應等

若是添加了--enable-proxy, 那麼會生成getsender兩條命令. 以下, 用於接收agent發生過來的信息, 同時發送給server.

[root@localhost zabbix-3.2.1]# make && make install

添加系統軟鏈接

[root@localhost zabbix-3.2.1]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
[root@localhost zabbix-3.2.1]#  ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/

Zabbix Server配置與啓動
建立Zabbix數據庫和MySQL用戶:

create database zabbix character set utf8;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

截圖19.png

導入Zabbix初始數據:

切換到zabbix的解壓目錄下

[root@localhost zabbix-3.2.1]# cd database/mysql/
[root@localhost mysql]# pwd
/usr/src/zabbix-3.2.1/database/mysql
[root@localhost mysql]# 
[root@localhost mysql]# ls
data.sql  images.sql  schema.sql

進行zabbix初始數據導入

編輯/usr/local/zabbix/etc/zabbix_server.conf:

LogFile=/usr/local/zabbix/logs/zabbix_server.log

截圖20.png

PidFile=/usr/local/zabbix/logs/zabbix_server.pid

截圖21.png

DBHost=localhost

截圖22.png

DBName=zabbix

截圖23.png

DBUser=zabbix

截圖24.png

DBPassword=zabbix

截圖25.png

DBPort=3306

截圖26.png

FpingLocation=/usr/local/sbin/fping

截圖27.png

[root@localhost ~]# mkdir -p /usr/local/zabbix/logs
[root@localhost ~]# chown -R zabbix:zabbix /usr/local/zabbix/

啓動Zabbix Server:

[root@localhost ~]# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
/usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

解決方法:

ld.so.conf中加入/usr/local/mysql/lib

[root@mysqla zabbix-3.2.1]# cat /etc/ld.so.conf

截圖28.png

[root@mysqla zabbix-3.2.1]# ldconfig

再次執行zabbix_server啓動

root@localhost ~]# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
[root@localhost ~]#  netstat -anpt |grep zabbix_server
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      6311/zabbix_server

添加開機啓動腳本

[root@localhost src]# cd zabbix-3.2.1/
[root@localhost zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server
[root@localhost zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd
[root@localhost zabbix-3.2.1]# chmod +x /etc/rc.d/init.d/zabbix_server 
[root@localhost zabbix-3.2.1]# chmod +x /etc/rc.d/init.d/zabbix_agentd 
[root@localhost zabbix-3.2.1]# chkconfig --add zabbix_server
[root@localhost zabbix-3.2.1]# chkconfig --add zabbix_agentd
[root@localhost zabbix-3.2.1]#  chkconfig zabbix_server on
[root@localhost zabbix-3.2.1]# chkconfig zabbix_agentd on

修改zabbix開機啓動腳本中的zabbix安裝目錄

vi /etc/rc.d/init.d/zabbix_server #編輯服務端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安裝目錄

截圖30.png

PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid    #pid文件路徑

截圖29.png

vi /etc/rc.d/init.d/zabbix_agentd #編輯客戶端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安裝目錄

PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid  #pid文件路徑

[root@localhost zabbix-3.2.1]# systemctl daemon-reload 
[root@mysqla zabbix-3.2.1]# /etc/init.d/zabbix_server stop
Stopping zabbix_server (via systemctl):                    [  OK  ]
[root@mysqla zabbix-3.2.1]# netstat -anpt | grep zabbix
[root@mysqla zabbix-3.2.1]# /etc/init.d/zabbix_server start
Starting zabbix_server (via systemctl):                    [  OK  ]
設置防火牆規則
[root@mysqla zabbix-3.2.1]# firewall-cmd --permanent --add-port=10051/tcp 
[root@mysqla zabbix-3.2.1]# firewall-cmd --reload

配置zabbix web頁面

在安裝目錄將frontends拷貝到指定的web root:

[root@localhost zabbix-3.2.1]# cd /usr/src/zabbix-3.2.1/
[root@localhost zabbix-3.2.1]# cp -r frontends/php/ /usr/local/nginx1.10/html/zabbix
[root@localhost zabbix-3.2.1]#  chown  -R  www:www  /usr/local/nginx1.10/html/zabbix/

注:/usr/local/nginx/htmlNginx默認站點目錄 wwwNginx運行帳戶

:PHP須要至少開啓擴展:

gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql
以下,查看是否包括了上面所提到的擴展模塊

[root@localhost zabbix-3.2.1]#  /usr/local/php5.6/bin/php -m

截圖31.png

安裝web

訪問Web界面http://192.168.0.3/zabbix,進行相關web配置,配置完成後使用默認用戶admin(密碼:zabbix)登錄便可

進入ZABBIX WEB安裝畫面

截圖32.png

截圖33.png

進入ZABBIX檢測畫面

截圖34.png

點擊Next step 一下步進行zabbix server 細節的設置  這一步能夠默認

點擊Finish 完成 

使用Admin  用默認密碼 zabbix 登陸

截圖36.png

截圖37.png

至此 ZABBIX的基礎安裝完成

登錄zabbix後,點擊右上角的用戶圖標,將語言設置爲中文

截圖38.png

解決zabbix繪圖中出現中文亂碼問題:

a.windows下控制面板->字體->選擇一種中文字庫例如楷體

把它拷貝到zabbixweb端的fonts目錄下例如:/usr/local/nginx1.10/html/zabbix/fonts/,而且把TTF後綴改成ttf

截圖39.png

而且將以前的字體文件DejaVuSans.ttf移動到別處

c.而後,接着修改代碼include/defines.inc.php文件中的字體配置,將裏面關於字體設置從DejaVuSans替換成simkai  

vi替換技巧:%s/DejaVuSans/simkai
其中:simkai爲字庫名字,不包含ttf後綴

其中:simkai爲字庫名字,不包含ttf後綴

# cd/usr/local/nginx1.10/html/zabbix

# vi include/defines.inc.php

vi編輯器的末行模式下輸入%s/DejaVuSans/simkai

這樣,修改後,zabbix監控圖形中的中文字就不會出現亂碼了

4、zabbix客戶端的安裝

既然要監控咱們就要添加要監控的主機,在添加主機以前咱們首先要在被檢測主機上面安裝agent,安裝agent比較簡單,咱們也是按照安裝server的流程,下載軟件包,在編譯的時候,咱們只選擇agent

192.168.0.6做爲zabbix的被監控端,提供webmysql應用

安裝Zabbix,配置Zabbix agent:

[root@localhost src]# tar zxf zabbix-3.2.1.tar.gz 
[root@localhost src]# cd zabbix-3.2.1/
[root@localhost zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@localhost zabbix-3.2.1]# make && make install 
[root@localhost zabbix-3.2.1]# groupadd zabbix
[root@localhost zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@localhost zabbix-3.2.1]# mkdir -p /usr/local/zabbix/logs
[root@localhost zabbix-3.2.1]# useradd -g zabbix zabbix
[root@localhost zabbix-3.2.1]# chown -R zabbix:zabbix /usr/local/zabbix/

配置開機自動啓動:

[root@localhost zabbix-3.2.1]# chkconfig --add zabbix_agentd
[root@localhost zabbix-3.2.1]# chkconfig zabbix_agentd  on

修改zabbix開機啓動腳本中的zabbix安裝目錄

vi /etc/rc.d/init.d/zabbix_agentd #編輯客戶端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安裝目錄

截圖40.png

PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid  #pid文件路徑

[root@localhost zabbix-3.2.1]# systemctl daemon-reload

編輯zabbix_agentd.conf

[root@server1 zabbix-3.2.1]# vi /usr/local/zabbix/etc/zabbix_agentd.conf

內容以下:

PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid

截圖41.png

LogFile=/usr/local/zabbix/logs/zabbix_agentd.log

截圖44.png

Server=192.168.0.3

截圖42.png

ListenPort=10050


截圖43.png

ServerActive=192.168.0.3

截圖45.png


Hostname=192.168.0.6


截圖46.png

Timeout=15

截圖47.png

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

截圖48.png

注:

其中ServerServerActive都指定zabbixserverIP地址,不一樣的是,前者是被動後者是主動。也就是說Server這個配置是用來容許192.168.0.3這個ip來我這取數據。而serverActive192.168.0.3的意思是,客戶端主動提交數據給他。

Hostname=XXX,這個定義的名字必須和web頁面裏面host的名字同樣。

啓動zabbix_agentd:

啓動zabbix成功 查看是否有服務 若是沒有進程  輸入如下網址解決

http://www.mamicode.com/info-detail-1790201.html

到此,zabbix3.2.1監控系統的基本環境安裝完成

實現zabbix添加監測項

添加對Linux主機的監控

在瀏覽器中打開:http://192.168.0.3/zabbix

登陸zabbix,先在配置」-「主機裏添加主機監控,監控os資源:內存,cpuio,負載,帶寬等.

登陸zabbix,先在配置」-「主機單擊建立主機

截圖49.png

截圖00.png

注意:下圖中的主機名稱要和zabbix_agentd.conf文件中設置的Hostname後面的名稱一致!

主機名稱:192.168.0.6

羣組:Linux servers

agent代理程序接口ip192.168.0.6

已啓用:勾選

其它選項默認便可

切換到模板

截圖50.png

配置過一段時間後,觀察下監控圖效果出來了沒:

截圖51.png

後期更新mysql數據庫監控,網卡狀況 短信以及郵箱報警!

相關文章
相關標籤/搜索