#作者:stackofumbrella
selinux关闭
# vim /etc/selinux/config
SELINUX=disabled
# setenforce 0
关闭防火墙
# systemctl stop firewalld
yum安装mysql
检查系统是否安装其他版本的MYSQL
# yum list installed | grep mysql
在查到的安装列表中删除无用的包
# yum -y remove mysql-libs.x86_64
# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum repolist all | grep mysql #可以不执行此操作
安装哪个版本就只开启哪个版本
# yum-config-manager --disable mysql56-community
# yum-config-manager --enable mysql57-community*
# yum -y install mysql-community-server
设置开机启动
# systemctl enable mysqld
# systemctl daemon-reload
注意:1、如果需要修改配置文件的参数或者有专用的配置文件,必须在这步进行替换,
如果启动之后再替换就会出现各种不可预测的错误!!!
2、修改Mysql的数据目录时,如果是挂载卷,里面会有lost+found这个目录,请务必将此目录删除,因为mysql启动时要求数据目录为空,才能进行正常的初始化操作!
启动mysql初始化
# systemctl start mysqld
查看mysql5.7的初始密码
# grep 'temporary password' /var/log/mysqld.log
# journalctl -xe|grep 'temporary password'
登陆MYSQL
# mysql -uroot -p
为root用户授权,尽量设置复杂密码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你设置的密码' WITH GRANT OPTION;
mysql> flush privileges;
mysql5.7在设置简单的root密码时会出现以下报错
mysql5.7在设置简单的root密码时会出现以下报错
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
解决办法
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql> update mysql.user set authentication_string = password('root'), password_expired = 'N', password_last_changed=now() where user = 'root';
mysql> flush privileges;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user 'root'@'localhost' identified by 'WSQ=+@27A/SJkqa>zsQA';
mysql> flush privileges;
mysql> show variables like 'character%';
# systemctl stop mysqld
# vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci #如果启动报错,这个参数可以删除
再次启动mysql
# systemctl start mysqld
创建zabbix数据库和账号
mysql> CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
mysql> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix';
mysql> flush privileges;
mysql> show databases;
下载zabbix-5.0.17.tar.gz解压
下载地址:https://cdn.zabbix.com/zabbix/sources/stable/
# tar -C /usr/local/ -xf zabbix-5.0.17.tar.gz
# cd /usr/local/zabbix-5.0.17/database/mysql/
# ls
data.sql images.sql schema.sql double.sql
mysql> use zabbix;
mysql> source /usr/local/zabbix-5.0.17/database/mysql/schema.sql;
mysql> source /usr/local/zabbix-5.0.17/database/mysql/images.sql;
mysql> source /usr/local/zabbix-5.0.17/database/mysql/data.sql;
mysql> source /usr/local/zabbix-5.0.17/database/mysql/double.sql;
mysql> show tables;
yum安装nginx
配置Nginx的yum仓库
# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
# yum -y install nginx
启动并加入开机启动
# systemctl enable nginx
# systemctl daemon-reload
# systemctl start nginx
编译安装php
下载:https://www.php.net/releases/
# yum -y install libxml2-devel bzip2 bzip2-devel curl-devel libjpeg-devel libpng libpng-devel freetype-devel libxslt-devel libzip-devel oniguruma-devel sqlite-devel libicu-devel krb5-devel openldap openldap-devel
# tar -xf php-7.4.25.tar.gz -C /usr/local/
# cd /usr/local/php-7.4.25
# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-freetype --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --with-jpeg --with-pdo-sqlite --with-pear --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --with-ldap=shared --without-gdbm --enable-fpm --enable-bcmath --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-shared --enable-mysqlnd --enable-ftp --enable-gd --enable-intl --enable-mysqlnd-compression-support --enable-maintainer-zts --disable-fileinfo --disable-debug
# make && make install
复制三个文件
# cp php.ini-production /usr/local/php/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
设置php.ini
注意:php的注释为分号,如果前面有分号请删除
# vim /usr/local/php/etc/php.ini
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
date.timezone = Asia/Shanghai
修改nginx配置
# vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name 192.168.1.103;
access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
location /zabbix {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
创建zabbix目录
# mkdir /usr/share/nginx/html/zabbix
测试php是否安装成功
# /usr/local/php/sbin/php-fpm -t
配置启动文件
# vim /usr/local/php/etc/php-fpm.conf
# vim /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=forking
PIDFile=/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
# systemctl enable php-fpm
# systemctl daemon-reload
# systemctl start php-fpm
# systemctl restart nginx
# ps -ef | grep php-fpm
root 27332 1 0 08:51 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
mysql 27333 27332 0 08:51 ? 00:00:00 php-fpm: pool www
mysql 27334 27332 0 08:51 ? 00:00:00 php-fpm: pool www
root 27336 7898 0 08:51 pts/1 00:00:00 grep --color=auto php-fpm
# groupadd zabbix
# useradd -g zabbix -m -s /sbin/nologin zabbix
# yum -y install gcc mysql-community-devel fping curl-devel libxml2 libxml2-devel unixODBC-devel net-snmp-devel libcurl-devel libssh2-devel OpenIPMI-devel openssl-devel openldap-devel libevent-devel
# cd /usr/local/zabbix-5.0.17/
# ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --enable-java --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc --with-ssh2 --with-openipmi --with-openssl --enable-proxy --prefix=/usr/local/zabbix
# make && make install
复制zabbix初始化页面和启动脚本
# cp -r /usr/local/zabbix-5.0.17/ui/* /usr/share/nginx/html/zabbix/
# chown -R nginx:nginx /usr/share/nginx/html/zabbix
# cp /usr/local/zabbix-5.0.17/misc/init.d/fedora/core/* /etc/init.d/
# chmod +x /etc/init.d/zabbix_*
修改/etc/init.d/zabbix_server和/etc/init.d/zabbix_agentd的BASEDIR=/usr/local/为BASEDIR=/usr/local/zabbix
修改zabbix_server.conf
# vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/log/zabbix_server.log
SNMPTrapperFile=/usr/local/zabbix/log/snmptrap.log
DBName=zabbix
DBUser=zabbix
DBHost=192.168.1.103
DBPassword=zabbix
StartPollers=10
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
ExternalScripts=/usr/local/zabbix/share/zabbix/externalscripts
重启nginx和php
# systemctl restart nginx
# systemctl restart php-fpm
zabbix server配置开机自启
# vim /etc/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=network.target
[Service]
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix-server.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=root
Group=root
[Install]
WantedBy=multi-user.target
# systemctl start zabbix_server
zabbix server启动报错
9883:20191127:110257.147 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2 "No such file or directory")
解决办法
# find / -name mysql.sock
# ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock
# vim /data/zabbix/etc/zabbix_server.conf
DBSocket=/data/mysql/mysql.sock
重新启动zabbix server即可
访问zabbix主页,进行数据库和服务名称的配置
例如服务器ip为192.168.1.103,即访问http://192.168.1.103/zabbix/setup.php
如果web页面显示PHP ldap Warning
# ls /usr/local/php/lib/php/extensions/no-debug-zts-*
opcache.a opcache.so
出现告警是因为ldap.so模块不存在,需要编译生成此模块并重新加载
,到源码包的解压目录下,进行源码编译ldap模块(其他模块缺失编译方法一样)
# cd /usr/local/php-7.4.25/ext/ldap
# /usr/local/php/bin/phpize #编译PHP扩展工具,主要是根据系统信息生成对应的configure文件
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap && make && make install
执行过程中可能会有如下报错
configure: error: Cannot find ldap.h 解决办法:yum -y install openldap openldap-devel
configure: error: Cannot find ldap libraries in /usr/lib 解决办法:cp -frp /usr/lib64/libldap* /usr/lib/
# ls /usr/local/php/lib/php/extensions/no-debug-zts-*/
opcache.a opcache.so ldap.so
# vim /usr/local/php/etc/php.ini
找到;extension=ldap的行把注销去掉,改成extension=ldap.so,如果模块存在,直接修改php.ini文件,然后保存退出,重启php-fpm和nginx即可
如果是yum安装的php
# yum -y install php-ldap
安装完成后同样按照上面方式修改配置文件
,然后看下ldap有没有加载
# /usr/local/php/bin/php -m
如果在列表中说明没有问题
页面配置完后进行zabbix汉化
1.管理员登入zabbix页面,找到User settings并点击进入,更改语言为Chinese(zh_CN),点击Update
2.解决zabbix图形页面中文乱码
2.1在windows系统中的C:\Windows\Fonts找到字体文件simsun.ttc
2.2将simsun.ttc文件上传至/usr/share/nginx/html/zabbix/assets/fonts目录,就是DejaVuSans.ttf所在的目录
# mv simsun.ttc simsun.ttf
# chown -R nginx:nginx /usr/share/nginx/html/zabbix/assets/fonts/simsun.ttf
2.3将配置文件/usr/share/nginx/html/zabbix/include/defines.inc.php中的以下两行更换为新的字体
define('ZBX_GRAPH_FONT_NAME', 'simsun'); // font file name
define('ZBX_FONT_NAME', 'simsun');
安装zabbix-agent
# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# yum -y install zabbix-agent
将已有的配置文件和脚本上传到/etc/zabbix下,覆盖原有的即可
修改配置文件
# vim /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=100
Server=192.168.1.103 #zabbix server的ip地址
ServerActive=192.168.1.103
Hostname=zabbix-jenkins #agent的主机名
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
Timeout=10
# chmod +x /etc/zabbix/scripts/*
# chmod 644 /etc/zabbix/zabbix_agentd.conf
# chmod 644 /etc/zabbix/zabbix_agentd.d/*
# systemctl enable zabbix-agent
# systemctl daemon-reload
# systemctl start zabbix-agent
zabbix产生的数据主要由四部分组成
配置数据(忽略)
历史数据:50bytes
历史趋势数据:128bytes
事件数据:130bytes
历史数据:采样生成的数据
历史趋势数据:每小时的最大值、最小值、平均值、统计
通过对以上数据的计算,可以得出需要一个多大的zabbix数据库,来定制磁盘大小,具体算法
假设有60000个监控项,每秒中处理的数据就有60000/60=1000条
历史数据大小=天数X每秒钟处理的数据量X24X3600X50Bytes
趋势数据:
每一个趋势128Bytes,大小=天数X监控项X24X128Bytes
事件数据:
每个占据130Bytes,大小=天数X86400X130(假设每秒产生一个事件)