centos7 部署zabbix+nginx版本5.0 版本

zabbix介绍:

Zabbix介绍:

Zabbix是一款开源免费,能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。

Zabbix 5.0 版本于 5 月 11 日正式发布,是最新的 LTS(长期支持)版本,5.0 带来很多功能和特性,详细见官方文档。

一.需要需改的配置文件有:

    1. vi /etc/yum.repos.d/zabbix.repo     zabbix源

    2. vi /etc/zabbix/zabbix_server.conf   zabbix服务端配置文件

    3. vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf       zabbix前端参数

    4. vi /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf naginx配置

报错查看日志文件:

    1. nginx日志文件: /var/opt/rh/rh-nginx116/log/nginx/error.log

    2. 启动日志:     /var/log/zabbix/zabbix_server.log

二. 配置zabbix源

1.rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

2. yum clean all

 二. 安装zabbix各组件

需要安装:

        zabbix-server-mysql zabbix-agent zabbix-get

        1. yum -y install zabbix-server-mysql zabbix-agent zabbix-get

 三. 安装zabbix前端组件

1.  yum -y install centos-release-scl #安装zabbix前端yum源

2. 此处配置: vim /etc/yum.repos.d/zabbix.repo

[zabbix-frontend]

enabled=1                      #开启zabbix-frontend源改为1

3. 安装

 yum -y install zabbix-web-mysql-scl zabbix-nginx-conf-scl zabbix-web-deps-scl

 

 四. 安装及配置mysql数据库

mysql 
   下载地址:
      http://repo.mysql.com/mysql-community-release-el5-7.noarch.rpm
   1. wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm 
   2. rpm -ivh  mysql-community-release-el6-5.noarch.rpm 
   3. yum install -y mysql-community-server
  注:数据库优化 mysql_secure_installation 回车 n 一路y
  1. y1 提醒输入当前密码 n/y
  2. y2 要不要设置root密码 n/y
  3. y3 移除弥明用户  n/y
  4. y4禁止root远程登录 n/y
  5. 移除test库和访问它的方法 n/y
  6. 重载权限表 n/y
六. 创建zabbix库:
   mysql -e  'create database zabbix character set utf8 collate utf8_bin;'
    授权所有权限:
    grant all on zabbix.* to zabbix@localhost identified by "zabbix";
    grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
赋予本地用户zabbix对数据库操作的所有权限
    grant all privileges on *.* to 'zabbix'@'localhost' identified by 'zabbix';
    flush privileges;
七. 导入sql文件不知道在哪儿搜一下
    rpm -ql zabbix-server-mysql |grep sql
八. 导入zabbix表结构和初始数据
    zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz |mysql -uzabbix -pzabbix zabbix
    检测是否导入成功:
    mysql zabbix -pzabbix -e 'show tables';
或者安装mariadb
yum -y install mariadb mariadb-server
systemctl start mariadb
systemctl status mariadb
登录之前操作:
   mysql_secure_installation  数据库初始化详见“docker_mariadb/mysql安全策略” 
此时直接输入命令:mysql即可登录
root登录之后操作:
    创建远程登录用户:
    GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
    修改数据库密码:
    SET PASSWORD FOR root@'localhost' = password('...');
    mysqladmin -u root password '....'
    mysqladmin -u root -p '123456' password '....'
授权本地zabbix用户操作数据库所有权限:
    grant all on zabbix.* to zabbix@localhost identified by "zabbix"; 
对单独库的权限:
    grant all privileges on zabbix.* to zabbix@localhost; 
创建数据库字符utf-8:
     create database zabbix character set utf8 collate utf8_bin;
刷新:
     flush privileges;

