设为首页 收藏本站
查看: 1111|回复: 0

[经验分享] CentOS6.x一键部署安装zabbix

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2016-1-28 09:09:22 | 显示全部楼层 |阅读模式
简介

zabbix是一个基于WEB界面的提供分布式网络监视功能的企业级的开源解决方案。相对于cacti和nagios而言,zabbix最大的特点是分布式监控,自动发现,自定义监控项目。
一、监控系统所具备的四个要素

1、数据采集

      zabbix采集数据的手段有SNMP、zabbix的Agent、IPMI agent、web monitoring、database monitoring,Internal check、calculated monitoring、custom command monitoring、ping或端口检查等。

2、数据存储

      zabbix将数据存储在RDBMS中。

3、数据展示

      zabbix使用php开发的程序进行绘图。

4、事件报警

      zabbix通知机制有:E-mail、SMS、Jabber、Chat message、Command execution。
二、Zabbix组件概述

       zabbix-serve:负责接收agent发送的报告信息,所有配置、统计数据及操作数据都有此组件组织进行;

      database:用于存储配置信息和zabbix收集的数据

      web-interface:zabbix的GUI接口,通常与server运行在同一台主机上;

      proxy:可选组件,常用于分布式监控环境中,代替server收集其他被监控端的监控数据,并统一发送到server端。

      Agent:部署在被监控主机上,负责收集本地数据发往server或proxy端。


三、zabbix的术语

      主机(host):要监控的网络设备统称;

      主机组(host group):主机的逻辑容器,可以包含主机和模板;

      监控项(item):一个特定监控指标和对应的数据,每个item由key进行标示;

      trigger(触发器):一个表达式,用于评估某监控对象的某个特定的item所接收的数据是否在合理范围内,即阈值,状态分为“OK”和“problem”。

      事件(event):发生的一个值得关注的事情,如:触发器的状态转变,新的agent上线或自动发现等操作。

      动作:对于指定的event发生以后所采定义的处理方法,如发送通知或报警;

      报警升级(escalation):发送警告信息的方案,如果在定义内的警告次数之内没有处理,将向上级发送报警短信;

      媒介(media):发送通知的手段,如Email、SMS、Jabber等。

      通知(notification):通过媒介向用户发送某事件的信息。
四、一键安装脚本

   说明:此脚本只适用与RHEL6.x系列;Nginx版本为1.6最新稳定版;PHP为5.4最新版;Mysql为5.5最新稳定版;Zabbix暂时为2.4最新版。

   只要你能连上网络,只要你会运行脚本。那你就会完成zabbix的部署安装了,内嵌yum源及LNMP及zabbix的下载安装!!真正的实现一步到位!!

切记关闭selinux
#!/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 mysqld on
chkconfig zabbix-agent on
chkconfig zabbix-server on
五、配置WEB页面
  地址:IP地址 1425205046620493.jpg
1425205253245171.jpg
1425205320763832.jpg
1425205361668117.jpg
1425205433464967.jpg
1425205459657285.jpg
至此zabbix一键部署安装就完成了,请多提意见!谢谢



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-170473-1-1.html 上篇帖子: Zabbix监控磁盘IO 下篇帖子: zabbix被监控主机项目中老师不支持,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表