vivion27 发表于 2019-1-19 12:54:10

基于LNMP环境安装Zabbix

  

  
Zabbix
  zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
  zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
  
搭建Zabbix监控环境
  要想搭建一个Zabbix的工作环境,需要从服务器入手。与服务器通信,管理员需要使用一个Zabbix前端界面,与Zabbix服务器和数据库进行通信。三个关键(界面、服务器和数据库)可以安装在同一台服务器上,但是如果你拥有一个更大更复杂的环境,将它们安装在不同的主机上也是一个选项。Zabbix服务器能够直接监控到同一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台Zabbix代理服务器。
  方案执行:
  搭建前提,用脚本一键搭建LNMP环境(centos7)
  # cat LNMP.sh
#!/bin/bash
RETVAL=0
NGINX="/usr/local/nginx/sbin/nginx"
PHP="/usr/local/php/sbin/php-fpm"
nginx_install(){
   #安装软件依赖包
   yum -y groupinstall "Development Tools" "Server PlatformDeveopment"
   yum -y install openssl-devel pcre-devel
   cd /usr/local/src
   yum install -y wget
   #下载nginx包
   wget http://nginx.org/download/nginx-1.12.0.tar.gz
   useradd nginx   #添加nginx运行的用户
   tar zxvf nginx-1.12.0.tar.gz
   cd nginx-1.12.0/
   #安装nginx包
   ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx--with-http_ssl_module --with-http_flv_module --with-http_stub_status_module--with-http_gzip_static_module --with-pcre
   #编译安装
   make && make install
   RETVAL=$?
   if [ $RETVAL -eq 0 ]
   then
         /usr/local/nginx/sbin/nginx#启动nginx
   else
         echo "nginx编译失败"
   fi
}
nginx_check(){
   if [ -f $NGINX -a -x $NGINX ]
   then
         /usr/local/nginx/sbin/nginx -t   #检查nginx
         RETVAL=$?
         if [ $RETVAL -eq 0 ]
         then
            echo "nginx检查完毕"
            /usr/local/nginx/sbin/nginx
            netstat -ntlp | grep nginx
            RETVAL=$?
            if [ $RETVAL -eq 0 ]
            then
               echo "nginx启动成功"
            else
                  echo "nginx启动失败"
            fi
      else
            echo "please check your nginx"
      fi
    else
      echo "nginx不存在或者没有权限"
    fi
}
php-fpm_install(){
   cd /usr/local/src
   #下载依赖包
   yum -y install libmcrypt-devel bzip2-devel gcc openssl-devel php-mcryptlibmcrypt libxml2-devel libjpeg-devel libpng-devel freetype-devel
   #下载php包
   wget http://cn2.php.net/distributions/php-5.5.38.tar.gz
   tar zxvf php-5.5.38.tar.gz
   cd php-5.5.38/
   #安装php包
   ./configure --prefix=/usr/local/php --with-mysql=mysqlnd--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-mbstring--with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib--with-libxml-dir=/usr --enable-xml --enable-sockets --with-mcrypt--with-bz2 --enable-fpm --with-gd
   #编译安装   
   make && make install
   RETVAL=$?
   if [ $RETVAL -eq 0 ]
   then
         #开始一些配置步骤
         cp /usr/local/src/php-5.5.38/php.ini-production/usr/local/php/etc/php.ini
         mv /usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf
         #创建php用户
         useradd -M -s /sbin/nologin php
         #修改相关配置
         sed -i -e 's\;pid = run/php-fpm.pid\pid = run/php-fpm.pid\g' -e's\nobody\php\g' -e 's\listen = 127.0.0.1:9000\listen = 0.0.0.0:9000\g'/usr/local/php/etc/php-fpm.conf
         sed -i 's\;daemonize = yes\daemonize = no\g' /usr/local/php/etc/php-fpm.conf
         #启动php
         /usr/local/php/sbin/php-fpm &
   else
         echo "php编译失败"
   fi
}
php-fpm_check(){
   if [ -x $PHP -a -x $PHP ]
   then
         /usr/local/php/sbin/php-fpm -t
         RETVAL=$?
         if [ $RETVAL -eq 0 ]
         then
            echo "php检查完毕"
            /usr/local/php/sbin/php-fpm &
            netstat -ntlp | grep php-fpm
            RETVAL=$?
            if [ $RETVAL -eq 0 ]
            then
                  echo "php启动成功"
            else
                  echo "php启动失败"
            fi
         else
            echo "please check yourphp"
         fi
      else
         echo "php不存在或者没有权限"
   fi
}
mysql_install(){
   #安装mysql
   yum groupinstall-ymariadb-server mariadb
   systemctl restart mariadb
   RETVAL=$?
   if [ $RETVAL -eq 0 ]
   then
         systemctl enable mariadb
         #修改root用户密码
         mysqladmin -u root password "0"
#         #创建一个wordpress数据库
#      mysql -u root -p0 -e "create database wordpress"
#      mysql -u root -p0 -e"show databases"
         #给数据库授权
      mysql -uroot -p0 -e "grant all privileges on *.* to 'root'@'%'identified by '0'; FLUSH PRIVILEGES;"
   else
         echo "mysql启动失败"
   fi
}
mysql_check(){
   rpm -qa | grep mariadb
   RETVAL=$?
   if [ $RETVAL -eq 0 ]
   then
         systemctl status mariadb
         RETVAL=$?
         if [ $RETVAL -eq 0 ]
         then
            echo "mysql正在运行中"
         else
            echo "未运行mysql"
         fi
   else
         echo "未安装mysql"
   fi
}