此处可做个安装策略
#mariadb:/etc/mysql/my.cnf 安全策略插件配置
#数据库密码:... 账户:... ip:10.0.0.11
#密码复杂度插件
plugin_load_add = simple_password_check.so    #启动服务加载插件
simple_password_check = FORCE_PLUS_PERMANENT  #防止插件在运行过程中被卸载
### 审计 ###
plugin-load-add = server_audit.so             #启动服务加载此插件
server_audit_logging = ON                     #开启日志记录,默认是关闭
server_audit = FORCE_PLUS_PERMANENT           #防止插件被卸载
server_audit_file_path = server_audit.log     #定义审计日志文件名
server_audit_file_rotate_now = OFF            #是否强制切割审计日志
server_audit_file_rotate_size = 1073741824    #定义切割审计日志的文件大小1073741824=1GB
server_audit_file_rotations = 9               #定义审计日志的轮询个数,0为不轮询
server_audit_events = 'connect,query,table'    #日志记录的操作
server_audit_events = 'query_ddl,query_dml'    #不记录select查询操作,只记录增删改、DDL操作
server_audit_incl_users = 'gegewu,root'        #审计的用户对象,不设置则针对所有用户


#mysql社区版:/etc/mysql/my.cnf 安全策略插件配置
#数据库密码:... 账户: ... ip:10.0.0.10
[mysqld]
plugin-load-add = validate_password.so      #服务器在启动时加载插件,并防止在服务器运行时删除插件。
validate-password = FORCE_PLUS_PERMANENT    #并防止在服务器运行时删除插件
validate_password_policy= 2                 #密码安全度等级2 
###安全策略密码检查延迟###
plugin-load-add = connection_control.so    #在启动时加载插件
connection-control = FORCE_PLUS_PERMANENT  #并防止它们在运行时被删除
connection-control-failed-login-attempts = FORCE_PLUS_PERMANENT #并防止它们在运行时被删除   
connection_control_min_connection_delay = 60000                 #最小延迟时间
connection_control_max_connection_delay = 86400                 #最大延迟时间
connection_control_failed_connections_threshold	= 3             #延迟时间触发输错密码次数 

 .导入zabbix数据表结构

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix

五. zabbix-server配置

1.cd /etc/zabbix/
2.cp zabbix_server.conf{,.bak}
3.vim zabbix_server.conf
参考以下内容进行修改,主要修改数据库连接参数
DBHost=localhost	        #数据库主机
DBName=zabbix			#数据库实例名称
DBUser=zabbix			#连接数据库时的用户
DBPassword=password	    #用户的密码
[root@zabbix5 zabbix]# grep -E "^[[:alpha:]]+" zabbix_server.conf

 七. 启动zabbix-server

 systemctl start zabbix-server

 systemctl enable zabbix-server

tail -20 /var/log/zabbix/zabbix_server.log  #查看启动日志

报错:此时报错正常因为nginx还没配置

 另外一种报错:意为启动日志出现报错连接数据库失败

解决办法:

[root@zabbix5 zabbix]# getenforce

Enforcing

#SELinux正在运行中,我们临时关闭它

[root@zabbix5 zabbix]# setenforce 0

#重启zabbix-server,并查看启动日志

[root@zabbix5 zabbix]# systemctl restart zabbix-server

[root@zabbix5 zabbix]# tail -70 /var/log/zabbix/zabbix_server.log

 此时

zabbix-server成功启动,检查端口是否监听 netstat -lntup | grep 10051

成功--------------------->

 八. 配置zabbix前端参数

1. cp /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf{,.bak} #备份
2. vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
3.; php_value[date.timezone] = Europe/Riga  -->	php_value[date.timezone] = Asia/Shanghai

注: 下方操作改为ngix会出现问题 解决办法如下
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf 
user = apache		-->	user = nginx
group = apache	-->	group = nginx
listen.acl_users = apache	-->	listen.acl_users = nginx

 修改php属主属组(默认为apache,现在需要修改为nginx)此操作为错误的:--------------->

解决:查看一下php配置文件

再对比官方部署文档中php的配置,人家只需要修改一次地方,把原来的补回去

重启php-fpm服务,浏览器再次打开页面看一下

