zabbix3.4.14 源码编译安装

此文借鉴于:https://www.cnblogs.com/Dy1an/p/9230644.html

zabbix依赖与lnmp或lamp(此处使用lnmp)

主要的几个程序:

1、zabbix_server:zabbix 服务端核心服务,事务处理都在于它 

2、zabbix_agentd: 客户端守护进程,此进程收集客户端数据,例如 CPU负载、内存、硬盘使用情况等

3、zabbix_get:主要用于测试监控项是否能够正常使用

4、zabbix_sender: 用于发送给 server 或者 proxy,通常用于耗时比较长的检查,避免超时

5、zabbix_proxy: 特殊的网络环境可以作为一个中转站,从 agent 到 proxy 再到 server 这样实现

        Zabbix 本身可以直接使用自带的脚本运行,但是其 WEB 端是 PHP 写的,所以我们就需要搭建 LNMP 环境。

以下是我本机的虚拟机环境所选择的版本:

服务

版本

扫描二维码关注公众号,回复: 3281798 查看本文章

操作系统

CENTOS 7.5

NGINX

nginx-1.14

MySQL

5.7

PHP

php-7.0.30

安装nginx

【1】创建相应的用户与目录:

# 创建目录
mkdir /opt/service
mkdir -p /opt/logs/nginx
mkdir -p /opt/packages/nginx

# 创建监听用户
useradd www -s /sbin/nologin

【2】安装依赖:

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

【3】上传包到 /opt/packages/nginx 目录并解压编译安装:

#先进性解压
#编译安装
cd nginx-1.14

./configure --prefix=/opt/service/nginx --user=www --group=www --with-http_realip_module --with-http_stub_status_module --with-stream  --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module --with-http_mp4_module --with-http_realip_module --with-pcre=/opt/packages/nginx/pcre-8.39 --with-openssl=/opt/packages/nginx/openssl-1.1.0c --with-zlib=/opt/packages/nginx/zlib-1.2.8 --with-http_v2_module --with-ipv6 --with-http_image_filter_module --add-module=/opt/packages/nginx/nginx-upload-module-2.2 --add-module=/opt/packages/nginx/nginx-upstream-fair-master --add-module=/opt/packages/nginx/ngx_cache_purge-2.3

make && make install

【4】初始化配置 NGINX:

# 创建额外配置文件目录,方便管理
mkdir /opt/service/nginx/conf/vhosts

# 简单的配置优化
vim /opt/service/nginx/conf/nginx.conf

配置文件内容:

user  www www;
worker_processes  4;
error_log  /opt/logs/nginx/error.log;
pid        /opt/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"';
 
    access_log  /opt/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 8m;
   
    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;
   
    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;
