centos7.9 部署 zabbix6.0 + mysql (docker-compose)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: centos7.9 部署 zabbix6.0 + mysql (docker-compose)

centos7.9 部署 zabbix6.0 + mysql (docker-compose)


借鉴博客:

https://www.cnblogs.com/ivictor/p/16025786.html


一.部署mysql

依赖docker + docker-compose

##官网安装docker 
https://docs.docker.com/engine/install/centos/  
##Github安装docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
##若是github访问太慢,可以用daocloud下载
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
##添加执行权限
sudo chmod +x /usr/local/bin/docker-compose


1.准备基础文件

# tree /data/ 
/data/
└── mysql 
    ├── conf  ##自定义my.cnf 无特殊配置则不添加
    ├── db    ##持久化数据目录
    └── docker-compose.yml ##启动文件
[root@zabbix /]# tree /data/
/data/
└── mysql
    ├── conf  ##自定义my.cnf 无特殊配置则不添加
    ├── db    ##持久化数据目录
    ├── docker-compose.yml  ##启动文件
    └── init  ##容器初始化时的执行文件 *.sh or *.sql
        └── init.sql
##初始化sql
[root@zabbix mysql]# cat init/init.sql  
create database zabbix character set utf8 collate utf8_bin;
#create user 'zabbix_admin'@'%' identified with mysql_native_password by 'zabbix_pass';
grant all privileges on zabbix.* to 'zabbix_admin'@'%';
flush privileges;


2.启动docker-compose

[root@zabbix mysql]# cat docker-compose.yml 
version: '3'
services:
  mysql8.0:
    # 镜像名
    image: mysql:8.0.21
    # 容器名(以后的控制都通过这个)
    container_name: mysql8.0
    # 重启策略
    restart: always
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      # root 密码
      MYSQL_ROOT_PASSWORD: root
      # 初始化数据库(后续的初始化sql会在这个库执行)
      MYSQL_DATABASE: nacos_config
      # 初始化用户(不能是root 会报错, 后续需要给新用户赋予权限)
      MYSQL_USER: zabbix_admin
      # 用户密码
      MYSQL_PASSWORD: zabbix_pass
      # 映射端口
    ports:
      - 3306:3306
    volumes:
      # 数据挂载
      - ./db/:/var/lib/mysql/
      # 配置挂载
      - ./conf/:/etc/mysql/conf.d/
      # 初始化目录挂载
      - ./init/:/docker-entrypoint-initdb.d/
    command:
      # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
##启动
[root@zabbix mysql]# docker-compose up -d 
Creating network "mysql_default" with the default driver
Creating mysql8.0 ... 
Creating mysql8.0 ... done
##查看日志
[root@zabbix mysql]# docker-compose logs -f mysql8.0
......
mysql8.0    | 2022-06-07 16:15:50+08:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init.sql 
......
mysql8.0    | 2022-06-07T08:15:53.632740Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.21'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
##启动日志 看到这两行 说明初始化完成


3.宿主机安装mysql客户端 测试连接

##安装客户端
[root@zabbix mysql]# yum -y install mysql
##测试连接
[root@zabbix mysql]# mysql -h127.0.0.1 -uzabbix_admin -pzabbix_pass


二.源码安装zabbix6.0

1.下载源码

cd /usr/src/
wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.2.tar.gz
tar xvf zabbix-6.0.2.tar.gz
ln -s zabbix-6.0.2 zabbix
# 创建 zabbix 用户:
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix


2.mysql导入数据

[root@zabbix src]# docker cp zabbix/database/mysql mysql8.0:/sql
##进入容器
[root@zabbix src]# docker exec -it mysql8.0 bash
##导入数据
mysql -h127.0.0.1 -uzabbix_admin -pzabbix_pass zabbix < schema.sql
mysql -h127.0.0.1 -uzabbix_admin -pzabbix_pass zabbix < images.sql 
mysql -h127.0.0.1 -uzabbix_admin -pzabbix_pass zabbix < data.sql
##退出容器
# ctrl+d


3.编译安装zabbix

##安装依赖
yum install gcc mysql-devel libevent-devel libcurl-devel libxml2-devel net-snmp-devel -y
##编译安装
cd /usr/src/zabbix
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
make install
# tree /usr/local/zabbix
 /usr/local/zabbix
├── bin
│   ├── zabbix_get
│   ├── zabbix_js
│   └── zabbix_sender
├── etc
│   ├── zabbix_agentd.conf
│   ├── zabbix_agentd.conf.d
│   ├── zabbix_server.conf
│   └── zabbix_server.conf.d
├── lib
│   └── modules
├── sbin
│   ├── zabbix_agentd
│   └── zabbix_server
└── share
    ├── man
    │   ├── man1
    │   │   ├── zabbix_get.1
    │   │   └── zabbix_sender.1
    │   └── man8
    │       ├── zabbix_agentd.8
    │       └── zabbix_server.8
    └── zabbix
        ├── alertscripts
        └── externalscripts
## 其中etc 是配置文件目录。
## alertscripts 是告警脚本目录。
## externalscripts 是外部脚本目录。


