zoukankan      html  css  js  c++  java
  • Zabbix 4

    关于 Zabbix 需要知道

    Zabbix 作为运维常用的服务器以及业务监控工具已经不是一两天的事情,所以如果早些年你还在纠结到底是使用 nagios 还是 zabbix 我还能理解,但在 2020 年,Prometheus 都已经泛滥的年代,你还在纠结,那就是你个人的问题了。

    另外说明一下,其实工具很多功能都已经很完善,很多时候不完善的只是使用者而已。

    现在是 2020 年 1 月 2 日,之所以再次写这类关于 Zabbix 的文章,其实是理由很简单,服务器做了迁移嘛,整套服务重新安装,这时候就得升级一下一辈子都懒得动的监控系统,顺便整理一下并尝尝新版本的鲜。

    至于 Zabbix 到底是啥和究竟能干啥,相信会看这种文章的大多心里是有底的。

    这里说下个人对于在官方文档中提到的几个 Zabbix 的几个功能组件的看法:

    Server:接收来自 agent 端的监控数据并做相应的处理,是 Zabbix 的核心。

    数据库:用于存储监控数据与服务配置信息。

    Web:图形化显示和配置 Zabbix 数据和服务器监控信息。

    Proxy:相当于中转机器,在特殊的网络环境中作为 Server 和 Agent 之间的”中间人“。

    Agent:客户端,收集监控数据并传递给 Server 端。

    大概就是这些,如果想了解更多,还是自个儿去研究官方文档,我们作为 User 差不多就行了:

    https://www.zabbix.com/documentation/4.0/zh/manual/introduction/overview

    关于服务选型

    1. 关于源码安装的问题:

    之所以在 docker 已经这么方便的今天依旧选择源码安装,原因很简单,个人喜欢定制化,规范化公司服务安装的标准而已。

    2. 服务选型:

    Zabbix 选择目前最新的版本 4.4.4,更新时间 Dec 19, 2019。

    MySQL 还是 Percona 的 5.7 版本,没有选择 8,因为公司都是这个版本没必要特殊,但是本次准备换个数据库引擎 Tokudb。Tokudb 尤其适合密集型插入场景,压缩比很高。

    PHP 是 7 版本,Nginx 则是最新版本 1.16。

    3. Zabbix 下载地址:

    https://www.zabbix.com/download_sources

    当然,也可以去我的网盘下载:

    MySQL 下载地址:

    链接:https://pan.baidu.com/s/1eojo3VzAX_jBltLMuIF_Ew 

    提取码:tw4a

    Nginx 下载地址:

    链接:https://pan.baidu.com/s/1-6uNiRe64NeqLVIdDsSIWA
    提取码:ahwj

    PHP 下载地址:

    链接:https://pan.baidu.com/s/1jytOtIQ7Rz8tbFgtg7_6EA
    提取码:dfb4

    Zabbix 下载地址:

    链接:https://pan.baidu.com/s/144ClGiDYCYofKnBtmGXUuQ
    提取码:e1yn

    具体安装包如下:

    安装包
    系统版本
    CentOS Linux release 7.6.1810
    Nginx 源码安装依赖安装包:
    echo-nginx-module-master.zip
    nginx-1.16.0.tar.gz
    nginx-upload-module-master.zip
    nginx-upstream-fair-master.zip
    ngx_cache_purge-master.zip
    ngx-fancyindex-master.zip
    ngx_http_proxy_connect_module-master.zip
    ngx_http_status_code_counter-master.zip
    openssl-1.1.1c.tar.gz
    pcre-8.43.tar.gz
    zlib-1.2.11.tar.gz
    MySQL 源码安装依赖安装包:
    percona-server-5.7.11-4.tar.gz
    cmake-3.5.2.tar.gz
    boost_1_59_0.tar.gz
    PHP 源码安装依赖安装包:
    php-7.0.30.tar.gz
    libiconv-1.14.tar.gz
    Zabbix 源码安装依赖安装包:
    zabbix-4.4.4.tar.gz

    编译安装 LNMP 环境 - NGINX

    1. 创建基础目录用于存放安装包:

    cd /data/install_packages
    mkdir nginx php mysql zabbix
    mkdir /data/service
    mkdir -p /data/logs/nginx

    将对应的安装包存放到相应的目录!

    2. 编译安装 Nginx:

    # 安装依赖
    yum -y install zip unzip gcc gcc-c++ automake autoconf libtool make glibc gd-devel pcre-devel libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel libevent libevent-devel patch
    
    # 进入安装包存放目录
    cd nginx
    
    # 解压
    unzip echo-nginx-module-master.zip
    unzip nginx-upload-module-master.zip
    unzip nginx-upstream-fair-master.zip
    unzip ngx_cache_purge-master.zip
    unzip ngx-fancyindex-master.zip
    unzip ngx_http_proxy_connect_module-master.zip
    unzip ngx_http_status_code_counter-master.zip
    tar -zxf nginx-1.16.0.tar.gz
    tar -zxf openssl-1.1.1c.tar.gz
    tar -zxf pcre-8.43.tar.gz
    tar -zxf zlib-1.2.11.tar.gz
    
    # 安全配置:隐藏 nginx 版本
    sed -i 's#"nginx/"#"WEB-SERVER/"#g' /data/install_packages/nginx/nginx-1.16.0/src/core/nginx.h
    sed -i 's#"NGINX"#"WEB-SERVER"#g' /data/install_packages/nginx/nginx-1.16.0/src/core/nginx.h
    sed -i 's#"Server: nginx"#"Server: WEB-SERVER"#g' /data/install_packages/nginx/nginx-1.16.0/src/http/ngx_http_header_filter_module.c
    sed -i 's#"<hr><center>nginx</center>" CRLF##g' /data/install_packages/nginx/nginx-1.16.0/src/http/ngx_http_special_response.c
    
    # 打补丁
    sed -i 's/default_port/no_port/g' /data/install_packages/nginx/nginx-upstream-fair-master/ngx_http_upstream_fair_module.c
    cd /data/install_packages/nginx/nginx-1.16.0
    patch -p1 < /data/install_packages/nginx/ngx_http_proxy_connect_module-master/patch/proxy_connect_rewrite_101504.patch
    
    # 编译安装
    ./configure --prefix=/data/service/nginx 
    --with-http_stub_status_module 
    --with-http_gzip_static_module 
    --with-http_flv_module 
    --with-http_ssl_module 
    --with-http_mp4_module 
    --with-stream 
    --with-http_realip_module 
    --with-http_v2_module 
    --with-http_sub_module 
    --with-http_image_filter_module 
    --with-pcre=/data/install_packages/nginx/pcre-8.43 
    --with-openssl=/data/install_packages/nginx/openssl-1.1.1c 
    --with-zlib=/data/install_packages/nginx/zlib-1.2.11 
    --add-module=/data/install_packages/nginx/echo-nginx-module-master 
    --add-module=/data/install_packages/nginx/nginx-upload-module-master 
    --add-module=/data/install_packages/nginx/nginx-upstream-fair-master 
    --add-module=/data/install_packages/nginx/ngx_cache_purge-master 
    --add-module=/data/install_packages/nginx/ngx-fancyindex-master 
    --add-module=/data/install_packages/nginx/ngx_http_proxy_connect_module-master 
    --add-module=/data/install_packages/nginx/ngx_http_status_code_counter-master
    
    make && make install

    3. 配置 nginx 配置文件和开机启动:

    cd /data/service/nginx/conf/
    mkdir vhosts tcp
    vi nginx.conf

    内容如下:

    user  root root;
    worker_processes  4;
    error_log  /data/logs/nginx/error.log;
    pid        /data/logs/nginx/nginx.pid;
    worker_rlimit_nofile 65535;
    events {
        use epoll;
        worker_connections  65535;
    }
     
    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 $request_time $upstream_response_time $upstream_addr $upstream_status';
    
        access_log /data/logs/nginx/access.log  main;
     
        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 30m;
       
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 128k;
        fastcgi_param HTTP_PROXY "";
       
        # 隐藏后端服务器的相关参数
        proxy_hide_header X-Powered-By;
        proxy_hide_header X-Forwarded-For;
        proxy_hide_header X-AspNet-Version;
        proxy_hide_header X-AspNetMvc-Version;
        proxy_hide_header Via;
        proxy_hide_header X-Varnish;
        proxy_hide_header Server;
    
        proxy_connect_timeout 300s;
        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
       
        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 5;
        gzip_disable "MSIE [1-6].";
        gzip_types text/plain text/css text/xml application/javascript application/x-javascript;
        gzip_vary on;
       
        include vhosts/*.conf;
    }
    
    include /data/service/nginx/conf/tcp/*.conf;

    配置开机启动:

    chmod 755 /etc/rc.local 
    echo "" >> /etc/rc.local 
    echo "# NGINX STARTUP" >> /etc/rc.local 
    echo "/data/service/nginx/sbin/nginx &" >> /etc/rc.local

    检查配置:

    /data/service/nginx/sbin/nginx -t

    Nginx 安装完成!

    编译安装 LNMP 环境 - MySQL(时间稍长)

    1. 基础配置:

    mkdir -p /data/logs/mysql-3306/tmp
    mkdir -p /data/backup/mysql-3306
    useradd mysql -s /usr/sbin/nologin
    chown -R mysql.mysql /data/logs/mysql-3306
    
    # 关闭大页内存
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    
    # 安装依赖
    yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel libaio-devel boost boost-devel autoconf* automake* zlib* libxml* ncurses-devel ncurses libgcrypt* libtool* cmake openssl openssl-devel bison bison-devel unzip numactl-devel net-snmp-devel net-snmp-utils readline* jemalloc

    2. 编译安装 MySQL:

    # 解压
    cd /data/install_packages/mysql/
    tar -zxf cmake-3.5.2.tar.gz 
    tar -xzf boost_1_59_0.tar.gz 
    tar -zxf percona-server-5.7.11-4.tar.gz
    
    # 编译安装 CMAKE
    cd cmake-3.5.2
    ./configure
    gmake && make install
    
    # 查看安装结果
    cmake --version
    
    # 编译安装 MySQL
    cd ../percona-server-5.7.11-4
    
    cmake . -DCMAKE_INSTALL_PREFIX=/data/service/mysql-3306  
    -DWITH_BOOST=/data/install_packages/mysql/boost_1_59_0/ 
    -DMySQL_DataDIR=/data/service/mysql-3306/data 
    -DDEFAULT_CHARSET=utf8 
    -DDEFAULT_COLLATION=utf8_general_ci 
    -DWITH_MYISAM_STORAGE_ENGINE=1 
    -DWITH_INNOBASE_STORAGE_ENGINE=1 
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 
    -DWITH_EDITLINE=bundled 
    -DENABLED_LOCAL_INFILE=1 
    -DZLIB_INCLUDE_DIR:PATH=/usr/include 
    -DENABLE_DOWNLOADS=1
    
    make -j4 && make install

    3. 配置 MySQL 并初始化:

    vi /etc/my.cnf

    内容如下:

    [mysql]
    port=3306
    prompt=3306/\u [\d]>
    socket=/data/logs/mysql-3306/mysql.sock
    
    [mysqld]
    port=3306
    user=mysql
    federated
    pid-file=/data/logs/mysql-3306/mysqld.pid
    socket=/data/logs/mysql-3306/mysql.sock
    log-error=/data/logs/mysql-3306/error.log
    basedir=/data/service/mysql-3306
    datadir=/data/service/mysql-3306/data
    server_id=100
    symbolic-links=0
    autocommit=1
    character_set_server=utf8
    skip_name_resolve=1
    max_connections=5000
    max_connect_errors=5000
    join_buffer_size=128M
    tmp_table_size=64M
    tmpdir=/data/logs/mysql-3306/tmp
    max_allowed_packet=64M
    interactive_timeout=1200
    wait_timeout=600
    read_buffer_size=8M
    read_rnd_buffer_size=8M
    sort_buffer_size=8M
    slow_query_log=1
    long_query_time=3
    slow_query_log_file=/data/logs/mysql-3306/slow.log
    log_queries_not_using_indexes=0
    log_slow_admin_statements=0
    expire_logs_days=90
    min_examined_row_limit=100
    master_info_repository=TABLE
    relay_log_info_repository=TABLE
    log-bin=/data/service/mysql-3306/data/mysql-bin
    sync_binlog=5
    gtid_mode=on
    enforce_gtid_consistency=1
    log_slave_updates=1
    binlog_format=row
    relay_log=/data/logs/mysql-3306/relay.log
    relay_log_recovery=1
    binlog_gtid_simple_recovery=1
    slave_skip_errors=ddl_exist_errors
    innodb_buffer_pool_size=8G
    innodb_buffer_pool_instances=1
    innodb_buffer_pool_load_at_startup=1
    innodb_buffer_pool_dump_at_shutdown=1
    innodb_lock_wait_timeout=30
    innodb_print_all_deadlocks=1
    innodb_sort_buffer_size=8M 
    log_timestamps=SYSTEM
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    skip-grant-tables

    初始化:

    /data/service/mysql-3306/bin/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/lxserver/service/mysql-3306 --datadir=/lxserver/service/mysql-3306/data --user=mysql

    配置启动脚本:

    # 创建启动方式
    cp /data/service/mysql-3306/support-files/mysql.server /etc/init.d/mysqld
    chmod 700 /etc/init.d/mysqld
    sed -i 's/^basedir=$/&/data/service/mysql-3306/g' /etc/init.d/mysqld
    sed -i 's/^datadir=$/&/data/service/mysql-3306/data/g' /etc/init.d/mysqld
    
    # 添加环境变量
    echo "" >> /etc/profile
    echo "# MySQL" >> /etc/profile
    echo "export MYSQL_HOME=/data/service/mysql-3306" >> /etc/profile
    echo 'export PATH=$PATH:${MYSQL_HOME}/bin' >> /etc/profile
    
    # 生效环境变量
    source /etc/profile
    
    # 添加开机启动
    echo "" >> /etc/rc.local
    echo "# MYSQL STARTUP" >> /etc/rc.local
    echo "/etc/init.d/mysqld start &" >> /etc/rc.local

    4. 启动 MySQL 并初始化用户:

    /etc/init.d/mysqld start

    登录 MySQL:

    mysql

    执行下面的 SQL 设置密码:

    update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
    quit;

    替换配置重启 MySQL:

    # 取消免密配置,重启数据库
    sed -i 's%skip-grant-tables%#skip-grant-tables%g' /etc/my.cnf
    /etc/init.d/mysqld restart

    登录:

    mysql -uroot -p

    执行 SQL:

    alter user 'root'@'localhost' identified by '123456';
    grant all on *.* to root@'%' identified by '123456' with grant option;
    flush privileges;
    quit;

    5. 添加 Tokudb:

    登录 MySQL:

    mysql -uroot -p

    执行如下 SQL:

    INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_file_map SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_fractal_tree_info SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_fractal_tree_block_map SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_trx SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_locks SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_lock_waits SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_background_job_status SONAME 'ha_tokudb.so';
    show engines;
    quit;

    结果如图:

    MySQL 安装完成!

    编译安装 LNMP 环境 - PHP

    1. 基础配置:

    # 创建目录
    mkdir -p /data/logs/php/tmp
    chmod -R 777 /data/logs/php# 创建监听用户
    useradd php -s /usr/sbin/nologin
    
    # 安装依赖
    yum -y install libmcrypt-devel mcrypt mhash gd-devel ncurses-devel libxml2-devel bzip2-devel libcurl-devel curl-devel libjpeg-devel libpng-devel freetype-devel net-snmp-devel openssl-devel libmcrypt-devel

    2. 安装 PHP:

    # 解压
    cd /data/install_packages/php/
    tar -zxf libiconv-1.14.tar.gz 
    tar -zxf php-7.0.30.tar.gz 
    
    # 安装 libiconv
    cd libiconv-1.14/srclib/
    sed -i -e '/gets is a security/d' ./stdio.in.h
    cd ..
    ./configure --prefix=/usr/local/libiconv
    make && make install
    
    # 编译安装 PHP
    cd ../php-7.0.30
    ./configure --prefix=/data/service/php 
    --with-config-file-path=/data/service/php/etc 
    --enable-mysqlnd 
    --with-mysqli=mysqlnd 
    --with-pdo-mysql=mysqlnd 
    --with-iconv-dir=/usr/local/libiconv 
    --with-pcre-regex 
    --with-zlib 
    --with-bz2 
    --enable-calendar 
    --with-curl 
    --enable-dba 
    --with-libxml-dir 
    --enable-ftp 
    --with-gd 
    --with-jpeg-dir 
    --with-png-dir 
    --with-zlib-dir 
    --with-freetype-dir 
    --enable-gd-native-ttf 
    --with-mhash 
    --enable-mbstring 
    --with-mcrypt 
    --enable-pcntl 
    --enable-xml 
    --disable-rpath 
    --enable-shmop 
    --enable-sockets 
    --enable-zip 
    --enable-bcmath 
    --with-snmp 
    --disable-ipv6 
    --with-gettext  
    --enable-fpm 
    --with-fpm-user=php 
    --with-fpm-group=php 
    --with-openssl
    
    make && make install

    3. 配置 PHP:

    # 复制配置文件
    cd /data/service/php/etc/
    cp php-fpm.conf.default php-fpm.conf
    cp /data/install_packages/php/php-7.0.30/php.ini-production .
    mv php.ini-production php.ini
    
    # 修改 php.ini 配置
    sed -i 's#;date.timezone =#date.timezone = PRC#g' php.ini 
    sed -i 's#expose_php = On#expose_php = Off#g' php.ini 
    sed -i 's#^;cgi.fix_pathinfo=1#cgi.fix_pathinfo=1#g' php.ini 
    sed -i 's#disable_functions =#disable_functions =exec,system,eval,passthru,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,fsocket,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server#g' php.ini 
    sed -i 's#max_execution_time = 30#max_execution_time = 300#g' php.ini 
    sed -i 's#max_input_time = 60#max_input_time = 300#g' php.ini 
    sed -i 's#post_max_size = 8M#post_max_size = 24M#g' php.ini 
    sed -i 's#upload_max_filesize = 2M#upload_max_filesize = 4M#g' php.ini
    sed -i 's#pdo_mysql.default_socket=#pdo_mysql.default_socket= /data/logs/mysql-3306/mysql.sock#g' php.ini 
    sed -i 's#mysqli.default_socket =#mysqli.default_socket = /data/logs/mysql-3306/mysql.sock#g' php.ini 
    sed -i 's#;session.save_path = "/tmp"#session.save_path = "/data/logs/php/tmp"#g' php.ini
    
    # 修改 www.conf 配置
    cd php-fpm.d/
    cp www.conf.default www.conf
    sed -i 's#;rlimit_files = 1024#rlimit_files = 65535#g' www.conf
    sed -i 's#;listen.owner = php#listen.owner = www#g' www.conf
    sed -i 's#;listen.group = php#listen.group = www#g' www.conf
    sed -i 's#;listen.mode = 0660#listen.mode = 0660#g' www.conf

    4. 配置启动:

    # 配置启动脚本
    cp /data/install_packages/php/php-7.0.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    chmod +x /etc/init.d/php-fpm
    
    # 启动服务
    /etc/init.d/php-fpm start
    
    # 配置开机自启动
    echo '' >> /etc/rc.local
    echo '# PHP STARTUP' >> /etc/rc.local
    echo '/etc/init.d/php-fpm start &' >> /etc/rc.local

    PHP 安装完成!

    5. 测试 LNMP 环境:

    # 添加 PHP 测试页面
    echo '<?php
    phpinfo();
    ?>' > /tmp/index.php
    
    # 添加 nginx 配置
    vi /data/service/nginx/conf/vhosts/php.conf

    内容如下:

    server {
        listen 80;
        server_name localhost;
        root /tmp;
        index index.php index.html index.html;
    
        location / {
            try_files $uri $uri/ /index.php?$args;
        }
       
        location ~ .*.(php)?$ {
            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;
        }
    }

    启动 Nginx:

    /data/service/nginx/sbin/nginx

    访问结果如下:

    到此 LNMP 环境搭建完成!最终的服务安装目录结构如下:

    |-- install_packages
    |   |-- mysql
    |   |-- nginx
    |   |-- php
    |   `-- zabbix
    |-- logs
    |   |-- mysql-3306
    |   |-- nginx
    |   `-- php
    |-- service
    |   |-- mysql-3306
    |   |-- nginx
    |   `-- php

    安装 Zabbix Server

    先来看看我们使用 Zabbix 具体是怎样工作的:

    1. 基础配置:

    创建数据库:

    mysql -uroot -p

    执行如下 SQL:

    create database zabbix default character set utf8 collate utf8_general_ci;
    grant all on zabbix.* to zbxuser@'127.0.0.1' identified by '123456';
    flush privileges;
    quit;

    创建服务器用户和相关目录:

    mkdir /lxserver/logs/zabbix
    useradd zabbix -s /usr/sbin/nologin
    chown -R zabbix:zabbix /lxserver/logs/zabbix/

    2. 编译安装 Zabbix Server:

    # 解压
    cd /data/install_packages/zabbix
    tar -zxf zabbix-4.4.4.tar.gz
    cd zabbix-4.4.4/
    
    # 编译安装
    ./configure --prefix=/data/service/zabbix 
    --enable-server 
    --enable-agent 
    --with-mysql=/data/service/mysql-3306/bin/mysql_config 
    --with-net-snmp 
    --with-libcurl 
    --with-libxml2
    
    make && make install

    3. 修改数据库脚本并导入:

    # 修改表的存储引擎
    cd /data/install_packages/zabbix/zabbix-4.4.4/database/mysql
    sed -i "s#ENGINE=InnoDB#ENGINE=tokudb#g" schema.sql
    
    # 导入数据
    mysql -uroot -p zabbix < /data/install_packages/zabbix/zabbix-4.4.4/database/mysql/schema.sql 
    mysql -uroot -p zabbix < /data/install_packages/zabbix/zabbix-4.4.4/database/mysql/images.sql 
    mysql -uroot -p zabbix < /data/install_packages/zabbix/zabbix-4.4.4/database/mysql/data.sql 

    4. 修改 Zabbix Server 配置:

    cd /data/service/zabbix/etc/
    vim zabbix_server.conf

    主要修改以下配置:

    LogFile=/data/logs/zabbix/zabbix_server.log
    PidFile=/data/logs/zabbix/zabbix_server.pid
    DBHost=127.0.0.1
    DBName=zabbix
    DBUser=zbxuser
    DBPassword=123456
    DBSocket=/data/logs/mysql-3306/mysql.sock
    DBPort=3306

    5. 添加启动脚本:

    cp /data/install_packages/zabbix/zabbix-4.4.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/
    vim /etc/init.d/zabbix_server

    修改如下:

    修改下面的启动命令:

    6. 配置 MySQL 的 lib,否则可能会报错:error while loading shared libraries:

    echo "/data/service/mysql-3306/lib" >> /etc/ld.so.conf
    ldconfig

    7. 启动 Zabbix Server:

    # 启动
    /etc/init.d/zabbix_server start
    
    # 配置开机自启动
    echo '' >> /etc/rc.local
    echo '# ZABBIX SERVER STARTUP' >> /etc/rc.local
    echo '/etc/init.d/zabbix_server start &' >> /etc/rc.local

    8. 查看进程:

    netstat -tlunp | grep zabbix

    可以看到启动的 10051 端口!

    配置 Zabbix Web UI

    在 Zabbix 配置 完成之后,那只是后端服务,用户需要访问则需要前端页面,这就涉及 Web UI 部署。

    1. 将前端文件移动到指定目录:

    mkdir /data/service/zabbix-web
    cp -r /data/install_packages/zabbix/zabbix-4.4.4/frontends/php /data/service/zabbix-web/
    chmod 777 -R /data/service/zabbix-web/php

    2. 配置 nginx:

    cd /data/service/nginx/conf/vhosts/
    rm -f php.conf 
    vi zabbix.conf

    内容如下:

    #############################################################
    # Zabbix
    #############################################################
    server {
        listen 80;
        server_name localhost;
        root /data/service/zabbix-web/php;
        index index.php index.html index.html;
    
        location / {
            try_files $uri $uri/ /index.php?$args;
        }
    
        location ~ .*.(php)?$ {
            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;
        }
    }

    重载 Nginx:

    /lxserver/service/nginx/sbin/nginx -s reload

    3. 访问配置:

    如果点击没有反应,则去服务器查看 /data/logs/php 的目录权限是否全为 777,没有则设置为 777:

    下面如果有报错的配置,则需要去 php.ini 配置文件中将值调整为相应的参数并重启 PHP:

    配置数据库连接:

    配置这个 Zabbix 的名称,主机我采用本机的 IP 地址,便于区分:

    确认配置:

    配置完成:

    登录测试,初始用户密码为:Admin / zabbix

    如图所示:

    汉化 Web UI:

    更新后查看:

    安装 Zabbix Agent

    选择一台其他主机作为需要监控的主机,安装 agent。

    1. 基础配置:

    # 创建用户和目录
    useradd zabbix -s /usr/sbin/nologin
    mkdir -p /data/install_packages/zabbix
    mkdir -p /data/logs/zabbix
    mkdir -p /data/service
    chown -R zabbix.zabbix /data/logs/zabbix
    
    # 安装依赖
    yum install -y net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel pcre*

    2. 编译安装:

    cd /data/install_packages/zabbix
    tar -zxf zabbix-4.4.4.tar.gz 
    cd zabbix-4.4.4/
    ./configure --prefix=/data/service/zabbix --enable-agent
    make && make install

    3. 配置 agent:

    cd /data/service/zabbix/etc/
    vim zabbix_agentd.conf

    配置如下:

    PidFile=/data/logs/zabbix/zabbix_agentd.pid
    LogFile=/data/logs/zabbix/zabbix_agentd.log
    Server=192.168.0.100
    ListenPort=10050
    ServerActive=192.168.0.100
    Hostname=192.168.0.50

    注意:Server 和 ServerActive 都配置 Server 的 IP 地址,Hostname 为了便于区分不通的机器使用本机的 IP 地址,当然你也可以自己给他取名字。

    4. 配置启动:

    chown -R zabbix.zabbix /data/service/zabbix
    cp /data/install_packages/zabbix/zabbix-4.4.4/misc/init.d/tru64/zabbix_agentd /etc/init.d/
    chmod 755 /etc/init.d/zabbix_agentd
    vim /etc/init.d/zabbix_agentd

    修改如下:

    建立命令软链接:

    ln -s /data/service/zabbix/sbin/* /usr/local/sbin/
    ln -s /data/service/zabbix/bin/* /usr/local/bin/

    启动服务并配置开机自启动:

    # 启动
    /etc/init.d/zabbix_agentd start
    
    # 配置开机自启动
    echo '' >> /etc/rc.local
    echo '# ZABBIX AGENT STARTUP' >> /etc/rc.local
    echo '/etc/init.d/zabbix_agentd start &' >> /etc/rc.local

    当然,对于 Server 端的 agent 我们在编译 Server 的时候就编译了,只需要按照上面的配置好就行。

    配置好后启动起来就会发现之前的告警没了:

    到此基础的安装完成! 

    agent 一键安装脚本:

    #!/bin/bash
    
    ##############################################################################
    # 用途:Zabbix agent 安装
    # 作者:Dylan
    # 时间:2020-01-06
    ##############################################################################
    
    ##############################################################################
    # 基础配置
    ##############################################################################
    ZABBIX_SERVER_IP="192.168.0.100"
    LOCAL_IP=$(/usr/sbin/ip a | grep "inet" | grep -v "inet6" | grep -v "127.0.0.1" | awk '{print $2}' | cut -d "/" -f 1 | head -1)
    BASE_PATH="/data"
    ZABBIX_PACKAGE_PATH="${BASE_PATH}/install_packages/zabbix"
    ZABBIX_LOGS_PATH="${BASE_PATH}/logs/zabbix"
    ZABBIX_INSTALL_PATH="${BASE_PATH}/service/zabbix"
    ZABBIX_NAME="zabbix-4.4.4"
    ZABBIX_PACKAGE_NAME="${ZABBIX_NAME}.tar.gz"
    
    
    ##############################################################################
    # 开始
    ##############################################################################
    # 创建用户和目录授权
    useradd zabbix -s /usr/sbin/nologin
    mkdir -p ${ZABBIX_LOGS_PATH}
    chown -R zabbix.zabbix ${ZABBIX_LOGS_PATH}
    
    # 安装依赖
    yum install -y net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel pcre*
    
    # 编译安装
    cd ${ZABBIX_PACKAGE_PATH}
    tar -zxf ${ZABBIX_PACKAGE_NAME} 
    cd ${ZABBIX_NAME}
    ./configure --prefix=${ZABBIX_INSTALL_PATH} --enable-agent
    make && make install
    
    # 修改配置
    sed -i "s%LogFile=/tmp/zabbix_agentd.log%#LogFile=/tmp/zabbix_agentd.log%g" ${ZABBIX_INSTALL_PATH}/etc/zabbix_agentd.conf
    sed -i "s%Server=127.0.0.1%#Server=127.0.0.1%g" ${ZABBIX_INSTALL_PATH}/etc/zabbix_agentd.conf
    sed -i "s%ServerActive=127.0.0.1%#ServerActive=127.0.0.1%g" ${ZABBIX_INSTALL_PATH}/etc/zabbix_agentd.conf
    sed -i "s%Hostname=Zabbix server%#Hostname=Zabbix server%g" ${ZABBIX_INSTALL_PATH}/etc/zabbix_agentd.conf
    
    echo "PidFile=${ZABBIX_LOGS_PATH}/zabbix_agentd.pid
    LogFile=${ZABBIX_LOGS_PATH}/zabbix_agentd.log
    Server=${ZABBIX_SERVER_IP}
    ListenPort=10050
    ServerActive=${ZABBIX_SERVER_IP}
    Hostname=${LOCAL_IP}" >> ${ZABBIX_INSTALL_PATH}/etc/zabbix_agentd.conf
    
    # 添加启动脚本
    chown -R zabbix.zabbix ${ZABBIX_INSTALL_PATH}
    cp ${ZABBIX_PACKAGE_PATH}/${ZABBIX_NAME}/misc/init.d/tru64/zabbix_agentd /etc/init.d/
    chmod 755 /etc/init.d/zabbix_agentd
    sed -i "s#PIDFILE=/tmp/zabbix_agentd.pid#PIDFILE=${ZABBIX_LOGS_PATH}/zabbix_agentd.pid#g" /etc/init.d/zabbix_agentd
    
    # 建立软链接
    ln -s ${ZABBIX_INSTALL_PATH}/sbin/* /usr/local/sbin/
    ln -s ${ZABBIX_INSTALL_PATH}/bin/* /usr/local/bin/
    
    # 启动
    /etc/init.d/zabbix_agentd start
    
    # 配置开机自启动
    echo '' >> /etc/rc.local
    echo '# ZABBIX AGENT STARTUP' >> /etc/rc.local
    echo '/etc/init.d/zabbix_agentd start &' >> /etc/rc.local
    
    echo "-----------------------------------------------------"
    echo "安装完成:"
    echo "-----------------------------------------------------"
    ps -ef | grep zabbix
  • 相关阅读:
    Hive性能分析和优化方法
    浅谈MySQL中优化sql语句查询常用的30种方法
    spark 源码阅读博客
    spark shell学习笔记
    用shell 实现对MySQL数据库分页
    hive 1.2 配置
    spark1.4配置安装
    HBase学习
    【转】解密饿了么大前端团队
    【转】我心目中的支付宝架构
  • 原文地址:https://www.cnblogs.com/Dy1an/p/12132297.html
Copyright © 2011-2022 走看看