1、 zabbix簡介:php
zabbix是徹底開源的工具,整合了cacti和nagios等特性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 ),IPMI,JMX,SSH,TELNET;
自定義的檢測;自定義收集數據的頻率;
服務器/代理和客戶端模式;
靈活的觸發器;能夠定義很是靈活的問題閾值,稱爲觸發器;
高可定製的報警;發送通知,可定製的報警升級,收件人,媒體類型。
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重要組件說明:
1)zabbix server:負責接收agent發送的報告信息的核心組件,全部配置、統計數據及操做數據都由它組織進行;
2)database storage:專用於存儲全部配置信息,以及由zabbix收集的數據;
3)web interface:zabbix的GUI接口;
4)proxy:可選組件,經常使用於監控節點不少的分佈式環境中,代理server收集部分數據轉發到server,能夠減輕server的壓力;
5)agent:部署在被監控的主機上,負責收集主機本地數據如cpu、內存、數據庫等數據發往server端或proxy端;
另外,zabbix server、proxy、agent都有本身的配置文件以及log文件,重要的參數須要在這裏配置,後面會詳細說明。
一個監控系統運行的大概的流程是這樣的:
agentd須要安裝到被監控的主機上,它負責按期收集各項數據,併發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix web根據數據在前端進行展示和繪圖。這裏agentd收集數據分爲主動和被動兩種模式:
主動:agent請求server獲取主動的監控項列表,並主動將監控項內須要檢測的數據提交給server/proxy
被動:server向agent請求獲取監控項的數據,agent返回數據。
zabbix經常使用的監控架構平臺
1、server-agentd模式:
這個是最簡單的架構了,經常使用於監控主機比較少的狀況下。
2、server-proxy-agentd模式:
這個經常使用於比較多的機器,使用proxy進行分佈式監控,有效的減輕server端的壓力。
zabbix的系統架構:
Zabbix是一個基於Web界面的提供分佈式系統監視以及網絡監視功能的企業級開源解決方案。藉助Zabbix,能夠很輕鬆地減輕運維人員們繁重的服務器管理任務,實現業務系統的持續運行。下面會逐步介紹Zabbix分佈式監控系統的部署及使用
配置好IP、DNS 、網關,確保使用遠程鏈接工具可以鏈接服務器
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
一、系統環境:centos7.2 x86_64
由於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
[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默認頁面。
安裝php
[root@localhost libmcrypt-2.5.7]# ln -s /usr/local/mysql/lib/libmysqlclient.so.20.3.0 /usr/local/mysql/lib/libmysqlclient_r.so
[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 #設置時區
找到:
expose_php = On
修改成:
expose_php = Off #禁止顯示php版本的信息
找到:
short_open_tag = Off
修改成:
short_open_tag = On //支持php短標籤
找到:
post_max_size = 8M
修改成:
post_max_size = 16M //上傳文件大小
找到:
max_execution_time = 30
修改成:
max_execution_time = 300 //php腳本最大執行時間
找到:
max_input_time = 60
修改成:
max_input_time = 300 //以秒爲單位對經過POST、GET以及PUT方式接收數據時間進行限制
always_populate_raw_post_data = -1
mbstring.func_overload = 0
[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
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
啓動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() ?>
訪問結果
NMP部署完畢。 數據mysql已經提早配置好 博客也有安裝mysql5.7文檔
3、監控系統Zabbix-3.2.1的安裝
zabbix-server端的操做
zabbix服務器端要提早安裝好LNMP環境(mysql,nginx,php5的安裝目錄均是/usr/local)
建立Zabbix運行的用戶:
[root@localhost conf]# groupadd zabbix [root@localhost conf]# useradd -g zabbix zabbix
安裝libcurl和net-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
注:編譯時最好帶上--enable-java這個參數,方便後續監控tomcat程序所用。
--with-ssh2 是不須要在客戶端服務器上面安裝Zabbix agent,若是須要使用ssh檢查,須要在編譯的時候加上這項,最低須要libssh2 1.0.0版本,須要安裝ssh開發包
--with-openipmi用戶能夠利用 IPMI 監視服務器的物理特徵,如溫度、電壓、電扇工做狀態、電源供應等。
若是添加了--enable-proxy, 那麼會生成get和sender兩條命令. 以下, 用於接收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';
導入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
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
FpingLocation=/usr/local/sbin/fping
[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
[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安裝目錄
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid #pid文件路徑
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/html爲Nginx默認站點目錄 www爲Nginx運行帳戶
注: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
安裝web
訪問Web界面http://192.168.0.3/zabbix,進行相關web配置,配置完成後使用默認用戶admin(密碼:zabbix)登錄便可
進入ZABBIX WEB安裝畫面
進入ZABBIX檢測畫面
點擊Next step 一下步進行zabbix server 細節的設置 這一步能夠默認
點擊Finish 完成
使用Admin 用默認密碼 zabbix 登陸
至此 ZABBIX的基礎安裝完成
登錄zabbix後,點擊右上角的「用戶」圖標,將語言設置爲「中文」:
解決zabbix繪圖中出現中文亂碼問題:
a.從windows下控制面板->字體->選擇一種中文字庫例如「楷體」
把它拷貝到zabbix的web端的fonts目錄下例如:/usr/local/nginx1.10/html/zabbix/fonts/,而且把TTF後綴改成ttf
而且將以前的字體文件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的被監控端,提供web和mysql應用
安裝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安裝目錄
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
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.0.3
ListenPort=10050
ServerActive=192.168.0.3
Hostname=192.168.0.6
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
注:
其中Server和ServerActive都指定zabbixserver的IP地址,不一樣的是,前者是被動後者是主動。也就是說Server這個配置是用來容許192.168.0.3這個ip來我這取數據。而serverActive的192.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資源:內存,cpu,io,負載,帶寬等.
登陸zabbix,先在「配置」-「主機」裏單擊」建立主機」
注意:下圖中的「主機名稱」要和zabbix_agentd.conf文件中設置的「Hostname」後面的名稱一致!
主機名稱:192.168.0.6
羣組:Linux servers
agent代理程序接口ip:192.168.0.6
已啓用:勾選
其它選項默認便可
切換到模板
配置過一段時間後,觀察下監控圖效果出來了沒:
後期更新mysql數據庫監控,網卡狀況 短信以及郵箱報警!