改回来-------------->

vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

九. Nginx配置

cp /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf{,.bak}

vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf

取消listen已及server_name的注释,并修改server_name为服务器IP地址或域名

#server_name     example.com; --> server_name     192.168.1.100;

十. 启动各个服务

5.0版本的前端与php启动名称改变了,前端是:rh-nginx116-nginx,php是rh-php72-php-fpm

[root@zabbix5 zabbix]# systemctl start zabbix-agent rh-nginx116-nginx rh-php72-php-fpm

[root@zabbix5 zabbix]# systemctl enable zabbix-agent rh-nginx116-nginx rh-php72-php-fpm

十一、浏览器初始化zabbix-web

#如果服务器防火墙开启可以使用以下命令开放TCP80端口

[root@zabbix5 zabbix]# firewall-cmd --permanent --add-port=80/tcp

[root@zabbix5 zabbix]# firewall-cmd --reload

浏览器打开:http://IP/

http://10.0.0.11/setup.php

systemctl restart rh-php72-php-fpm

成功.---------------------------------------->

 十二.Web可视化界面配置------------------------------------------------>

OK,初始化界面出来了,我们点击下一步
检查各个组件的版本要求以及配置是否符合(需要注意一点的是:zabbix5.0版本,PHP需要7.2以上版本才行)

 设置数据库连接参数

 zabbix-server的一些主机名设置,默认就好

 摘要信息,直接下一步

 

 自动搭建脚本:


