杂记
监控系统是产品生命周期中非常重要的一环,监控系统的完善,将决定运维工作是否能高效的开展。
之前在某市GA担任大数据系统维护工作,服务器1000台左右,系统与数据量都比较庞大,导致经常出现故障,维护时间、人力成本都大大增加,接手时竟没有一套完整的监控系统,每天做的就是手动各个数据流的情况,并用表格记录,尽管后续使用脚本巡检,但还是力不从心。后续才搭建了Zabbix监控系统,配合短信报警,大大提高运维效率。
目前主流的监控系统技术栈,从数据源采集到的数据,通过缓冲队列存储到数据库中,再通过图表展示。监控告警也只占了其中一部分。
Zabbix 基于web页面提供分布式的开源监控系统,可以基于SNMP、IPMI监控硬件;基于Zabbix agent监控各种网络、服务、系统、web、日志、流量等参数
Zabbix 各组件说明
Zabbix Web GUI:提供Web界面
Zabbix Database:提供数据存储功能,专用于存储配置信息,以及采集到的数据
Zabbix Server:接收Agent采集数据的核心组件。
Zabbix Agent:部署在被监控主机上,用于采集本地数据。
由于Zabbix是基于web界面的监控系统,首先给Zabbix安装LNMP/LAMP
setenforce 0 #临时关闭SELinux
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config #永久关闭SELinux(重启生效)
systemctl stop firewalld.service #临时关闭防火墙
systemctl disable firewalld.service #永久关闭防火墙
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
创建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
下载依赖
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
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
<?php
phpinfo();
php?>
EOF
yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI libven-devel libevent libevent-devel OpenIPMI OpenIPMI-devel ipmitool freeipmi
groupadd zabbix
useradd -g zabbix -s /sbin/nologin zabbix
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
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
如果未修改会报如下错误
登录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;
进入源码文件夹
cd zabbix-4.4.10
#注意要按顺序导入
mysql -uzabbix -pHuawei12#$ zabbix <database/mysql/schema.sql
mysql -uzabbix -pHuawei12#$ zabbix <database/mysql/images.sql
mysql -uzabbix -pHuawei12#$ zabbix <database/mysql/data.sql
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
/etc/init.d/zabbix_server restart
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
,将该模块释放
kill -SIGUSR2 进程ID
已经显示正常
保存至/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
useradd zabbix -s /sbin/nologin
tar -zxvf zabbix-4.4.10.tar.gz
cd zabbix-4.4.10
./configure --prefix=/usr/local/zabbix --enable-agent
make && make install
ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/
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
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
/etc/init.d/zabbix_agentd start
显示两个可用,添加正常
原文:https://blog.51cto.com/11442747/2514981