一步到位實現zabbix安裝

簡介

zabbix是一個基于WEB界面的提供分布式網絡監視功能的企業級的開源解決方案。相對于cactinagios而言,zabbix最大的特點是分布式監控,自動發現,自定義監控項目。

一、監控系統所具備的四個要素

1、數據采集

      zabbix采集數據的手段有SNMPzabbixAgent、IPMI agentweb monitoring、database monitoring,Internal check、calculated monitoring、custom command monitoring、ping或端口檢查等。

2、數據存儲

      zabbix將數據存儲在RDBMS中。

3、數據展示

      zabbix使用php開發的程序進行繪圖。

4、事件報警

      zabbix通知機制有:E-mail、SMSJabber、Chat message、Command execution。

二、Zabbix組件概述

       zabbix-serve:負責接收agent發送的報告信息,所有配置、統計數據及操作數據都有此組件組織進行;

      database:用于存儲配置信息和zabbix收集的數據

      web-interfacezabbixGUI接口,通常與server運行在同一臺主機上;

      proxy:可選組件,常用于分布式監控環境中,代替server收集其他被監控端的監控數據,并統一發送到server端。

      Agent:部署在被監控主機上,負責收集本地數據發往serverproxy端。

 

三、zabbix的術語

      主機(host):要監控的網絡設備統稱;

      主機組(host group):主機的邏輯容器,可以包含主機和模板;

      監控項(item):一個特定監控指標和對應的數據,每個itemkey進行標示;

      trigger(觸發器):一個表達式,用于評估某監控對象的某個特定的item所接收的數據是否在合理范圍內,即閾值,狀態分為“OK”“problem”。

      事件(event):發生的一個值得關注的事情,如:觸發器的狀態轉變,新的agent上線或自動發現等操作。

      動作:對于指定的event發生以后所采定義的處理方法,如發送通知或報警;

      報警升級(escalation):發送警告信息的方案,如果在定義內的警告次數之內沒有處理,將向上級發送報警短信;

      媒介(media):發送通知的手段,如EmailSMSJabber等。

      通知(notification):通過媒介向用戶發送某事件的信息。

四、一鍵安裝腳本

   說明:此腳本只適用與RHEL6.x系列;Nginx版本為1.6最新穩定版;PHP為5.4最新版;Mysql為5.5最新穩定版;Zabbix暫時為2.4最新版。

   只要你能連上網絡,只要你會運行腳本。那你就會完成zabbix的部署安裝了,內嵌yum源及LNMP及zabbix的下載安裝??!真正的實現一步到位?。?/p>

#!/bin/bash
# install Nginx 1.6.2 + mysql5.5.x + PHP-FPM 5.4.x + Zabbix 2.4.4 automatically.
# Tested on CentOS 6.5
##############################################
# 變量
##############################################
err_echo(){
    echo -e "\e[91m[Error]: $1 33[0m"
    exit 1
}
 
info_echo(){
    echo -e "\e[92m[Info]: $1 33[0m"
}
 
warn_echo(){
    echo -e "\e[93m[Warning]: $1 33[0m"
}
 
check_exit(){
    if [ $? -ne 0 ]; then
        err_echo "$1"
        exit1
    fi
}
  
##############################################
# check
##############################################
if [ $EUID -ne 0 ]; then
    err_echo "please run this script as root user."
    exit 1
fi
if [ "$(awk '{if ( $3 >= 6.0 ) print "CentOS 6.x"}' /etc/redhat-release 2>/dev/null)" != "CentOS 6.x" ];then
    err_echo "This script is used for RHEL/CentOS 6.x only."
fi
##############################################
# Useradd deploy nginx程序運行賬號
##############################################
info_echo "Useradd deploy"
useradd deploy
##############################################
# yum repo
##############################################
info_echo "配置yum源......"
if [ ! -f LNMP+zabbix.repo ]; then
cat> /etc/yum.repos.d/LNMP+zabbix.repo <<'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
 
[webtatic]
name=Webtatic Repository EL6 - $basearch
#baseurl=http://repo.webtatic.com/yum/el6/$basearch/
mirrorlist=http://mirror.webtatic.com/yum/el6/$basearch/mirrorlist
failovermethod=priority
enabled=0
gpgcheck=0
[epel] 
name=Extra Packages for Enterprise Linux 6 - $basearch 
baseurl=http://mirrors.aliyun.com/epel/6/$basearch 
http://mirrors.aliyuncs.com/epel/6/$basearch 
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch 
failovermethod=priority 
enabled=1 
gpgcheck=0
[remi]
name=Les RPM de remi pour Enterprise Linux 6 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror
enabled=1
gpgcheck=0
[zabbix]
name=Zabbix Official Repository-$basearch
baseurl=http://repo.zabbix.com/zabbix/2.4/rhel/6/$basearch/
enabled=1
gpgcheck=0
 