#!/bin/bash
#版本1.0_zabbix+nginx版本
welcome() {
cat <<EOF
需要需改的配置文件有:
    1. vi /etc/yum.repos.d/zabbix.repo     zabbix源
    2. vi /etc/zabbix/zabbix_server.conf   zabbix服务端配置文件
    3. vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf       zabbix前端参数
    4. vi /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf naginx配置
报错查看日志文件:
    1. nginx日志文件: /var/opt/rh/rh-nginx116/log/nginx/error.log
    2. 启动日志:     /var/log/zabbix/zabbix_server.log 
EOF 
}
start() {
    echo  "启动前安装命令"
    yum install -y vim wget netstat 
    echo  "配置zabbix5.0源"
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    rpm -Uvh  https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm  \
    && yum clean all && yum makecache
    [ $? = 0 ] && echo "配置源成功" || echo "配置源失败"
    #优化:rpm -ql zabbix-release 找出源位置:/etc/yum.repos.d/zabbix.repo 替换为国内源 \
    #%s#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g
    echo "安装zabbix各组件:zabbix-server-mysql zabbix-agent zabbix-get"
    yum -y install zabbix-server-mysql zabbix-agent zabbix-get
    [ $? = 0 ] && echo "安装成功" || echo "安装失败"
    echo "安装zabbix前端yum源"
    yum -y install centos-release-scl
    [ $? = 0 ] && echo "安装成功" || echo "安装失败"
    echo "开启zabbix-frontend源 将[zabbix-frontend]下的 enabled 改为 1" 
    vi /etc/yum.repos.d/zabbix.repo
    echo "安装zabbix前端组件:zabbix-web-mysql-scl zabbix-nginx-conf-scl zabbix-web-deps-scl"
    yum -y install zabbix-web-mysql-scl zabbix-nginx-conf-scl zabbix-web-deps-scl
    [ $? = 0 ] && echo "安装成功" || echo "安装失败"
}
start1() {
    echo "安装mariadb数据库"
    yum -y install mariadb mariadb-server
    systemctl start mariadb
    mariadb_mysql=`systemctl status mariadb |awk -F'[ :]+' 'NR==3{print $3$4}'`
if [ "mariadb_mysql" = "active(running)" ];then
   echo "数据库成功启动"
   echo "登录数据库输入以下命令: \n
        1. GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION; \n
        2. create database zabbix character set utf8 collate utf8_bin; \n
        3. SET PASSWORD FOR root@'localhost' = password('passwd');   \n
        4. grant all on zabbix.* to zabbix@localhost identified by "passwd"; \n
        5. grant all privileges on zabbix.* to zabbix@localhost;  \n
        6. flush privileges; "
   mysql -uroot 
   zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz |mysql -uzabbix -ppasswd zabbix
else
   echo "mariadb启动失败"
fi 
}
start2() {
   echo "配置zabbix-server"
   cp /etc/zabbix/zabbix_server.conf{,.bak}
   echo "交互式界面自行更改: \n
         DBHost=localhost #数据库主机 \n
         DBName=zabbix	  #数据库实例名称 \n
         DBUser=zabbix     #连接数据库时的用户 \n
         DBPassword=zabbix #用户的密码" 
   vim /etc/zabbix/zabbix_server.conf
   gengai=`grep -E "^[[:alpha:]]+" /etc/zabbix/zabbix_server.conf`
   echo "更改内容为${genggai} 下面临时关闭selinux 并启动服务 zabbix-server"
   setenforce 0 && systemctl start zabbix-server && systemctl enable zabbix-server
   #echo "永久关闭为:vi /etc/selinux/config SELINUX=disabled  修改apache端口为:vi /etc/httpd/conf/httpd.conf"
}
start3() {
   echo "配置zabbix前端参数"
   cp /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf{,.bak}
   echo "更改内容为: \n
        Europe/Riga  --> php_value[date.timezone] = Asia/Shanghai \n
        listen.acl_users = apache -->	listen.acl_users = apache,nginx"
   vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
}
start4() {
   echo "配置nginx参数"
   cp /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf{,.bak}
   echo "1. 取消listen已经server_name的注释 \n 
         2. 修改server_name为服务器IP地址或域名 \n
         3. #server_name   example.com;  --> server_name   本机ip;"
   vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
   firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload
}
start5() {
   host_ip=`hostname -I|awk '{print $1}'`/setup.php
   echo "启动各个服务:rh-nginx116-nginx,php是rh-php72-php-fpm"
   systemctl restart zabbix-agent rh-nginx116-nginx rh-php72-php-fpm zabbix-server \
   &&  systemctl enable zabbix-agent rh-nginx116-nginx rh-php72-php-fpm 
   [ $? = 0 ] && echo "启动成功服务搭建成功 浏览器访问http://${host_ip}" || echo "启动失败"
   echo "查询服务端口"
   ss -ntulp |grep 80 && ss -ant |grep 10051
}
main() {
    welcome
    start
    start1
    start2
    start3
    start4
    start5
}
main 










部署zabbix  web端与mysql分离:
    '只需要更改zabbix服务端配置文件:
     1. 文件路径: /etc/zabbix/zabbix_server.conf 
''   2. 更改内容:  
      ' LogFile=/var/log/zabbix/zabbix_server.log
        LogFileSize=0
        PidFile=/var/run/zabbix/zabbix_server.pid
        SocketDir=/var/run/zabbix
     '  DBHost=10.0.0.11
        DBName=zabbix
       'DBUser=gegewu
        DBPassword=qw123321
        SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
        Timeout=4
        AlertScriptsPath=/usr/lib/zabbix/alertscripts
        ExternalScripts=/usr/lib/zabbix/externalscripts
        LogSlowQueries=3000
        StatsAllowedIP=127.0.0.1

注:部署zabbix  web端与mysql分离时(即mysql and zabbix-server 在不同的服务器上时)可能会web端出现报错:
      1. Zabbix server is running	no	localhost:10051 即服务器不在线 (报错1)
      此时远端mysql服务器需要操作:
          1. cat /var/log/zabbix/zabbix_server.log           查看启动日志
          2. cat /var/opt/rh/rh-nginx116/log/nginx/error.log 查看nginx服务日志
一般有报错信息:
      [Z3001] connection to database 'zabbix'
      failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (报错2)
