zoukankan      html  css  js  c++  java
  • Zabbix安装配置

    本节内容:

    • 实验环境
    • 安装准备
    • 安装MySQL
    • 安装Zabbix3.0.1
    • 其他主机安装agent

    一、实验环境

    主机名 操作系统版本 IP地址 安装软件
    console CentOS 7.0 114.55.29.246 Httpd、Nginx、MySQL、Zabbix
    log1 CentOS 7.0 114.55.29.86 Zabbix agent
    log2 CentOS 7.0 114.55.29.241 Zabbix agent



    二、安装准备

    为了安全考虑,zabbix只使用普通用户运行,如果你的系统没有名叫zabbix的用户,你需要创建一个用户,如下:

    [root@console local]# groupadd zabbix
    [root@console local]# useradd -g zabbix zabbix
    [root@console local]# id zabbix
    uid=1000(zabbix) gid=1000(zabbix) groups=1000(zabbix)  

    三、安装MySQL

    console主机安装mysql5.6。下载地址:http://mirrors.sohu.com/mysql

    1.安装依赖包

    [root@console local]# yum install libaio* -y

    2.解压安装

    [root@console local]# tar zxf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz 
    [root@console local]# ln -sv mysql-5.6.27-linux-glibc2.5-x86_64 mysql

    3.新建用户

    运行mysql最好不要用root去运行,而以普通用户身份。添加用户mysql。

    [root@console local]# groupadd -r -g 300 mysql
    [root@console local]# useradd -g mysql -r -s /sbin/nologin -u 300 mysql
    [root@console local]# id mysql
    uid=300(mysql) gid=300(mysql) groups=300(mysql)

    4.修改mysql文件权限为mysql.mysql

    [root@console local]# cd mysql
    [root@console mysql]# chown -R mysql.mysql ./*

    5.执行初始化操作,生成一个系统库叫mysql,它里面保存着有当前所有能够使用mysql服务器的用户帐号、所有数据库的名字、每个库中表的名字、表中字段的名字等等。

    脚本路径:/usr/local/mysql/scripts

    创建数据文件目录:

    [root@console mysql]# mkdir -pv /data/{mydata,binlog}
    [root@console mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mydata
    [root@console mysql]# ls /data/mydata

    6.修改mysql目录下的文件属主为root,属组为mysql

    [root@console mysql]# chown -R root .

    7.修改data目录属主、属组为mysql

    [root@console mysql]# chown -R mysql.mysql /data

    8.拷贝修改mysql的配置文件

    copy写好的my.cnf到/etc/目录下。

    9.拷贝mysql的启动脚本,并加入系统服务

    [root@console mysql]# cp support-files/mysql.server /etc/init.d/mysqld 
    [root@console mysql]# chkconfig --add mysqld

    10.启动mysql

    [root@console mysql]# service mysqld start

    11.配置环境变量,配置完重新打开一个shell

    [root@console mysql]# vim /etc/profile.d/mysql.sh
    export PATH=/usr/local/mysql/bin:$PATH

    12.修改root密码,因为一装完root密码是空的

    [root@console ~]# mysql -uroot mysql 

    mysql> UPDATE user SET Password=PASSWORD('wisedu123') where USER='root';
    mysql> FLUSH PRIVILEGES;

    此时再以root登录就需要密码了。

    13.删除两个匿名帐号

    mysql> use mysql
    mysql> SELECT host,user,password FROM user;

    mysql> DROP USER ''@localhost;
    mysql> DROP USER ''@console;

    四、安装Zabbix3.0.1

    官方说3.0以上版本是在redhat7以上运行的,我之前在redhat6.6尝试编译安装也是可以的。

    1.安装依赖包

    [root@console ~]# yum install net-snmp-devel libxml2-devel libcurl-devel  libssh2-devel unixODBC-devel -y

    2.安装JDK

    如果zabbix需要监控JMX应用的程序,在编译zabbix的时候就需要--enable-java,同时也需要安装配置好JDK。

    # mkdir /usr/java
    # tar zxf jdk-8u73-linux-x64.gz -C /usr/java/
    # vim /etc/profile
    # source /etc/profile

    3.安装php环境

    zabbix的服务端程序是用php写的,因此需要一个支持LAMP架构的服务器平台。

    CentOS 6:

    CenOS 6的yum源中自带的php解释器版本过低,是 5.3版本,需要>=5.4版本才可以。这里使用 Webtatic EL6的YUM源来安装php5.4,我们首先安装Webtatic EL6 YUM源:

    # rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm 
    # yum install php54w php54w-mysql php54w-mbstring php54w-bcmath php54w-gd php54w-xml -y

    CentOS 7:

    # yum install php php-fpm php-mysql php-mbstring php-bcmath php-gd php-xml -y

    4.编译安装zabbix server

    如果仅安装server,并支持将数据放入mysql数据中,可使用类似如下配置命令: ./configure --enable-server --with-mysql --with-net-snmp --with-libcurl 如果仅安装proxy,并支持将数据放入mysql数据中,可使用类似如下配置命令: ./configure --prefix=/usr --enable-proxy --with-net-snmp --with-mysql --with-ssh2 如果仅安装agent,可使用类似如下配置命令: ./configure --enable-agent

    在console主机上同时安装server和agent,并支持将数据放入mysql数据中:

    [root@console local]# cd /usr/local/
    [root@console local]# wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.1/zabbix-3.0.1.tar.gz
    [root@console local]# tar zxf zabbix-3.0.1.tar.gz 
    [root@console local]# cd zabbix-3.0.1/
    [root@console zabbix-3.0.1]# ./configure --prefix=/usr/local/zabbix-3.0.1/ --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-ipv6 --with-ssh2 --enable-java --with-unixodbc

    [root@console zabbix-3.0.1]# make && make install

    5.初始化数据库

    For Zabbix server and proxy daemons, as well as Zabbix frontend, a database is required. It is not needed to run Zabbix agent. 数据库初始化脚本在/usr/local/zabbix-3.0.1/database/mysql,分别是schema.sql、images.sql和data.sql。

    【注意】:导入顺序不能变。

    先在MySQL中创建zabbix数据库:

     [root@console ~]# mysql -uroot -p
     mysql> create database zabbix default charset utf8;
     mysql> grant all on zabbix.* to zabbix@localhost identified by 'wisedu';
     mysql> grant all on zabbix.* to zabbix@'%.%.%.%' identified by 'wisedu';
     mysql> flush privileges;

    然后退出,使用zabbix用户登录mysql并导入数据:

    [root@console ~]# mysql -uzabbix -p
    mysql> use zabbix;
    mysql> source /usr/local/zabbix-3.0.1/database/mysql/schema.sql

    如果你仅仅是初始化proxy的数据库,那么schema.sql够了。如果初始化server,那么接着导入下面两个sql:

    mysql> source /usr/local/zabbix-3.0.1/database/mysql/images.sql
    mysql> source /usr/local/zabbix-3.0.1/database/mysql/data.sql

    如果是初始化agent,就不需要导入任何脚本。

    6.配置zabbix server

    因为上面我在编译加了--prefix=/usr/local/zabbix-3.0.1/参数,所以配置文件路径在:/usr/local/zabbix-3.0.1/etc。如果在编译时没有加这个参数,默认配置文件在/usr/local/etc/。

    [root@console mysql]# cd /usr/local/zabbix-3.0.1/etc/

    修改server端配置文件:

    备份原配置文件,然后去掉注释:

    [root@console etc]# mv zabbix_server.conf zabbix_server.conf.bak
    [root@console etc]# cat zabbix_server.conf.bak | grep -v "#" | grep -v "^$" > zabbix_server.conf

    最终改后的配置文件内容如下:

    [root@console etc]# cat zabbix_server.conf
    LogFile=/var/log/zabbix_server.log
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=wisedu
    # 注意mysql服务器上的mysql.sock文件路径,一般zabbix server和mysql在同一台就改为/tmp/mysql.sock,否则不修改
    DBSocket=/tmp/mysql.sock
    Timeout=4
    LogSlowQueries=3000

    修改agent配置文件:

    [root@console etc]# mv zabbix_agentd.conf zabbix_agentd.conf.bak
    [root@console etc]# cat zabbix_agentd.conf.bak | grep -v "#" | grep -v "^$" > zabbix_agentd.conf

    agent配置文件内容如下:

    [root@console etc]# cat zabbix_agentd.conf
    LogFile=/var/log/zabbix_agentd.log
    Server=114.55.29.246
    # 主动向zabbix server发送监控内容
    ServerActive=114.55.29.246
    Hostname=console
    Include=/usr/local/zabbix-3.0.1/etc/zabbix_agentd.conf.d/*.conf

    创建日志文件:

    [root@console etc]# touch /var/log/{zabbix_server.log,zabbix_agentd.log} 
    [root@console etc]# chmod 777 /var/log/zabbix_*

    7.启动zabbix server

    [root@console ~]# cd /usr/local/zabbix-3.0.1/sbin/
    [root@console sbin]# ./zabbix_server

    查看10051端口,端口默认是10051。 一大堆进程。

    可以查看启动日志:

    [root@log sbin]# tail -100f /var/log/zabbix_server.log

    常见启动错误:

    ./zabbix_server: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

    解决:

    # ln -s /usr/local/mysql/lib/libmysqlclient.so.18  /usr/lib64/

    8.停止zabbix server

    # killall -9 zabbix_server

    9.安装zabbix web界面(和server端装在一台机器)

    zabbix的服务端程序是用php写的,因此需要一个支持LAMP架构的服务器平台。Web服务器可以使用Httpd或者Nginx。 鉴于zabbix最近爆出来的漏洞:zabbix的jsrpc的profileldx2参数存在insert方式的SQL注入漏洞,攻击者可以无需授权登陆即可登陆zabbix管理系统,也可通过script等功能轻易直接获取zabbix服务器的操作系统权限。建议升级到最新的zabbix-3.0.4版本,或者使用nginx,这样可以在server段加入如下配置处理这个漏洞:

    if ($request_uri ~ ^(.+.php)(.*)$) {
            set $req $2;
    }
    if ($req ~* "union[+|(%20)]") {
            return 503;
    }
    if ($req ~* "and[+|(%20)]") { 
                return 503;
    }
    if ($req ~* "select[+|(%20)]") { 
                return 503;
    }
    if ($req ~* "or[+|(%20)]") { 
                return 503;
    }
    if ($req ~* "concat[+|(%20)]") { 
                return 503;
    }
    if ($req ~* "cost[+|(%20)]") { 
                return 503;
    }

    9.1 使用httpd

    9.1.1 安装httpd

    我这里使用httpd2.4。

    [root@console ~]# yum install -y httpd
    9.1.2 部署zabbix web

    将ZABBIX安装目录下 frontends/php 下面的php源代码文件拷贝到web服务器html文件目录下面。 先建立一个子目录,将zabbix终端php文件拷贝到该子目录里面,执行下面的命令:

    [root@console ~]# cd /var/www/html/
    [root@console html]# mkdir /var/www/html/zabbix
    [root@console html]# cp -ar /usr/local/zabbix-3.0.1/frontends/php/* ./zabbix/

    启动httpd:

    [root@console html]# systemctl start httpd.service
    [root@console ~]# systemctl enable httpd.service

    访问:

    http://114.55.29.246/zabbix/

     (1) You should see the first screen of the frontend installation wizard.

    (2) 检查环境

    查看到几处不符合要求,需修改该PHP文件配置文件参数:

    # vim /etc/php.ini
    post_max_size = 16M
    max_execution_time = 300
    max_input_time = 300
    date.timezone = Asia/Shanghai

    然后重启httpd和mysql,不重启mysql下面sql连接时还是会报错。

    [root@console ~]# systemctl restart httpd.service 
    [root@console ~]# service mysqld restart

    重新访问,全部依赖都通过:

    (3) 输入之前在MYSQL后台设置的zabbix数据库信息:

    DBName=zabbix
    DBUser=zabbix
    DBPassword=wisedu

    报错:

    解决:

    [root@console ~]# mkdir /var/lib/mysql
    [root@console ~]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

    点击下一步,还是报错:

    解决:

    mysql> grant all on zabbix.* to 'zabbix'@'console' identified by 'wisedu';
    mysql> flush privileges;

    如果以上方法试过后,还报下面的错误:

    Error connecting to database: Can't connect to MySQL server on ''114.55.29.246''

    请检查SELinux是否关闭。

    [root@console ~]# /usr/sbin/sestatus -v

    关闭SELinux:

    [root@console ~]# setenforce 0
    [root@console ~]# vim /etc/sysconfig/selinux

    (4) 输入zabbix服务器端的详细信息

    (5) 检查一下设置情况

    (6) 下载配置文件,并把它放置在/var/www/html/zabbix/conf/ 目录下

    Alternatively, you can install it manually:
    Download the configuration file
    Save it as "/var/www/html/zabbix/conf/zabbix.conf.php"

    [root@console conf]# cd /var/www/html/zabbix/conf/
    [root@console conf]# chown zabbix.zabbix zabbix.conf.php

    (7) 点击Finish

    (8) Zabbix frontend is ready! The default user name is Admin, password zabbix.

    9.2 使用Nginx

    9.2.1 安装openresty

    log2主机上安装openresty

    # yum install readline-devel pcre-devel openssl-devel gcc -y
    # cd /usr/local
    # tar zxf openresty-1.9.7.3.tar.gz
    # cd openresty-1.9.7.3/
    # ./configure --with-http_stub_status_module
    # gmake && gmake install

    安装完成后,在/usr/local/下多了个openresty目录,nginx部署安装在/usr/local/openresty/nginx。
    将nginx加入系统服务:

    Redhat7之前的版本:

    (1) 上传nginx启动脚本到/etc/init.d/目录下

    (2) 授权脚本执行权限

    [root@log2 init.d]# chmod a+x nginx

    (3) 加入系统服务

    [root@log2 init.d]# chkconfig --add nginx

    (4) nginx开启自启动

    [root@log2 init.d]# chkconfig nginx on

    (5) nginx启停重载

    service nginx start/stop/restart/reload

    Redhat7版本:

    (1) 启动服务单元

    把写好的nginx.service放到/etc/systemd/system/目录下。

    (2) 设置开机启动

    [root@log2 ~]# systemctl enable nginx.service

    (3) 启动/停止/重载nginx服务

    systemctl start/stop/reload nginx.service
    9.2.2 启动php

    Nginx是没办法以模块化方式或者CGI方式跟php结合的,php就可以工作在fastcgi模式下。即单独启动为服务。

    # vim /etc/php.ini
    post_max_size = 16M
    max_execution_time = 300
    max_input_time = 300
    date.timezone = Asia/Shanghai

    启动:

    # systemctl start php-fpm.service
    9.2.3 部署zabbix web

    将zabbix安装目录下 frontends/php 下面的php源代码文件拷贝到web服务器html文件目录下面。

    # mkdir /usr/local/openresty/nginx/html/zabbix
    # cp -ar /usr/local/zabbix-3.0.1/frontends/php/* /usr/local/openresty/nginx/html//zabbix/

    修改nginx配置文件:

    # cd /usr/local/openresty/nginx/conf/
    # cp nginx.conf nginx.conf.bak

    配置文件内容:

    #user  nobody;
    worker_processes  1;
    
    error_log  logs/error.log info;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    events {
        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;
    
        proxy_buffer_size  128k;
        proxy_buffers   32 32k; 
        proxy_busy_buffers_size 128k;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen       80;
            server_name  zabbix.wisedu.com;
    
            #charset koi8-r;
    
            access_log  logs/zabbix.access.log  main;
    
        index index.php index.html index.html;
            root /usr/local/openresty/nginx/html;
    
        if ($request_uri ~ ^(.+.php)(.*)$) {
            set $req $2;
        }
        if ($req ~* "union[+|(%20)]") {
            return 503;
        }
        if ($req ~* "and[+|(%20)]") { 
                return 503;
               }
        if ($req ~* "select[+|(%20)]") { 
                return 503;
               }
        if ($req ~* "or[+|(%20)]") { 
                return 503;
               }
        if ($req ~* "concat[+|(%20)]") { 
                return 503;
               }
        if ($req ~* "cost[+|(%20)]") { 
                return 503;
               }
    
            location / {
                try_files $uri $uri/ /index.php?$args;
            }
    
            location ~ .*.(php)?$ {
            fastcgi_buffer_size 128k;
            fastcgi_buffers 4 256k;
            fastcgi_busy_buffers_size 256k;
                expires -1s;
                try_files $uri =404;
            fastcgi_split_path_info ^(.+.php)(/.+)$;
            include fastcgi_params;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass 127.0.0.1:9000;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    nginx配置

    浏览器访问url进行安装,安装过程和上面httpd一样。

    9.2.4 切割Nginx日志

    如果开启Nginx的debug日志,就需要考虑到切割日志:

    # cd /etc/logrotate.d/
    # vim nginx
    /usr/local/openresty/nginx/logs/*.log {
            notifempty
            weekly
            rotate 4
            nocompress
            copytruncate
            postrotate
            service nginx reload
            endscript
    }

    五、其他主机安装agent

    1.添加用户

    Zabbix agent也不能用root用户运行,要以zabbix用户身份运行。否则:

    # ./zabbix_agentd
    zabbix_agentd [15530]: user zabbix does not exist
    zabbix_agentd [15530]: cannot run as root!

    添加用户:

    # groupadd zabbix
    # useradd -g zabbix zabbix
    # id zabbix
    uid=1000(zabbix) gid=1000(zabbix) groups=1000(zabbix)

    2.安装agent

    从console主机上将zabbix源代码包copy过来:

    [root@console local]# scp -p zabbix-3.0.1.tar.gz root@114.55.29.86:/usr/local/
    [root@console local]# scp -p zabbix-3.0.1.tar.gz root@114.55.29.241:/usr/local/
    # yum install -y gcc
    # cd /usr/local/
    # tar zxf zabbix-3.0.1.tar.gz
    # cd zabbix-3.0.1/
    # ./configure --prefix=/usr/local/zabbix-3.0.1/ --enable-agent
    # make && make install
    安装agent

    3.配置agent

    # cd /usr/local/zabbix-3.0.1/etc/
    # mv zabbix_agentd.conf zabbix_agentd.conf.bak
    # cat zabbix_agentd.conf.bak | grep -v "#" | grep -v "^$" > zabbix_agentd.conf
    LogFile=/var/log/zabbix_agentd.log
    Server=114.55.29.246
    # 主动向zabbix server发送监控内容
    ServerActive=114.55.29.246
    # 本机的主机名或IP地址
    Hostname=log1
    Include=/usr/local/zabbix-3.0.1/etc/zabbix_agentd.conf.d/*.conf
    zabbix_agentd.conf

    创建日志文件:

    # touch /var/log/zabbix_agentd.log
    # chmod 777 /var/log/zabbix_agentd.log

    4.启动agent

    # cd /usr/local/zabbix-3.0.1/sbin/
    # ./zabbix_agentd

    查看端口是否监听,默认agent端口是10050:

    # lsof -i :10050

    可以查看日志:

    # tail -100f /var/log/zabbix_agentd.log

    5.停止agent

    # killall -9 zabbix_agentd

    具体的监控配置实例见下一篇文章。

  • 相关阅读:
    以太坊:用 Solidity 写测试用例
    以太坊:测试合约
    以太坊:支持 Quorum 开发
    以太坊:编写外部脚本
    以太坊:使用控制台
    以太坊:调试合约
    Rancher 2.x 搭建及管理 Kubernetes 集群
    我的友情链接
    我的友情链接
    我的友情链接
  • 原文地址:https://www.cnblogs.com/zhaojiankai/p/6839546.html
Copyright © 2011-2022 走看看