#指定 server
    server {
        listen       80;
        server_name  192.168.17.32;
	    root 	/opt/service/nginx/html;
	    index index.php;

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /opt/service/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

【5】添加到开机自启动:

# 授权
chmod 777 /etc/rc.local

# 加入开机启动
echo '' >> /etc/rc.local
echo '# nginx startup' >> /etc/rc.local
echo '/opt/service/nginx/sbin/nginx &' >> /etc/rc.local

安装 MySQL

所需安装包: mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz  这个为编译后的源码包 ,可以后来自己指定配置文件修改目录

【1】安装依赖

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*

此处不多写  可用以下脚本来跑:

#!/bin/bash

DIR=`pwd`
DATE=`date +%Y%m%d%H%M%S`

mkdir -p /opt/service/mysql
mkdir -p /opt/service/mysql/data
mkdir -p /opt/service/mysql/log
mkdir -p /opt/service/install
mkdir -p /usr/local/mysql/bin

cd /opt/packages
if [ `uname -m` == "x86_64" ];then   #查看是系统否是64位的,如果是就下载64位的包
  rm -rf mysql-5.7.17-linux-glibc2.5-x86_64
  if [ ! -f mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz ];then
	 wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/mysql/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
  fi
  tar -xzvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
  mv mysql-5.7.17-linux-glibc2.5-x86_64/* /opt/service/mysql

fi

#install mysql-------------------------------------------
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql

\cp -f /opt/service/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -i 's/^basedir=$/basedir=\/opt/service\/mysql/' /etc/init.d/mysqld
sed -i 's/^datadir=$/datadir=\/opt/service\/mysql\/data/' /etc/init.d/mysqld
cat > /etc/my.cnf <<END
[client]
port = 3306
socket = /opt/service/mysql/mysql.sock

[mysql]
prompt="\u@MySQL-01 \R:\m:\s [\d]> "
no-auto-rehash  #关闭自动补全命令,auto-rehash表示开启自动补全

[mysqld]
user = mysql
port = 3306
basedir = /opt/service/mysql/
datadir = /opt/service/mysql/data/
socket  = /opt/service/mysql/mysql.sock
pid-file = /opt/service/mysql/MySQL-01.pid
slow_query_log_file = /opt/service/mysql/log/dataslow.log
log_error = /opt/service/mysql/log/dataerror.log
server_id = 1
log-bin = /opt/service/mysql/log/mybinlog.log
gtid_mode=on
enforce_gtid_consistency=1
character-set-server = utf8mb4
skip_name_resolve = 1  
open_files_limit = 65535 
back_log = 1024 
max_connections = 512
max_connect_errors = 1000000
table_open_cache = 20000
table_definition_cache = 20000
table_open_cache_instances = 64
thread_stack = 512K
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 768
query_cache_size = 0
query_cache_type = 0
interactive_timeout = 600
wait_timeout = 600
tmp_table_size = 32M
max_heap_table_size = 32M
slow_query_log = 1
long_query_time = 0.1
log_queries_not_using_indexes =1
log_throttle_queries_not_using_indexes = 60
min_examined_row_limit = 100
log_slow_admin_statements = 1
log_slow_slave_statements = 1
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
expire_logs_days = 30
master_info_repository = TABLE
relay_log_info_repository = TABLE
#gtid_mode = on
#enforce_gtid_consistency = 1
log_slave_updates
binlog_format = row
binlog_checksum = 1
relay_log_recovery = 1
relay-log-purge = 1
key_buffer_size = 32M
read_buffer_size = 8M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
lock_wait_timeout = 3600
explicit_defaults_for_timestamp = 1
innodb_thread_concurrency = 0
innodb_sync_spin_loops = 100
innodb_spin_wait_delay = 30

transaction_isolation = REPEATABLE-READ
#innodb_buffer_pool_size = 22938M  #暗安装时可能由于size太大报错,改小一点就可以了,一般8M,64M
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
#innodb_data_file_path = ibdata1:1G:autoextend  
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 32M
innodb_log_file_size = 2G
innodb_log_files_in_group = 2
innodb_max_undo_log_size = 4G

innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_neighbors = 0
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_purge_threads = 4
innodb_page_cleaners = 4
innodb_open_files = 65535
innodb_max_dirty_pages_pct = 50
innodb_flush_method = O_DIRECT
innodb_lru_scan_depth = 4000
innodb_checksums = 1
innodb_checksum_algorithm = crc32
innodb_lock_wait_timeout = 10
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
innodb_file_per_table = 1
innodb_online_alter_log_max_size = 4G
internal_tmp_disk_storage_engine = InnoDB
innodb_stats_on_metadata = 0

innodb_status_file = 1
innodb_status_output = 0
innodb_status_output_locks = 0

#performance_schema
performance_schema = 1
performance_schema_instrument = '%=on'

#innodb monitor
innodb_monitor_enable="module_innodb"
innodb_monitor_enable="module_server"
innodb_monitor_enable="module_dml"
innodb_monitor_enable="module_ddl"
innodb_monitor_enable="module_trx"
innodb_monitor_enable="module_os"
innodb_monitor_enable="module_purge"
innodb_monitor_enable="module_log"
innodb_monitor_enable="module_lock"
innodb_monitor_enable="module_buffer"
innodb_monitor_enable="module_index"
innodb_monitor_enable="module_ibuf_system"
innodb_monitor_enable="module_buffer_page"
innodb_monitor_enable="module_adaptive_hash"

[mysqldump]
quick
max_allowed_packet = 32M
END
chown -R mysql. /opt/service/mysql/
/opt/service/mysql/bin/mysqld --initialize-insecure --datadir=/opt/service/mysql/data/ --basedir=/opt/service/mysql/ --user=mysql
ln -s /opt/service/mysql/bin/mysqld /usr/local/mysql/bin/mysqld
chmod 755 /etc/init.d/mysqld
/etc/init.d/mysqld start

#add PATH
if ! cat /etc/profile | grep "export PATH=\$PATH:/opt/service/mysql/bin" &> /dev/null;then
	echo "export PATH=\$PATH:/opt/service/mysql/bin" >> /etc/profile
fi
source /etc/profile

登录数据库新建用户

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

至此 MySQL 5.7 安装配置完成,密码 123456,接下来安装 PHP!

安装 PHP

所需安装包:

安装包

php-7.0.30.tar.gz
libiconv-1.14.tar.gz

【1】创建相应的用户与目录:

# 创建目录
mkdir -p /opt/logs/php/tmp
mkdir -p /opt/packages/php
chown -R 777 /opt/logs/php/tmp

# 创建监听用户
useradd php -s /sbin/nologin

【2】安装依赖: 

# 安装 epel
yum install -y epel-release

# 安装依赖
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

【3】将安装包上传到 /opt/packages/php ,然后编译安装:

# 解压安装包
cd /opt/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=/opt/service/php --with-config-file-path=/opt/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

【4】配置 PHP:

# 复制配置文件
cd /opt/service/php/etc/
cp php-fpm.conf.default php-fpm.conf
cp /opt/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= /opt/logs/mysql/mysql.sock#g' php.ini 
sed -i 's#mysqli.default_socket =#mysqli.default_socket = /opt/logs/mysql/mysql.sock#g' php.ini 
sed -i 's#;session.save_path = "/tmp"#session.save_path = "/opt/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

【5】配置php-fpm启动脚本: 

cp /opt/packages/php/php-7.0.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

【6】启动服务和开机自启动:

# 启动服务
/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

【7】至此,LNMP 环境都搭建完成,我们可以在 NGINX 中添加测试:

# 添加 PHP 测试页面
<?php
   phpinfo();
?>

【8】启动 Nginx 查看效果: 
/opt/service/nginx/sbin/nginx

到此依赖环境搭建完成。


安装 Zabbix Server

安装包:

安装包

zabbix-3.4.10.tar.gz

【1】创建相应的数据库:

# 登录数据库
mysql -uroot -p123456

# 执行以下建库和用户 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';
grant all on zabbix.* to zbxuser@'localhost' identified by '123456';
grant all on zabbix.* to zbxuser@'%' identified by '123456';
flush privileges;
quit;

【2】 创建相关用户和目录:

# 创建相关用户
useradd zabbix -s /sbin/nologin

# 创建相关目录
mkdir /opt/packages/zabbix
mkdir /opt/logs/zabbix

# 授权
chown -R zabbix:zabbix /opt/logs/zabbix

【3】编译安装 Zabbix Server,将安装包上传到 /opt/packages/zabbix: 

cd /opt/packages/zabbix
tar -xf zabbix-3.4.10.tar.gz 
cd zabbix-3.4.10

# 编译安装
./configure --prefix=/opt/service/zabbix --enable-server --enable-agent --with-mysql=/opt/service/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2

make && make install

这里可以简单的说下编译参数:

1、ennable server 和 agent 代表本机 Server 端和 Agent 端都安装

2、with mysql 知道的文件是本机安装 MySQL 下的,如果你安装的路径和我不同,你可以使用 find 查找一下你的 mysql_config 在哪里

3、net snmp 是 Zabbix 监控需要用到的

【4】初始化数据库:MySQL 为我们提供了三个初始化脚本,注意导入顺序 

mysql -uroot -p123456 zabbix </opt/packages/zabbix/zabbix-3.4.10/database/mysql/schema.sql 
mysql -uroot -p123456 zabbix </opt/packages/zabbix/zabbix-3.4.10/database/mysql/images.sql 
mysql -uroot -p123456 zabbix </opt/packages/zabbix/zabbix-3.4.10/database/mysql/data.sql

【5】 配置 Zabbix Server:

cd /opt/service/zabbix/etc
vim zabbix_server.conf
# 以下是我开启的配置
LogFile=/opt/logs/zabbix/zabbix_server.log
PidFile=/opt/logs/zabbix/zabbix_server.pid
# 数据库连接信息
DBHost=localhost
DBName=zabbix
DBUser=zbxuser
DBPassword=123456
DBSocket=/opt/service/mysql/mysql.sock
DBPort=3306
Timeout=4
LogSlowQueries=3000

【6】配置启动文件: 

# 复制文件
cp /opt/packages/zabbix/zabbix-3.4.10/misc/init.d/fedora/core/* /etc/init.d/

# 修改,修改部分如图
vim /etc/init.d/zabbix_server

图1:

图2:

【7】 配置 MySQL 的 lib,否则会报错:error while loading shared libraries: libperconaserverclient.so.20

# 添加配置
echo "/opt/service/mysql/lib" >> /etc/ld.so.conf

# 执行命令生效配置
ldconfig

【8】 启动 Zabbix Server:CentOS 7 第一次启动容易出现各种毛病,建议使用全路径启动,之后就可以用 /etc/init.d/zabbix_server start 启动关闭了

/opt/service/zabbix/sbin/zabbix_server

【9】查看进程: 也可以使用 netstat 查看端口 10051

【10】加入开机启动:

# 加入开机启动
echo '' >> /etc/rc.local
echo '# zabbix server startup' >> /etc/rc.local
echo '/etc/init.d/zabbix_server start &' >> /etc/rc.local

【11】至此,Zabbix Server 服务端配置完成,下一篇将谈谈服务端的 WEB 怎么配置! 

简单的谈一下关于 CentOS 7 安装 Zabbix 过程中遇到的一些问题:

1、可能配置的 MySQL lib 不生效,还是报错 libperconaserverclient.so.20,可以采用 ln -s 建立软连接的方式把 MySQL 的 lib 目录下所有文件链接到 /usr/lib64 和 /usr/lib 下面,如果有问题,建议重启一下机器

2、zabbix 的监听用户是 zabbix,所有 logs/zabbix 目录该用户一定要有写的权限,否则无法启动

3、第一次启动用脚本启动可能不成功,建议使用全路径启动,之后再用脚本启动关闭,一切正常


配置web界面

【1】 拷贝 PHP 页面:

cp -r /opt/packages/zabbix/zabbix-3.4.10/frontends/php/ /opt/services/website/zabbix

【3】浏览器正常访问!  ip/inidex.php

 

【1】Next step,进入 PHP 配置检测,如果点击没反应,说明 /opt/logs/php/tmp 目录权限不对,执行 chmod 777 -R  /opt/logs/php 即可:必须保证右边都是ok,否则需要根据提示 进行模块的添加与开启。则需要去修改 php.ini 文件,改为系统需要你配置的参数,然后重启 php-fpm 即可!

 备注

【2】Next step,进入数据库配置:

 

【3】Next step,进入数据库配置:

 

1、Host:代表这台机器的主机名,这里使用 IP 地址,为了便于区分

2、Port:客户端连接的端口,默认就好

3、Name:这个平台的总名字,如果是你们公司的,可以改成你们公司的名字,当然,这些配置后期都是可以修改的 

【4】Next step,复查之前的配置:

 

【5】Next step,配置完成:

 

     备注:这里提示我们之前生成的配置没有保存到服务器上面,需要我们点击 Download 下载后上传到 /opt/services/website/zabbix/conf 目录,同样的,以后我们如果想修改某些配置,我们也可以去该目录下修改 zabbix.conf.php 文件

【6】上传完成后,点击 Finish 就会刷新页面,再度 Finish 就完成基础配置! 

 

 【7】进入登录页面:默认用户密码 admin / zabbix

 

注意:如果这里不是显示该页面,二是提示你是匿名用户且无法点击登录的时候,你需要去修改 php.ini 的配置:将 cgi.fix_pathinfo的值改为 1,再度重启 php-fpm 即可正常。

猜你喜欢

转载自blog.csdn.net/weixin_41436549/article/details/82802618