case "$1" in
   nginx)
          if [ ! -f $NGINX ]
          then
               nginx_install
               nginx_check
          else
               echo "已经安装nginx了"
          fi
          ;;
   php-fpm)
          if [ ! -f $PHP ]
          then
               php-fpm_install
               php-fpm_check
          else
               echo "已经安装php了"
          fi
   mysql)
          rpm -qa | grep mariadb
          RETVAL=$?
          if [ $RETVAL -eq 0 ]
          then
               mysql_install
                        mysql_check
          else
               echo "已经安装mysql了"
          fi
          ;;
esac  查看服务是否启动
  # netstat -ntlp

Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address         Foreign Address         State       PID/Program name
tcp      0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      111792/mysqld      
tcp      0      0 0.0.0.0:80            0.0.0.0:*               LISTEN      18548/nginx: worker
tcp      0      0 0.0.0.0:22            0.0.0.0:*               LISTEN      1508/sshd         
tcp      0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2118/master         
tcp      0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      18378/php-fpm: mast
tcp6       0      0 :::22                   :::*                  LISTEN      1508/sshd         
tcp6       0      0 ::1:25                  :::*                  LISTEN      2118/master  部署完lnmp环境后接下来安装zabbix
  开始安装zabbix
  1.首先安装依赖包
# yum install make gcc net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xml OpenIPMI-devel libxml2-devel
  2.创建zabbix账户
  # useradd zabbix -s /sbin/nologin

3.创建zabbix数据库,并赋予权限

  # mysql -uroot -p0

Welcome to the MariaDB monitor.Commands end with ; or \g.Your MariaDB connection id is 153Server version: 5.5.56-MariaDB MariaDB ServerCopyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help.
Type '\c' to clear the current input statement.
MariaDB [(none)]>create database zabbix character set utf8 collate utf8_bin;
Query OK, 0 rows affected (0.00 sec
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)  4.下载zabbix,解压并导入数据库
# wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.7/zabbix-3.2.7.tar.gz  # tar xf zabbix-3.2.7.tar.gz
# cd zabbix-3.2.7
# cd zabbix-3.2.7/database/mysql/
# mysql -uzabbix -pzabbix zabbix < schema.sql
# mysql -uzabbix -pzabbix zabbix < images.sql
# mysql -uzabbix -pzabbix zabbix < data.sql

5.编译安装zabbix_server
  # ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --prefix=/usr/local/zabbix
# make && make install

