一:基于docker 配置zabbix

一:基于docker 配置zabbix

1、下载zabbix相关的4个镜像

1.下载mysql:5.7
sudo docker pull mysql:5.7

2.下载zabbix/zabbix-server-mysql
sudo docker pull zabbix/zabbix-server-mysql

3.下载zabbix/zabbix-web-nginx-mysql
sudo docker pull zabbix/zabbix-web-nginx-mysql

4.下载zabbix/zabbix-agent
sudo docker pull zabbix/zabbix-agent

2:检查docker-compose是否安装

命令:
sudo docker-compose --version


如果没有进行以下操作
安装docker-componse:
sudo  wget https://github.com/docker/compose/releases/download/1.23.0-rc3/docker-compose-Linux-x86_64

移动:
sudo  mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

授权:
sudo chmod +x /usr/local/bin/docker-compose

执行:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

验证:
sudo docker-compose --version

3.编写componse启动文件 docker-compose.yaml

version: '3'
services: 

  zabbix_mysql:
    container_name: "zabbix_mysql"
    restart: "always"
    image: mysql:5.7
    ports:
      - "13308:3306"
    volumes:
      - /dockerData/zabbix/mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "rootroot"
      MYSQL_USER: "zabbix"
      MYSQL_PASSWORD: "rootroot"
      MYSQL_DATABASE: "zabbix"

  zabbix_server:
    container_name: "zabbix_server"
    restart: "always"
    image: zabbix/zabbix-server-mysql
    ports:
      - "10051:10051"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /dockerData/zabbix/zabbix:/usr/lib/zabbix
    depends_on:
      - zabbix_mysql
    links:
      - zabbix_mysql:mysql
    environment:
      DB_SERVER_PORT: 13308
      DB_SERVER_HOST: 本地ip
      MYSQL_USER: "zabbix"
      MYSQL_DATABASE: "zabbix"
      MYSQL_PASSWORD: "rootroot"

  zabbix_nginx_web:
    container_name: "zabbix_nginx_web"
    restart: "always"
    image: zabbix/zabbix-web-nginx-mysql
    ports:
      - "8443:443"
      - "8080:8080"
    depends_on:
      - zabbix_mysql
      - zabbix_server
    links:
      - zabbix_mysql:mysql
      - zabbix_server:zabbix_server
    environment:
      DB_SERVER_PORT: 13308
      DB_SERVER_HOST: 本地ip
      MYSQL_USER: "zabbix"
      MYSQL_PASSWORD: "rootroot"
      MYSQL_DATABASE: "zabbix"
      ZBX_SERVER_HOST: 本地ip
      ZBX_SERVER_PORT: 10051
      PHP_TZ: "Asia/Shanghai"
  zabbix-agent-a:
    image: zabbix/zabbix-agent
    ports:
      - "10050:10050"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /dockerData/zabbix/zabbix:/usr/share/zabbix
      - /dockerData/zabbix/zabbix/conf/zabbix_agentd.conf:/etc/zabbix/zabbix_agentd.conf
    links: 
      - zabbix_server:zabbix_server
    container_name: zabbix-agent-a
    restart: always
    depends_on:
      - zabbix_server
    environment:
      - ZBX_HOSTNAME=zabbix-agent-a  
      - ZBX_SERVER_HOST=本地ip
      - ZBX_SERVER_PORT=10051

4.编写zabbix_agentd.conf启动文件(在你的指定目录)

LogType=console

#这里可以配置指定访问的ip

Server=0.0.0.0/0

ServerActive=192.168.19.132

Hostname=zabbix-agent-a

User=zabbix

Include=/etc/zabbix/zabbix_agentd.d/

LoadModulePath=/var/lib/zabbix/modules/

5.在docker-compose.yaml执行启动命令

sudo docker-compose up -d

6.在浏览器上看服务是否启动成功

网址:虚拟机ip:8080

用户名:zabbix
密码:admin

二.基于mysql主从配置zabbix

如果你linux上没有mysql主从那么可以按照下面方式进行配制,如果有可以跳过

1.在本地创建目录(本人用的乌班图linux没有差别)

在本地创建目录
	-dockerData
		-mysql-5.7-master
			-log
			-data
			-conf
				-my.cnf