'报错信息一 表示Zabbix服务不能用/var/lib/mysql/mysql.sock 成功连接数据库
解决方案:

     1.对于报错一,查找MySQL.socket并将位置添加到zabbix_server 配置文件   
     [root@neo ~]# find / -name mysql.sock
/usr/local/mysql/mysql.sock
     vim /etc/zabbix/zabbix_server.conf
     DBSocket=/usr/local/mysql/mysql.sock
对于报错二.检查zabbix用户在数据库中的权限。并赋予localhost权限
     1. show grants for 'zabbix'@'%';
     2. SELECT DISTINCT CONCAT('User:''',user,'''@''',host,''';')AS query FROM mysql.user;

修改前:
+----------------------------+
| query                      |
+----------------------------+
| User:'gegewu'@'%';         |
| User:'root'@'127.0.0.1';   |
| User:'root'@'::1';         |
| User:''@'localhost';       |
| User:'root'@'localhost';   |
| User:'zabbix'@'localhost'; |
| User:''@'nfs-server';      |
| User:'root'@'nfs-server';  |
+----------------------------+
    此时 连接数据库,赋予zabbix服务localhost数据库权限
    GRANT all ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';
修改后:
    +----------------------------+
| query                      |
+----------------------------+
| User:'gegewu'@'%';         |
| User:'root'@'127.0.0.1';   |
| User:'root'@'::1';         |
| User:''@'localhost';       |
| User:'gegewu'@'localhost'; |
| User:'root'@'localhost';   |
| User:'zabbix'@'localhost'; |
| User:''@'nfs-server';      |
| User:'root'@'nfs-server';  |
+----------------------------+
刷新权限:
    flush privileges;
    
并重启http,mysql,zabbix_server服务
     systemctl restart httpd.service 
     systemctl restart httpd.service 
     systemctl restart zabbix-server.service

对于nginx+zabbix 搭建的:
    systemctl restart zabbix-agent rh-nginx116-nginx rh-php72-php-fpm zabbix-server

二. 虚拟网络编辑器
   888  10.0.0.128:90
   90   10.0.0.11:88
   8000 10.0.0.11:80

OK,初

关于排错小结:

访问出现错误:状态码500,从状态码上看是服务器出现错误了,我们查看一下Nginx的错误日志。注意:由于5.0版本的更新,Nginx的日志路径不再是/var/log/nginx了,而是/var/opt/rh/rh-nginx116/log/nginx/了。

查看日志nginx:

tailf /var/opt/rh/rh-nginx116/log/nginx/error.log

大概意思就是:网站在接收到动态请求后,Nginx把请求通过FastCGI转发给php进行处理,但是在进入php的目录的时候出现了权限问题。。。我们来看一下php-fpm这一个应用程序的启动是谁

Ps -ef |grep php-fpm

可以看到属主有apache有nginx

 查看一下php配置文件

再对比官方部署文档中php的配置,人家只需要修改一次地方,把原来的补回去

重启php-fpm服务,浏览器再次打开页面看一下

改回来-------------->

vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

 

systemctl restart rh-php72-php-fpm

此时成功 .---------------------------------------->

附带:自动清理zabbix历史数据脚本

#!/bin/bash
#版本3
start1() {
   check_file="/home/gegewu/Script/zabbix.log"
   check_directory="/home/gegewu/Script"
   check_time=`date +%F%H%M`
   echo  "清理history-unit时间:  ${check_time}" >> ${check_file} 2>&1
   [ -d "${check_directory}" ] || mkdir -p ${check_directory}
if [ ! -d "$dir" ]; then
   touch ${check_file}
else
   echo "文件存在"
fi
}
start2() {
User="zabbix"
Passwd="zabbix"
$(which mysql) -u${User} -p${Passwd} -e "
use zabbix;
truncate table history_uint;"
}
main() {
   start1
   start2
}
main

posted @ 2022-07-06 19:17  GEGEWU-  阅读(802)  评论(0)    收藏  举报