基于LNMP的zabbix4.4源码编译安装
杂记
监控系统是产品生命周期中非常重要的一环,监控系统的完善,将决定运维工作是否能高效的开展。
之前在某市GA担任大数据系统维护工作,服务器1000台左右,系统与数据量都比较庞大,导致经常出现故障,维护时间、人力成本都大大增加,接手时竟没有一套完整的监控系统,每天做的就是手动各个数据流的情况,并用表格记录,尽管后续使用脚本巡检,但还是力不从心。后续才搭建了Zabbix监控系统,配合短信报警,大大提高运维效率。
一、监控架构
目前主流的监控系统技术栈,从数据源采集到的数据,通过缓冲队列存储到数据库中,再通过图表展示。监控告警也只占了其中一部分。
Zabbix 基于web页面提供分布式的开源监控系统,可以基于SNMP、IPMI监控硬件;基于Zabbix agent监控各种网络、服务、系统、web、日志、流量等参数
- 优点:部署方便快捷、可以自动发现注册设备、可以分布式监控、开放式接口
- 缺点:mysql作为底层数据库,压力较大;需要在监控主机安装agent;对容器不友好
Zabbix 各组件说明
-
Zabbix Web GUI:提供Web界面
-
Zabbix Database:提供数据存储功能,专用于存储配置信息,以及采集到的数据
-
Zabbix Server:接收Agent采集数据的核心组件。
-
Zabbix Agent:部署在被监控主机上,用于采集本地数据。
- Zabbix Proxy:当被监控节点较多时,用于减轻Server压力的组件,也用于分布式监控系统。由Proxy接收数据后统一发送至Server。
二、LNMP安装
由于Zabbix是基于web界面的监控系统,首先给Zabbix安装LNMP/LAMP
1.关闭防火墙
setenforce 0 #临时关闭SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #永久关闭SELinux(重启生效)
systemctl stop firewalld.service #临时关闭防火墙
systemctl disable firewalld.service #永久关闭防火墙
2.Nginx编译安装
yum install gcc gcc-c++ glibc pcre-devel zlib-devel openssl-devel -y
wget -c http://nginx.org/download/nginx-1.19.1.tar.gz
tar -xzf nginx-1.19.1.tar.gz
cd nginx-1.19.1
useradd www
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
添加开机启动项
echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
启动nginx
/usr/local/nginx/sbin/nginx
3.mysql编译安装
创建mysql用户
useradd -s /sbin/nologin mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
源码下载
yum install cmake ncurses-devel ncurses –y
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25.tar.gz
wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
tar -xzvf boost_1_59_0.tar.gz
tar -xzvf mysql-5.7.25.tar.gz
编译安装
cd mysql-5.7.25
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=../boost_1_59_0 \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0
安装
make && make install
添加环境变量
echo -e '\n\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile && source /etc/profile
添加启动项
\cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl enable mysqld
修改配置文件/etc/my.conf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
expire_logs_days = 10
max_binlog_size = 100M
slow_query_log = 1
slow_query_log_file = slow-query.log
long-query_time = 2
log-error = error.log
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
初始化mysql
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
启动mysql
systemctl start mysqld
4.php编译安装
下载依赖
yum -y install epel-release
yum install gcc gcc-c++ gcc-g77 make libtool autoconf patch unzip automake libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl libmcrypt libmcrypt-devel libpng libpng-devel libjpeg-devel openssl openssl-devel gd-devel curl curl-devel libxml2 libxml2-devel libicu-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl autoconf automake libaio* sqlite-devel libcurl-devel libxslt libxslt-devel freetype freetype-devel -y
添加用户
groupadd www
useradd -g www www
源码下载
wget http://www.php.net/distributions/php-7.4.8.tar.gz
解压安装
tar -xzvf php-7.4.8.tar.gz
cd php-7.4.8
./configure --prefix=/usr/local/php \
--with-config-file-path=/etc \
--with-fpm-user=www \
--with-fpm-group=www \
--with-curl \
--with-freetype \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libdir=lib64 \
--with-mysqli \
--with-openssl \
--with-external-pcre \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-pear \
--with-iconv-dir \
--with-ldap \
--with-jpeg \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-zip \
--with-bz2 \
--with-mhash \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-mysqlnd \
--enable-fpm \
--enable-gd \
--enable-bcmath \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-shared \
--enable-soap \
--enable-intl \
--enable-ftp \
--enable-sockets \
--enable-sysvsem \
--enable-maintainer-zts \
--enable-xml \
--enable-fpm \
--without-gdbm
make && make install
编译错误解决
错误提示一:
configure: error: Package requirements (libzip >= 0.11) were not met: No package 'libzip'
解决方法:
#php 7.4需要libzip的版本在1.2.0及以上,重新编译安装libzip
yum install cmake cmake3 -y
wget https://libzip.org/download/libzip-1.5.0.tar.gz
tar -zxvf libzip-1.5*
cd libzip-1.5*
mkdir build && cd build && cmake3 .. && make && make install
错误提示二:
解决方法:
wget https://ftp.pcre.org/pub/pcre/pcre2-10.34.tar.gz
tar -xzvf pcre2-10.34.tar.gz
cd pcre2-10.34/
./configure --enable-pcre2-16 \
--enable-pcre2-32 \
--enable-jit \
--enable-jit-sealloc
make && make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
错误提示三:
解决方法:
cp -frp /usr/lib64/libldap* /usr/lib/
# 不复制会编译报错
错误提示四:
解决方法:
由于--enable-mbstring
模块需要正则表达式 oniguruma
oniguruma-devel
模块
yum install -y http://mirror.centos.org/centos-7/7.8.2003/cloud/x86_64/openstack-queens/Packages/o/oniguruma-6.7.0-1.el7.x86_64.rpm
yum install -y http://mirror.centos.org/centos-7/7.8.2003/cloud/x86_64/openstack-queens/Packages/o/oniguruma-devel-6.7.0-1.el7.x86_64.rpm
错误提示五:
提示/usr/bin/ld: ext/ldap/.libs/ldap.o: undefined reference to symbol 'ber_strdup'
解决方法:
vi Makefile
在开头是EXTRA_LIBS
行尾加上 -llber
,存盘退出
安装完成
拷贝配置启动文件
cp php.ini-development /etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod o+x /etc/init.d/php-fpm
ln -s /usr/local/php/bin/php /usr/local/bin
ln -s /usr/local/php/sbin/php-fpm /usr/local/sbin
添加环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/php/bin
source /etc/profile
将php-fpm
加入systemctl
管理
vim /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
[Install]
WantedBy=multi-user.target
添加开机启动项,并启动php-fpm
systemctl enable php-fpm
systemctl start php-fpm
或者 /usr/local/php/sbin/php-fpm
另外:
php7源码安装的。php-fpm在PHP 5.3.2以后的版本不支持以前的php-fpm (start|restart|stop|reload)
重启
kill -SIGUSR2 进程ID
5.修改nginx配置文件,支持php,修改如下,其他不用修改
location / {
root html;
index index.php index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
重启nginx
/usr/local/nginx/sbin/nginx -s reload
添加php测试页面
cat>/usr/local/nginx/html/index.php<
EOF
三、Zabbix_Server安装
1.安装依赖(php安装过则忽略)
yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI libven-devel libevent libevent-devel OpenIPMI OpenIPMI-devel ipmitool freeipmi
2.创建操作系统用户Zabbix
groupadd zabbix
useradd -g zabbix -s /sbin/nologin zabbix
3.下载源码安装包安装
https://www.zabbix.com/cn/download_sources#tab:unsupported
上传解压编译
tar -xzvf zabbix-4.4.10.tar.gz
cd zabbix-4.4.10/
./configure --prefix=/usr/local/Zabbix --sysconfdir=/usr/local/Zabbix/etc/ --enable-server --enable-agent --with-net-snmp --with-openipmi --with-libcurl --with-mysql=/usr/local/mysql/bin/mysql_config --with-libxml2 --with-mysqli
make && make install
4.拷贝修改启动文件
ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/
cp misc/init.d/tru64/zabbix_server /etc/init.d/zabbix_server
修改启动文件的路径
chmod o+x /etc/init.d/zabbix_server
#路径与编译安装的路径保持一致
vim /etc/rc.d/init.d/zabbix_server
如果未修改会报如下错误
5.配置zabbix数据库
登录mysql数据库
注意新版本不要使用create database zabbix charset=utf8
; 不然zabbix会报错
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'Huawei12#$';
flush privileges;
6.导入zabbix数据库
进入源码文件夹
cd zabbix-4.4.10
#注意要按顺序导入
mysql -uzabbix -pHuawei12#$ zabbix
7.修改zabbix配置文件
cd /usr/local/Zabbix/etc
mv zabbix_server.conf zabbix_server.conf.bak
vim zabbix_server.conf
LogFile=/tmp/Zabbix_server.log
DebugLevel=3
#账号密码和第5步中创建的保持一致
DBName=zabbix
DBUser=zabbix
DBPassword=Huawei12#$
DBPort=3306
StartPollers=10
StartTrappers=80
StartPingers=20
StartDiscoverers=15
StartTimers=5
HousekeepingFrequency=1
MaxHousekeeperDelete=500
CacheSize=128M
CacheUpdateFrequency=75
StartDBSyncers=10
HistoryCacheSize=32M
HistoryIndexCacheSize=16M
ValueCacheSize=32M
Timeout=30
UnreachablePeriod=120
LogSlowQueries=3000
8.重启zabbix服务
/etc/init.d/zabbix_server restart
四、初始化zabbix_Server
1.将zabbix php文件拷贝到nginx发布目录
cd zabbix-4.4.10
cp -a frontends/php/* /usr/local/nginx/html/
提示php有报错,修改vim /etc/php.ini根据报错信息更改参数即可
另外如果缺少php模块,
-
进入php源码包中,找到需要安装的扩展模块目录。
cd /root/php-7.4.8/ext/gd
-
在扩展模块目录,运行phpize程序。
/usr/local/php/bin/phpize
-
进行编译安装。
./configure --with-php-config=/usr/local/php/bin/php-config --with-external-gd --with-jpeg --with-freetype
-
make && make install
可以看到
gd.so
就出来了
然后配置vim /usr/local/php/etc/php.ini
,将该模块释放
2.修改完重启php-fpm
kill -SIGUSR2 进程ID
已经显示正常
3.下载配置文件
保存至/usr/local/nginx/html/conf/zabbix.conf.php
默认账号密码 Admin/zabbix
设置为中文
提示报错 无法连接zabbix_server
查看日志,提示无法找到mysql.sock
查看mysql配置文件
路径不一致,做个软连接即可
mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
/etc/rc.d/init.d/mysqld restart
五、配置zabbix_agent
1.客户端添加zabbix用户
useradd zabbix -s /sbin/nologin
2.将zabbix源码包传至其他客户端
tar -zxvf zabbix-4.4.10.tar.gz
cd zabbix-4.4.10
3.编译安装agent
./configure --prefix=/usr/local/zabbix --enable-agent
make && make install
ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/
4.修改zabbix_agent配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
#填写服务器IP
Server=192.168.197.128
#填写服务器IP
ServerActive=192.168.197.128
#填写客户端IP,由于是监控本机所有还是server服务器
#hostname与zabbix中配置的主机名一致,不然会报错(一般写agent的Ip)
Hostname = Zabbix server
5.拷贝启动文件并修改路径
cp misc/init.d/tru64/zabbix_agentd /etc/init.d/zabbix_agentd
chmod o+x /etc/init.d/zabbix_agentd
sed -i 's%/usr/local/sbin/zabbix_agentd%/usr/local/zabbix/sbin/zabbix_agentd%g' /etc/init.d/zabbix_agentd
6.客户端zabbix_agent启动
/etc/init.d/zabbix_agentd start
7.zabbix_server web配置添加agent
显示两个可用,添加正常