4.修改配置文件

## server.conf
# grep -Ev '^$|^#' /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix_admin
DBPassword=zabbix_pass
DBPort=3306
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
## agent.conf
# grep -Ev '^$|^#' /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server


5.配置服务管理脚本

# vim /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_server
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"
CONFIG_FILE="/usr/local/zabbix/etc/zabbix_server.conf"
...
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN -c $CONFIG_FILE
# cp /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_server /etc/init.d/
## 针对 Zabbix Agent,同样也是调整这三处的内容。
# vim /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
CONGIG_FILE="/usr/local/zabbix/etc/zabbix_agentd.conf"
...
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN -c $CONGIG_FILE
...
# cp /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/


6.启动服务

# service zabbix_server start
# service zabbix_agentd start
## 加入开机自启
# chkconfig zabbix_server on
# chkconfig zabbix_agentd on


三.安装 Web 组件

(1)安装 httpd 和 PHP。


方便起见,这里直接通过 yum 安装 httpd 和 PHP。Zabbix 从 5.0 开始,要求 PHP 的版本不低于 7.2。但在 CentOS 7 中,yum 源中默认的是 PHP 5.4.16。所以,这里需要安装额外的 epel 和 webtatic 源。

##同步时间 (云服务器可跳过)
# yum -y install ntpdate 
# ntpdate -u time.nist.gov
##配置额外yum源
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install httpd php72w-cli php72w-common php72w-gd php72w-ldap php72w-mbstring php72w-mysqlnd php72w-xml php72w-bcmath mod_php72w -y 
## 如遇报错即执行
# yum clean all
# yum makecache


(2)将 Zabbix 源码包中的 PHP 文件复制到 httpd 的根目录下。

# mkdir -p /var/www/html/zabbix
# cp -r /usr/src/zabbix/ui/* /var/www/html/zabbix
# chown -R apache.apache /var/www/html/


(3)修改 php 的配置文件。

# vim /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


注意,这里给出的只是最小需求值,可根据实际需要调大。


(4)启动 httpd 服务

# service httpd start

(5)将 httpd 服务设置为开机自启动

# chkconfig httpd on


四.配置 Zabbix Web 页面

安装完 Web 组件,最后我们开始配置 Zabbix Web 页面。


(1)登录 Zabbix Server Web 首页。


浏览器中输入 http://server_ip/zabbix ,其中,server_ip 是 Zabbix Server 的地址


将默认的语言调整为 Chinese(zh_CN) ,点击下一步。


(2)依赖性检查。


主要是检查 php 的插件、配置是否满足要求。如果不满足,最右边的 OK 将显示为 Fail。



(3)配置数据库连接信息。



因为我们的演示环境 Zabbix Server 和数据库是在一台主机上部署,所以,这里 Database host 设置的是 127.0.0.1。生成环境建议分开部署。


(4)设置 Zabbix Server 信息



(5)检查配置是否正确。



(6)安装页面



进入Zabbix的登录界面,默认的用户名为Admin,密码为zabbix,管理员权限。



登录成功后的页面如下所示:



修改字体乱码

## windows C:\Windows\Fonts 目录下拷贝一个字体
## 拷贝到服务器/var/www/html/zabbix/assets/fonts 中 
## 找不到时目录时
find / -iname "fonts"
## 这里我偷波鸡直接替换默认字体
mv DejaVuSans.ttf DejaVuSans.ttf-bak
mv simfang.ttf DejaVuSans.ttf


五.安装 Zabbix Agent

同样的源码包,在被监控主机上部署。


1.编译安装 Zabbix Agent

# groupadd --system zabbix
# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
# cd /usr/src/
# tar xvf zabbix-6.0.2.tar.gz
# ln -s zabbix-6.0.2 zabbix
# yum install gcc pcre-devel -y
# cd zabbix
# ./configure --prefix=/usr/local/zabbix --enable-agent
# make install


2.修改配置文件

# grep -Ev '^$|^#' /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=10.0.0.228
ServerActive=127.0.0.1
Hostname=node1


其中,


Server:被动模式下 Zabbix Server 的地址,在这种模式下,Zabbix Server 发送请求,Agent 才会响应数据。被动模式是 Zabbix Agent 默认的工作模式。

ServerActive:主动模式下 Zabbix Server 的地址,在这种模式下,Agent 会将采集到的数据主动发送给 Zabbix Server。

Hostname:主机名。注意,这里的主机名并不一定要是主机的 hostname,也可以是 IP 或其它有标识性的字符串,只要保证这个配置在 Zabbix Server 监控的主机内全局唯一即可。Hostname 只适用于主动模式,被动模式下无需设置。


3.配置服务管理脚本

# vim /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
CONGIG_FILE="/usr/local/zabbix/etc/zabbix_agentd.conf"
...
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN -c $CONGIG_FILE
...
# cp /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/


4.启动 Zabbix Agent

# service zabbix_agentd start

5.设置开机自启动

# chkconfig zabbix_agentd on
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
30天前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
273 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
14天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
47 3
|
14天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
28 1
|
15天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
30 2
|
17天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
222 2
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
22 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
76 1