[zabbix-non-supported]
name=Zabbix Official Repository non-supported-$basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/6/$basearch/
enabled=1
gpgcheck=0
EOF
fi
##############################################
# Install nginx+Mysql+PHP+zabbix
##############################################
info_echo "Install nginx+Mysql+PHP+zabbix......"
yum -y install nginx php php-fpm php-cli php-common php-gd php-mbstring php-mcrypt php-mysql php-pdo php-devel php-imagick php-xmlrpc php-xml php-bcmath php-dba php-enchant php-yaf  mysql mysql-server zabbix zabbix-get zabbix-agent zabbix-server-mysql zabbix-web-mysql zabbix-server
check_exit "Failed to install Nginx/Mysql/PHP/Zabbix!"
 
#########################################
# Nginx 
#########################################
info_echo "Nginx 配置文件更新 ...."
if [ -f /etc/nginx/nginx.conf ]; then
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
cat> /etc/nginx/nginx.conf <<'EOF'
user deploy;
worker_processes 2;
pid /var/run/nginx.pid;
worker_rlimit_nofile 65535;
events {
    worker_connections  65535;
    use epoll;
}
http {
   ##
    # Basic Settings
   ##
     sendfile on;
     tcp_nopush on;
     tcp_nodelay on;
      
     keepalive_timeout 65;
     types_hash_max_size 2048;
     server_tokens off;
    
     client_header_buffer_size 4k;
     open_file_cache max=65535 inactive=60s;
     open_file_cache_valid 80s;
     open_file_cache_min_uses 1;
     server_names_hash_bucket_size 64;
     server_name_in_redirect off;
     include /etc/nginx/mime.types;
     default_type application/octet-stream;
   ##
    # Logging Settings
   ##
     access_log /var/log/nginx/access.log;
     error_log /var/log/nginx/error.log;
   
  ##
   # Gzip Settings
  ##
     gzip on;
     gzip_disable "msie6";
     gzip_min_length 1k;
     gzip_buffers 4 16k;
     gzip_comp_level 2;
     gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
   ##
   # nginx-naxsi config
   ##
      # Uncomment it if you installed nginx-naxsi
      ##
      #include /etc/nginx/naxsi_core.rules;
    ##
    # nginx-passenger config
    ##
    # Uncomment it if you installed nginx-passenger
    ##
     
    #passenger_root /usr;
    #passenger_ruby /usr/bin/ruby;
    ##
    # Virtual Host Configs
    ##
        log_format  main  '$server_name $remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for" '
                        '$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time';
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}
EOF
fi
sed -i "/worker_processes/cworker_processes $( grep "processor" /proc/cpuinfo| wc -l );" /etc/nginx/nginx.conf
info_echo "zabbix 配置文件添加"
cat> /etc/nginx/conf.d/zabbix.conf <<'EOF'
server{
   listen       80;
   server_name  _;
 
   index index.php;
   root /data/web/zabbix;
 
   location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
       expires 30d;
   }
 
   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;
   }
}
EOF
mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
/etc/init.d/nginx restart
 
 
#########################################
# Zabbix 
#########################################
info_echo "Downloading zabbix Web...."
info_echo "創建網站目錄..."
mkdir -p /data/web/zabbix
info_echo "Downloading..."
if [ ! -f /tmp/zabbix.tar.gz ]; then
   cd /tmp && wget -O zabbix.tar.gz 'http://sourceforge.net/projects/zabbix/files/latest/download?source=files'