my.cnf内容
***********************************
[mysqld]

server_id = 1

log-bin= mysql-bin

#不能加这个属性 或者选择加这个属性 剔除mysql二进制日志信息(说白了就是不进行复制的库)
#binlog-do-db=

read-only=0

replicate-ignore-db=mysql

replicate-ignore-db=sys

replicate-ignore-db=information_schema

replicate-ignore-db=performance_schema

!includedir /etc/mysql/conf.d/

!includedir /etc/mysql/mysql.conf.d/
***********************************
在本地创建目录
	-dockerData
		-mysql-5.7-slave
			-logls
			-data
			-conf
				-my.cnf
my.cnf内容
***********************************
[mysqld]

server_id = 2

log-bin= mysql-bin

read-only=1

replicate-ignore-db=mysql

replicate-ignore-db=sys

replicate-ignore-db=information_schema

replicate-ignore-db=performance_schema

!includedir /etc/mysql/conf.d/

!includedir /etc/mysql/mysql.conf.d/
***********************************

2.启动master

命令:
sudo docker run -d -p 13306:3306 --name='mysql-test-master' -e  MYSQL_ROOT_PASSWORD='root' -v /dockerData/mysql-5.7-master/data:/var/lib/mysql -v /dockerData/mysql-5.7-master/conf/my.cnf:/etc/mysql/my.cnf -v /dockerData/mysql-5.7-master/log:/var/log/mysql -v /etc/localtime:/etc/localtime mysql:5.7

3.启动slave

命令:
sudo docker run -d -p 13307:3306 --name='mysql-test-slave' -e  MYSQL_ROOT_PASSWORD='root' -v /dockerData/mysql-5.7-slave/data:/var/lib/mysql -v /dockerData/mysql-5.7-slave/conf/my.cnf:/etc/mysql/my.cnf -v /dockerData/mysql-5.7-slave/log:/var/log/mysql -v /etc/localtime:/etc/localtime mysql:5.7

4.进入master数据库 创建一个用户来同步数据

命令:
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';

5.查看设置情况

命令:
show master status;

内容:
***********************
|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set|
|mysql-bin.000003|431| | | |
***********************

6.查看slave在docker内部的ip

命令:
sudo docker inspect mysql-test-slave |grep IPAddress

内容:
**************************
"SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",
**************************

7.进入slaver数据库 设置主库链接

命令:
change master to master_host='172.17.0.3',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3306;

8.在slaver数据库开启从库模式

#如果之前配过 重置配置信息
命令:
reset slave;

#开启从库模式
命令:
start slave;

9 进入docker的mysql-slave容器内部

命令:
sudo docker exec -it mysql-test-slave /bin/bash

10 在容器内部进入mysql

命令:
mysql -uroot -proot

11 查看主从状态

show slave status \G;
内容:
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.19.132
                  Master_User: backup
                  Master_Port: 13306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000010
          Read_Master_Log_Pos: 346
               Relay_Log_File: b7a9189a8b97-relay-bin.000011
                Relay_Log_Pos: 559
        Relay_Master_Log_File: mysql-bin.000010
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: mysql,sys,information_schema,performance_schema
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 346
              Relay_Log_Space: 939
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: 118d633c-71c8-11eb-9e82-0242ac110004
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 5
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

内容为这样说明配置成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

12.配置过程中遇到的问题

1.Slave_IO_Running: No Slave_SQL_Running: No
说明master与slave的用户不通 从新检查用户名密码 以及日志文件的对应
再有就是 容器与容器之前是否互通

2..Slave_IO_Running: yes和 Slave_SQL_Running: yes不能主从复制
cnf文件 binlog-do-db= 属性去掉

三.在mysql从库添加 zabbix-agent 让zabbix-server监听(zabbix_agent 配置 监控mysql 主从同步情况)

1.修改mysql的配置文件my.cnf

在下面添加登录信息

[client]
host=localhost

user=root

password=root

2.启动容器的时候多开个端口个给zabbix_agent

