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 @   GEGEWU-  阅读(709)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示