fi
info_echo "解壓安裝文件..."
cd /tmp && tar -zxvf /tmp/zabbix.tar.gz
check_exit "failed to extract zabbix frontend"
ZABBIX_DIR=`ls /tmp/|grep zabbix-`
mv /tmp/${ZABBIX_DIR}/frontends/php/* /data/web/zabbix/
chown -R deploy.deploy /data/web/zabbix
 
 
##############################################
# Database
##############################################
info_echo "Mysql配置文件更新..."
sed -i '/^socket/i\port            = 3306' /etc/my.cnf
sed -i '/^socket/a\skip-external-locking\nkey_buffer_size = 256M\nmax_allowed_packet = 1M\ntable_open_cache = 256\nsort_buffer_size = 1M\nread_buffer_size = 1M\nread_rnd_buffer_size = 4M\nmyisam_sort_buffer_size = 64M\nthread_cache_size = 8\nquery_cache_size= 16M\nthread_concurrency = 4\ncharacter-set-server=utf8\ninnodb_file_per_table=1' /etc/my.cnf
info_echo "Restart mysql ..."
/etc/init.d/mysqld start
info_echo "Create Databases..." 
mysql -e 'CREATE DATABASE `zabbix` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;'
mysql -e "GRANT ALL PRIVILEGES on *.* to zabbix@'localhost' IDENTIFIED BY 'zabbix';"
mysql -e "flush privileges"
info_echo "配置zabbix的數據庫項"
sed -i '/DBPassword=/a\DBPassword=zabbix' /etc/zabbix/zabbix_server.conf
info_echo "importing schema.sql"
mysql -uzabbix -pzabbix zabbix < $(rpm -ql zabbix-server-mysql|grep schema.sql)
check_exit "failed to import schema.sql"
 
info_echo "importing images.sql"
mysql -uzabbix -pzabbix zabbix < $(rpm -ql zabbix-server-mysql| grep images.sql)
check_exit "failed to import images.sql"
 
info_echo "importing data.sql"
mysql -uzabbix -pzabbix zabbix < $(rpm -ql zabbix-server-mysql|grep data.sql)
check_exit "failed to import data.sql"
 
 
#########################################
# PHP-FPM
#########################################
info_echo "更新/etc/php.ini,www.conf ..."
sed -i '/^;default_charset/a\default_charset = "UTF-8"' /etc/php.ini
sed -i '/^expose_php/cexpose_php = Off' /etc/php.ini
sed -i '/^max_execution_time/cmax_execution_time = 300' /etc/php.ini
sed -i '/^max_input_time/cmax_input_time = 300' /etc/php.ini
sed -i '/^memory_limit/cmemory_limit = 256M'  /etc/php.ini
sed -i '/^post_max_size/cpost_max_size = 32M' /etc/php.ini
sed -i '/^upload_max_filesize/cupload_max_filesize = 300M' /etc/php.ini
sed -i '/^max_file_uploads/cmax_file_uploads = 30' /etc/php.ini
sed -i '/^;date.timezone/cdate.timezone = "PRC"' /etc/php.ini
sed -i 's/apache/deploy/g' /etc/php-fpm.d/www.conf 
chown deploy.deploy -R /var/lib/php
info_echo "Checking php-fpm configuration file..."
/etc/init.d/php-fpm configtest
check_exit "PHP-FPM configuration syntax error"
 
info_echo "Restart PHP-FPM ..."
/etc/init.d/php-fpm restart
 
info_echo "Restart Zabbix Server ..."
/etc/init.d/zabbix-server restart
 
info_echo "Restart Zabbix Agent ..."
/etc/init.d/zabbix-agent restart
 
#########################################
# Chkconfig
#########################################
chkconfig nginx on
chkconfig php-fpm on
chkconfig mysql on
chkconfig zabbix-agent on
chkconfig zabbix-server on

五、配置WEB頁面

       地址:IP地址

CentOS6.x一鍵部署安裝zabbix

CentOS6.x一鍵部署安裝zabbix

CentOS6.x一鍵部署安裝zabbix

CentOS6.x一鍵部署安裝zabbix

CentOS6.x一鍵部署安裝zabbix

CentOS6.x一鍵部署安裝zabbix

至此zabbix一鍵部署安裝就完成了,請多提意見!謝謝

原創文章,作者:ZhaoYong,如若轉載,請注明出處:http://www.www58058.com/647

(0)
ZhaoYongZhaoYong
上一篇 2015-03-02
下一篇 2015-03-03

相關推薦

  • bash特性及用戶和組的管理相關練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意同一個用戶登錄多次,則只顯示一次即可: 2、取出最后登錄到系統的用戶的相關信息: 3、取出當前系統上被用戶當做默認shell最多的那個shell: 4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxuser.txt文件中: 5、取出當前主機的IP地址: …

    2017-10-16
  • linux運維

    linux運維大綱,學習路線圖

    Linux干貨 2017-10-21
  • httpd服務歸納:淺談I/O模型

    1. 四種理論的I/O模型      1) 調用者(服務進程):         阻塞:  進程發起I/O調用,如果調用為完成,進程被掛起休眠,不能再執行其他功能    …

    Linux干貨 2015-05-27
  • 網絡25期第一周作業

    一、計算機硬件的組成及功能 1、控制器       控制器負責從存儲器中取出指令,并對指令進行譯碼??刂破髦饕怯芍噶罴拇嫫?、譯碼器程序計數器、操作控制器等組成。 2、運算器      運算器又稱算數邏輯單元,是計算機進行算術計算和邏輯計算的部件。 3、存儲器 &nbs…

    Linux干貨 2016-12-06
  • Linux文件管理類命令相關

    Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 1)、查看文件命令: (1)ls命令: list,列出目錄下的內容 語法: ls [OPTION]… [FILE]… 常用選項: -a: 顯示所有文件,包括隱藏文件; -A:顯示除.和..之外的所有文件; -l: –long, 長格式列表,即顯示文件的詳細屬性信息; -h, –huma…

    Linux干貨 2016-11-06
  • MySQL存儲過程中IN、OUT、INOUT參數使用

    MySQL存儲過程中IN、OUT、INOUT參數使用 MySQL存儲過程的參數用在存儲過程的定義,共有三種參數類型,IN、OUT、INOUT形式如:CREATE PROCEDURE([IN|OUT|INOUT] 參數名 數據類型,…) IN 輸入參數:表示該參數的值必須在調用存儲過程時指定,在存儲過程中修改該參數的值不能被返回,為默認值。| 意思…

    Linux干貨 2017-05-08

評論列表(2條)

  • xuyilin
    xuyilin 2015-03-05 09:58

    最后chkconfig mysql on少個d 最小化安裝需要安裝下wget 其他ok 速度很快。

    • ZhaoYong
      ZhaoYong 2015-03-09 14:58

      @xuyilin這個平臺非管理員,文章一旦提交就暫時無法修改了,謝謝你的提示!

欧美性久久久久