6.修改nginx配置文件,指定(创建)目录和支持php
  # mkdir /web
  # vim /usr/local/nginx/conf/nginx.conf

   server {
      listen       80;
      server_namelocalhost;
      #charset koi8-r;
      #access_loglogs/host.access.logmain;
      location / {
         root   /web;
         indexindex.php index.html index.htm;
      }
       location ~ \.php$ {
            root         /web;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_indexindex.php;
            fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
            include      fastcgi_params;
      }  7.重新加载nginx
  # /usr/local/nginx/sbin/nginx -s reload

  8.修改zabbix对应文件的数据库账号和密码
  # vim /usr/local/zabbix/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix  9.复制启动项脚本,并修改相应参数
  # cd /usr/local/src/zabbix-3.2.7
# cp misc/init.d/fedora/core5/zabbix_server /etc/init.d/
# cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
  # vim /etc/init.d/zabbix_server
将ZABBIX_BIN=&quot;/usr/localsbin/zabbix_server&quot;
  改为ZABBIX_BIN=&quot;/usr/local/zabbix/sbin/zabbix_server&quot;
  # vim /etc/init.d/zabbix_agentd

  将ZABBIX_BIN=&quot;/usr/localsbin/zabbix_agentd&quot;
  改为ZABBIX_BIN=&quot;/usr/local/zabbix/sbin/zabbix_agentd&quot;


  10.启动并设置开机自启
  # /etc/init.d/zabbix_server start
Starting zabbix_server (via systemctl):                  [ 确定]
# /etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl):                  [确定]
# chkconfig zabbix_server on
# chkconfig zabbix_agentd on

11.修改php.ini支持的文件大小等,不然zabbix网页容易报错
  # vim /etc/php.ini

max_execution_time = 300
max_input_time = 300
date.timezone =Asia/Shanghai
post_max_size = 32M  12.重启nginx和php,使修改的参数生效
  # /usr/local/nginx/sbin/nginx -s reload
#/usr/local/php/sbin/php-fpm -c /etc/php.ini &

  13.复制zabbix的php项目到nginx目录下,并给权限
  # cd /usr/local/src/zabbix-3.2.7/frontends
  # cp -rf php /web/zabbix
# chown -R nginx:nginx /web/zabbix

14.接着开始访问web:http://IP/zabbix

  ①报错,需要安装php的扩展bcmath,并重新编译

https://s4.运维网.com/oss/201711/01/ea65f2f33657c6e6801b6c9392e79a0c.png-wh_500x0-wm_3-wmp_4-s_809872524.png
  解决方法:

  # cd /usr/local/src/php-5.5.38/ext/bcmath/
# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
#
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make && make install

  Installing shared extensions:   /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
# vim /etc/php.ini

  extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/bcmath.so
重启php

  # /usr/local/php/sbin/php-fpm -c /etc/php.ini & (重启php)

  ②接着会有以下错误
https://s4.运维网.com/oss/201711/01/1c63732a748e0c3d292496926f3c18e9.png-wh_500x0-wm_3-wmp_4-s_1017027173.png
  解决方法:
  # ln -s /var/lib/mysql/mysql.sock /tmp/
# vim /etc/php.ini

  mysqli.default_socket =/var/lib/mysql/mysql.sock
# /usr/local/php/sbin/php-fpm -c /etc/php.ini &

  ③接着默认下一步按照提示即可(熟悉的界面-用户:Admin 密码:zabbix)

https://s5.运维网.com/oss/201711/01/355eeb922c4c4bbe328be138ee365065.png-wh_500x0-wm_3-wmp_4-s_3802923894.png
  ④修改为中文(php是模块化的语言,进入gettext文档单独编译gettext模块)
  # cd /usr/local/src/php-5.5.38/ext/gettext/
# /usr/local/php/bin/php
# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make && make install
Installing shared extensions:   /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
# vim /etc/php.ini

  extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/gettext.so

  # /usr/local/php/sbin/php-fpm -c /etc/php.ini & (重启php)

  #然后到图形界面的右上角点击admin用户,切换中文
https://s5.运维网.com/oss/201711/01/085daa019e1c4a3209bf12d1e3f04436.png-wh_500x0-wm_3-wmp_4-s_1740664662.png
  ⑤解决中文乱码问题
https://s3.运维网.com/oss/201711/01/5a4d055d1ab1b6fd05d5a67c2db33ae5.png-wh_500x0-wm_3-wmp_4-s_1430366870.png
  找到本地C:\Windows\Fonts\simkai.ttf(楷体)上传到服务器zabbix目录fonts,将原有的字体替换掉
  # cd /web/zabbix/fonts/
# ls
DejaVuSans.ttf
# rz
# ls
DejaVuSans.ttfsimkai.ttf
# mv simkai.ttf DejaVuSans.ttf
mv:是否覆盖&quot;DejaVuSans.ttf&quot;? y
#

  修改后刷新查看:

https://s2.运维网.com/oss/201711/01/ed75b45971f6d7627b64610e81e3bca6.png-wh_500x0-wm_3-wmp_4-s_2003333212.png
  Zabbix安装完成。。。。。。




页: [1]
查看完整版本: 基于LNMP环境安装Zabbix