-p 10058:10050
命令:
sudo docker run -d -p 13307:3306 -p 10058:10050 --name='mysql-test-slave' --privileged  -e  MYSQL_ROOT_PASSWORD='root' -v /dockerData/mysql-5.7-salve/data:/var/lib/mysql -v /dockerData/mysql-5.7-salve/conf/my.cnf:/etc/mysql/my.cnf -v /dockerData/mysql-5.7-salve/log:/var/log/mysql -v /etc/localtime:/etc/localtime -v /etc/apt/sources.list:/etc/apt/sources.list  mysql:5.7

添加阿里云路径
sudo docker exec -it mysql-test-slave apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 3B4FE6ACC0B21F32 3B4FE6ACC0B21F32  3B4FE6ACC0B21F32

3.在每个mysql-slave里安装zabbix_agent

yum install -y  zabbix-agent

4.替换zabbix_agent的配置文件

sudo docker exec -it 容器名称 rm -f zabbix_agentd.conf

5.在本地创建zabbix_agent.conf 的配置文件

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix-agent/zabbix_agentd.log

LogFileSize=0

Server=0.0.0.0/0

ListenPort=10050

ServerActive=192.168.19.132

Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf

HostnameItem=host01-mysql-slave

Hostname=host01-mysql-slave

UserParameter=mysql.slave.status,/etc/zabbix/zabbix_agentd.conf.d/mysql_slave_check.sh

6.将配置文件copy到容器内部

sudo docker cp 本地文件路径/zabbix_agentd.conf  容器名称:/etc/zabbix/zabbix_agentd.conf

7.本地创建mysql执行脚本mysql_slave_check.sh

mysql -e "show slave status \G;" | grep -E 'Slave_IO_Running: Yes|Slave_SQL_Running: Yes' | grep -c Yes

8.将mysql执行脚本mysql_slave_check.sh拷贝到指定位置

sudo docker cp 本地文件路径/mysql_slave_check.sh 容器名称:/etc/zabbix/zabbix_agentd.conf.d/mysql_slave_check.sh

9.进入容器给mysql_slave_check.sh可执行权限

容器内部
chmod -0777/etc/zabbix/zabbix_agentd.conf.d/mysql_slave_check.sh

10.启动zabbix_agent

容器内部
./etc/init.d/zabbix-agent start
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker可以用来轻松地在容器中运行Zabbix 6.0监控系统。下面是安装Zabbix 6.0到Docker容器的基本步骤: 1. **拉取Zabbix Docker镜像**: 使用Docker命令从Docker Hub拉取Zabbix官方镜像,例如`zabbix/zabbix-server`。你可以使用以下命令: ``` docker pull zabbix/zabbix-server ``` 2. **运行Zabbix服务器容器**: 运行容器时,需要指定一些环境变量和端口映射。例如,你可以设置数据库连接信息,以及将Zabbix Web界面监听的端口映射到主机的8080端口: ``` docker run --name some-zabbix-server \ -e ZABBIX_SERVER_CONFIG_FILE=/etc/zabbix/zabbix_server.conf \ -e ZABBIX_DATABASE_HOST=your_database_host \ -e ZABBIX_DATABASE_USER=zabbix \ -e ZABBIX_DATABASE_PASSWORD=zabbix_password \ -p 8080:80 \ -d zabbix/zabbix-server ``` 其中,`some-zabbix-server`是容器名称,可以根据需要自定义。 3. **配置Zabbix Server**: 容器启动后,Zabbix可能还需要一些额外配置。你需要访问Zabbix Web界面(默认是http://localhost:8080),登录(默认admin/admin),然后根据需求设置网络监控、服务器组、模板等。 4. **安装MySQL或其他数据库(可选)**: 如果Zabbix需要数据库支持,你还需要运行一个数据库容器,如MySQL。确保容器间的数据共享和通信已经设置好。 5. **数据持久化**: 如果你希望数据持久化,可以使用挂载卷(-v参数)来保存配置文件和数据库数据: ``` -v /path/on/host/config:/etc/zabbix -v /path/on/host/data:/var/lib/zabbix ``` 6. **更新和扩展**: 对于后续的升级或扩展,可以直接基于已有的Zabbix镜像创建新容器,或通过Dockerfile构建自己的Zabbix镜像。 相关问题: 1. Docker镜像中的Zabbix Server如何连接外部数据库? 2. 如何在Zabbix容器中配置Web界面的权限? 3. 数据库容器如何与Zabbix服务器容器进行数据交互?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值