Zabbix5.0 LTS,PHP7.4.30,Nginx-1.21.6编译安装,mysqlrpm安装教程
由于生产环境各种权限要求,没有rpm安装权限以及内网环境限制,本文主要介绍 Zabbix生产环境编译安装方法,方便内网安装部署。并介绍zabbix自定义监控部署步骤。
**注意:**本文配置中部分路径以及ip来自生产环境,部分测试环境,前后可能有矛盾,可忽略。
zabbix简介
概述
Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。
基础架构
核心组件主要是 Agent 和 Server,其中 Agent 主要负责采集数据并通过主动或者被动的方 式采集数据发送到 Server/Proxy,除此之外,为了扩展监控项,Agent 还支持执行自定义 脚本。Server 主要负责接收 Agent 发送的监控信息,并进行汇总存储,触发告警等。Zabbix Server 将收集的监控数据存储到 Zabbix Database 中。Zabbix Database 支持常用的关系 型数据库,如果 MySQL、PostgreSQL、Oracle 等,默认是 MySQL,并提供 Zabbix Web 页面(PHP 编写)数据查询。
主机规划:
IP地址 | 组件 |
---|---|
10.8.71.29 | zabbix_agent |
10.8.71.30 | zabbix_agent |
10.8.71.31 | zabbix_agent |
10.8.71.32 | zabbix_agent |
10.8.71.33 | zabbix_agent |
10.8.71.34 | zabbix_agent |
10.8.71.35 | zabbix_agent,mysql |
10.8.71.36 | zabbix_server,zabbix_agent,php7.4.30,nginx |
Mysql安装
注意:mysql以下操作需要root用户或需要sudo权限
下载安装包
mysql下载地址:https://downloads.mysql.com/archives/community/
清理mysql环境
一台服务器只能安装一个版本的MySQL/MariaDB软件,所以需要删除原有的MySQL/MariaDB
# 查看是否自带mysql
rpm -qa | grep mariadb 或 rpm -qa|grep -i mysql# 如果安装了MySQL,就先卸载
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
安装
#上传并解压tar文件
tar -xvf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar -C ./#按顺序安装以下rpm包
rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.38-1.el7.x86_64.rpm#使用RPM软件包标准安装的MySQL的目录结构
文件 位置
客户端和脚本 /usr/bin
mysqld服务器 /usr/sbin
配置文件 /etc/my.cnf
数据目录 /var/lib/mysql
错误日志 /var/log/mysqld.log
System V初始化脚本 /etc/init.d/mysqld
PID文件 /run/mysqld/mysqld.pid
socket文件 /var/lib/mysql/mysql.sock
客户端和脚本 /usr/bin
mysql初始化
MySQL 5.7
之后的版本,在初次启动MySQL时会生成临时的密码。超级用户'root'@'localhost'
临时密码存储在错误日志文件中,可以通过查看/var/log/mysqld.log
来获取。
#启动mysql
$ systemctl start mysqld
#查看mysql初始密码
$ grep password /var/log/mysqld.log
2022-10-09T09:09:21.622156Z 1 [Note] A temporary password is generated for root@localhost: !9ctet_VfEo?
#初次登录mysql密码为初始密码 !9ctet_VfEo?
$ mysql -uroot -p
#更改mysql密码 为方便后续登录,mysql登录密码改为 000000
mysql> set global validate_password_policy=LOW;
mysql> set global validate_password_length=6;
mysql> SET PASSWORD=PASSWORD('000000');
mysql关联zabbix相关配置
# 创建zabbix数据库并指定字符集及排序规则, zabbix 5.0 要求zabbix数据库字符集为 utf8_bin 或 utf8mb3_bin
mysql> create database zabbix character set utf8 collate utf8_bin;
# 创建zabbix用户并赋予权限,如果安装的数据库与zabbix,PHP不在同一台服务器,要设置为 zabbix@'192.168.10.%',若在,zabbix@'localhost' 即可
mysql> create user zabbix@'10.8.71.%' identified by '000000';
mysql> grant all privileges on zabbix.* to 'zabbix'@'10.8.71.%';
mysql> flush privileges;
mysql> quit;#以zabbix用户登录mysql
$ mysql -uzabbix -h10.8.71.35 -p
Enter password: 000000
#导入zabbix数据库,以下文件在zabbix安装包解压后database路径下
mysql> use zabbix;
# 按顺序导入数据
mysql> source /bigdata/package/zabbix-5.0.27/database/mysql/schema.sql
mysql> source /bigdata/package/zabbix-5.0.27/database/mysql/images.sql
mysql> source /bigdata/package/zabbix-5.0.27/database/mysql/data.sql
mysql> quit;
Nginx安装
依赖安装
#方案一:内网环境,需要sudo权限
$ yum reinstall --downloadonly --downloaddir=/home/hadoop zlib zlib-devel pcre pcre-devel gcc
$ yum reinstall --downloadonly --downloaddir=/home/hadoop openssl openssl-devel
$ sudo rpm -Uvh --force --nodeps *rpm
#方案二:外网环境,需要sudo权限
1.通过yum
$ yum install -y zlib zlib-devel
$ yum install pcre pcre-devel -y
$ yum install -y gcc
下载安装
#下载
$ wget https://nginx.org/download/nginx-1.21.6.tar.gz
$ tar -zxvf nginx-1.21.6.tar.gz
$ cd nginx-1.21.6/
#编译安装
$ ./configure --prefix=/app/zxr/install/nginx
$ make && make install
设置环境变量
$ vim .bashrc
$ export PATH=/app/zxr/install/nginx/sbin:$PATH
$ source .bashrc
更改nginx端口
#nginx 默认端口号为80,端口号为1-1024 的需要root权限启动
$ vim /app/zxr/install/nginx/conf/nginx.conf
listen 8000
检测nginx配置文件是否正确:nginx -t
nginx启停命令
./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置
启动nginx并检测
$ nginx
#检查nginx进程
$ ps -ef |grep nginx
#检查nginx端口
$ netstat -tunlp | grep nginx
#查看自己ip地址(要记得关闭防火墙哦)去浏览器上输入ip地址,确认安装已经成功。
http://192.168.10.103:8080/ IP+Listen端口号
PHP74安装
Zabbix Web界面使用PHP语言编写,所以Zabbix Web界面必须在支持PHP环境的web服务器上运行.
PHP-7.4.30下载地址:https://www.php.net/downloads.php
依赖安装
# 依赖安装需要sudo权限
#方案1:内网环境
1.1.下载所有依赖:(当前环境已安装的也会下载)
$ repotrack libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel libzip libsqlite3x-devel oniguruma oniguruma-devel openldap openldap-devel
1.2.安装rpm
$ sudo rpm -Uvh --force --nodeps *rpm
#方案2:外网环境
$ yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel libzip libsqlite3x-devel oniguruma oniguruma-devel openldap openldap-devel -y3.安装libzip
#因yum安装的libzip 版本不支持,所以需要先卸载已有,再编译安装
3.1.先卸载已有libzip
$ yum remove libzip
3.2.安装
#下载libzip(版本要求:libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0)
$ wget https://libzip.org/download/libzip-1.2.0.tar.gz
$ tar -zxvf libzip-1.2.0.tar.gz
$ cd libzip-1.2.0
$ ./configure --prefix=/bigdata/libzip
$ make && make install
#装完了之后找一下/bigdata/libzip/lib下有没有 pkgconfig 目录,有的话执行命令
$ export PKG_CONFIG_PATH="/bigdata/libzip/lib/pkgconfig/"
PHP编译
$ tar -zxvf php-7.4.30.tar.gz
$ cd cd php-7.4.30/
$ ./configure --prefix=/bigdata/php74 --with-config-file-path=/bigdata/php74/etc --with-fpm-user=www --with-fpm-group=www --enable-fpm --with-bz2 --enable-gd --with-mysqli=mysqlnd --with-jpeg --with-freetype --with-zlib-dir --with-iconv-dir=/bigdata/php74 --enable-soap --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-curl --enable-bcmath --enable-sockets --enable-calendar --with-gettext --with-pdo-mysql=mysqlnd --disable-fileinfo --with-ldap --with-openssl --with-pear --with-xmlrpc --with-libdir=lib64 --with-xsl --with-zlib --with-mhash --enable-inline-optimization --enable-mbregex --enable-opcache --enable-pcntl --enable-shmop --enable-sysvsem --enable-sysvshm --enable-xml --with-zip
#部分参数详解
--prefix:软件安装位置
--with-config-file-path:php.ini 配置文件位置
--enable-fpm:nginx操作php
nginx与php结合有2种方式:
1.socket nginx与php需要在同一台机器上
2.网络方式:可以不在一台机器上(默认)
表示编译成功:
PHP安装
执行:make && make install
没有报错信息,命令行 echo $? 输出 0 ,表示安装成功# 配置文件准备
$ cp /bigdata/package/php-7.4.30/php.ini-production /bigdata/php74/etc/php.ini
$ cd /bigdata/php74/etc
$ cp php-fpm.conf.default php-fpm.conf
$ cd php-fpm.d/
$ cp www.conf.default www.conf
表示安装成功:
环境变量设置
$ vim .bashrc
export PATH=/bigdata/php74/bin:/bigdata/php74/sbin:$PATH
$ source .bashrc
#查看配置是否报错
$ php-fpm -t
#查看版本信息
$ php-fpm -v
启动
#更改php.ini配置文件,以下配置为zabbix页面要求
$ vim /bigdata/php74/etc/php.ini
max_execution_time = 300
max_input_time = 300
post_max_size = 16M
date.timezone = Asia/Shanghai#启动php
$ php-fpm
# php进程检查
ps -ef | grep php
# php端口检查
netstat -tulnp | grep php-fpm若如下图所示,启动成功!!!
Zabbix5.0 编译安装配置
**下载地址:**https://www.zabbix.com/cn/download_sources#50LTS
server端
依赖安装
#mysql-devel 依赖 mariadb-libs,zabbix server不能和mysql在一台机器上
$ sudo yum reinstall --downloadonly --downloaddir=/home/hadoop/rpm mysql-devel libevent-devel curl-devel libcurl net-snmp-devel OpenIPMI-devel libxml2 libxml2-devel libssh2-devel
$ sudo rpm -Uvh --force --nodeps *rpm
编译安装
#编译
./configure --prefix=/bigdata/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-ssh2
#安装
make install
#创建日志存储目录
cd /bigdata/zabbix
mkdir logs
添加环境变量
vim .bashrc
export PATH=/bigdata/zabbix/sbin:$PATH
source .bashrc
配置文件修改
# zabbix_server 配置文件
vim /bigdata/zabbix/etc/zabbix_server.conf
LogFile=/bigdata/zabbix/logs/zabbix_server.log
PidFile=/bigdata/zabbix/logs/zabbix_server.pid
DBHost=10.7.130.103
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123$
DBPort=3306
Timeout=30
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
# zabbix_agentd 配置文件
vim /bigdata/zabbix/etc/zabbix_agentd.conf
LogFile=/bigdata/zabbix/logs/zabbix_agentd.log
PidFile=/bigdata/zabbix/logs/zabbix_agentd.pid
Include=/bigdata/zabbix/etc/zabbix_agentd.conf.d/*.conf
AllowKey=system.run[*]
LogRemoteCommands=1
Server=10.7.130.104
ServerActive=10.7.130.104
Hostname=bdicus130-104
AllowRoot=1
StartAgents=10
BufferSend=10
BufferSize=150
MaxLinesPerSecond=100
Timeout=30
启动
# 启动 agent
zabbix_agentd
# 启动server
zabbix_server
agent端
zabbix 集群其他节点只需编译安装 agent 即可,无需依赖
./configure --prefix=/bigdata/zabbix --enable-agent
make install
-- 如下图无报错即安装成功
# 修改 zabbix_agentd 配置文件
mkdir /bigdata/zabbix/logs
vim /bigdata/zabbix/etc/zabbix_agentd.conf
LogFile=/bigdata/zabbix/logs/zabbix_agentd.log
PidFile=/bigdata/zabbix/logs/zabbix_agentd.pid
Include=/bigdata/zabbix/etc/zabbix_agentd.conf.d/*.conf # 监控项的key存放路径
AllowKey=system.run[*]
LogRemoteCommands=1
Server=10.7.130.104
ServerActive=10.7.130.104
Hostname=bdicus130-104
AllowRoot=1
StartAgents=10
BufferSend=10
BufferSize=150
MaxLinesPerSecond=100
Timeout=30#配置环境变量
vim .bashrc
# zabbix
export PATH=/bigdata/zabbix/sbin:$PATH
source .bashrc#启动
zabbix_agentd
验证
# 进程验证
ps -ef | grep zabbix
# 端口验证 agent 默认 10050 端口
netstat -tunlp | grep zabbix
web配置
zabbix前端文件配置
#复制 zabbix5.0 安装包下的 ui 文件夹到 nginx 的 html 目录下
$ cp -r /bigdata/package/zabbix-5.0.27/ui/* /bigdata/nginx/nginx-1.12.1/html/zabbix
$ cd /bigdata/nginx/nginx-1.12.1/html/zabbix
$ cp ./conf/zabbix.conf.php.example ./conf/zabbix.conf.php
$ chmod 777 ./conf/zabbix.conf.php
$ vim ./conf/zabbix.conf.php
#修改如下图
适应zabbix配置
$ vim /app/zxr/install/nginx/conf/nginx.conf
#修改配置
添加:index.php
listen 8000;
server_name localhost;
root /home/hadoop/install/nginx/html/zxbbix;
location / {
root html;
index index.html index.htm index.php;
} --打开注释:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}# 重启nginx
$ nginx -s reload
zabbix web页面初始化配置
#登录web页面:默认账户密码为 Admin/zabbix
192.168.10.101:8000/zabbix/setup.php
默认账户密码为 Admin/zabbix:
在检测时,可查看具体的报错信息进行解决:
选择mysql数据库,根据之前设置的参数进行填写:
若报错,MySQL server has gone away :解除 Database TLS encryption 勾选
IP地址为zabbix-server所在地址:
下一步:
安装完成:
更改语言为中文:
zabbix自定义监控
配置agent配置文件
# 在zabbix安装目录 /bigdata/zabbix/etc/zabbix_agentd.conf.d 下创建 *.conf 文件
# 文件内格式如下图所示,1部分为固定;2部分为键值,名称任意;3部分为监控进程的脚本,脚本需自己编写# 参数示意:UserParameter=key[*],<shell_command> $1 $2 $...
key:表示监控项的key值,
[*]:表示接受参数
shell_command:表示脚本所在的路径或者shell命令
$1, $2, $n:表示参数,参数个数与n相同
监控mongo脚本部分示意:
# 修改agent配置文件后需要重启agent
创建主机群组
# 创建主机群组,便于管理zabbix集群
配置 --> 主机群组 --> 创建主机群组
创建主机(Host)
添加对应主机名称和端口号。
主机名称: 要与主机名相同,这是zabbix server程序用的
可见名称: 显示在zabbix网页上的,给我们看的
注意:主机名称要与 zabbix_agent 配置文件中的 Hostname 一致,否则报错。
3)重复以上步骤,添加其他主机
注意:主机刚添加,主机可用性会不显示,添加监控项后,状态会改变。
创建应用集
应用集一般配合监控项使用,其作用是给监控项分类。
配置 --> 主机 --> 应用集 --> 创建应用集 --> 添加
创建监控项(Items)
监控项(iterm)就是你要监控的指标,比如cpu利用率,cpu负载,内存使用率等等。
配置 --> 主机 --> 监控项 --> 创建监控项 --> 添加注意:监控项添加完毕后,等待一会,主机 的可用性状态改变,变为绿色,说明主机成功连接server并监控成功。
名称为改item名,可随意指定,键值要和 /bigdata/zabbix/etc/zabbix_agentd.conf.d/bfd_parameters.conf中指定的key一致。#信息类型:
Numeric (unsigned) :正整数
Numeric (float) :小数,可以是负数
Log:日志格式,可以使用专门的匹配语法
Character:255以内的字符串
Text:文本大字段
创建触发器(Trigger)
触发器的作用:当监控项获取到的值达到一定条件时就触发报警
配置 --> 主机 --> 监控项 --> 创建监控项 --> 添加
名称随意指定,表达式中的项目添加特定的项目,功能根据实际自行选择#监控脚本状态为,进程存在,输出0;进程挂掉,输出1。即zabbix触发器为1时,zabbix报警
创建动作(Action)
动作:一个对事件做出反应的预定义的操作,比如失败重启。名称随意指定,条件指定特定触发器触发则执行相应的动作,操作为改动作要执行的动作。
本集群执行的 动作 为重启操作。
部分错误汇总
数据库字符集错误
--报错信息:
Unsupported charset or collation for tables
--原因:
zabbix 从4.4.6开始数据库只支持 character set utf8 collate utf8_bin
--解决方法:
#方案1:
drop database zabbix;
create database zabbix character set utf8 collate utf8_bin;
#方案2:配置面上显示有错的表进行以下操作,修改表的字符集及排序规则
ALTER TABLE acknowledges CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
libpcre
configure: error: Unable to use libpcre(libpcre check failed)
解决:yum -y install pcre*
发表评论 取消回复