使用Docker-Compose安装Zabbix

随着互联网的普及,相比于过去搭建一个的zabbix平台,需要进行多个组件的安装,需要购买昂贵的硬件资源与相关网络资源的投入,成本可见一斑。小堂所在的公司是一家云计算公司,本文谈到的几种高可用方案,均使用自家的云主机,实践出真知,下面就来谈谈如何使用docker-compose进行zabbix的安装。

为什么要使用docker-compose的方式安装zabbix

docker相信有很多的读者朋友都有使用过,其中也应该使用过docker-compose,首先Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

如此的话,就可以很迅速地在一台新设备上面,快速进行zabbix的安装,后续如果进行迁移的话,只需要进行数据库的迁移即可。

1、安装docker

#卸载旧版本的docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
#安装软件
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
#安装源
 sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager --enable docker-ce-edge
sudo yum-config-manager --enable docker-ce-test
#安装docker-ce
sudo yum install docker-ce
#查看安装版本
docker version
#启动docker
systemctl start docker
#查看docker程序是否运行正常
docker 

2、安装docker-compose

#下载docker-compass工具,也可以直接下载github的连接的文件然后赋予权限。
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
上面这个是旧的版本,下面的是新的版本页面
https://github.com/docker/compose/releases
下载完之后进行文件的改名
#查看docker-compass的工具的版本
cp release /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

3、自定义一个docker网络

docker network create --subnet 172.88.88.0/24 devops

创建挂载目录

mkdir -p /data/docker/mysql-data
mkdir -p /data/docker/zabbix/fonts
mkdir -p /data/docker/zabbix/alertscripts
mkdir -p /data/docker/zabbix/externalscripts
cd /data/docker/zabbix

使用下面的yaml文件进行打开

[root@docker_zabbix-server zabbix]# cat zabbix.yml
version: "3"
services:

  mysql-server:
    image: mysql:5.7
    hostname: mysql-server
    container_name: mysql-server
    expose:
      - 3306
    command:
      - mysqld
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8
      - --collation-server=utf8_bin
    restart: always
    environment:
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=123456
      - MYSQL_ROOT_PASSWORD=123456
    ports:
      - 3366:3306
    volumes:
      - /etc/localtime:/etc/localtime -t
      - /data/docker/mysql-data/mysql:/var/lib/mysql
    networks:
      default:
        ipv4_address: 172.88.88.9
        
  zabbix-java-gateway:
    image: zabbix/zabbix-java-gateway:latest
    container_name: zabbix-java-gateway
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime -t
    networks:
      default:
        ipv4_address: 172.88.88.10
        
  zabbix-server-mysql:
    image: zabbix/zabbix-server-mysql:latest
    container_name: zabbix-server-mysql
    restart: always
    ports:
      - 10051:10051
    volumes:
      - /etc/localtime:/etc/localtime -t
      - /data/docker/mysql-data/zabbix:/usr/lib/zabbix
      - /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
      - /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
    environment:
      - DB_SERVER_HOST=mysql-server
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=123456
      - MYSQL_ROOT_PASSWORD=123456
      - ZBX_JAVAGATEWAY=zabbix-java-gateway
    depends_on:
      - mysql-server
      - zabbix-java-gateway
    networks:
      default:
        ipv4_address: 172.88.88.11
        
  zabbix-web-nginx-mysql:
    image: zabbix/zabbix-web-nginx-mysql:latest
    container_name: zabbix-web-nginx-mysql
    restart: always
    ports:
      - 8088:8080
      - 8443:443
    volumes:
      - /etc/localtime:/etc/localtime -t
      - /data/docker/zabbix/fonts/simkai.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
    environment:
      - PHP_TZ=Asia/Shanghai
      - DB_SERVER_HOST=mysql-server
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=123456
      - MYSQL_ROOT_PASSWORD=123456
    expose:
      - 8080
      - 8443
    depends_on:
     - mysql-server
     - zabbix-java-gateway
    networks:
      default:
        ipv4_address: 172.88.88.12
        
  zabbix-agent:
    image: zabbix/zabbix-agent:latest
    container_name: zabbix-agent
    environment:
      - ZBX_HOSTNAME=zabbix-agent
      - ZBX_SERVER_HOST=172.88.88.11
      - ZBX_SERVER_PORT=10051
    volumes:
      - /date/docker/zabbix/zabbix_agentd.d/:/etc/zabbix/zabbix_agentd.d/
      - /date/docker/zabbix/scripts/:/etc/zabbix/scripts/
    expose:
      - 10050
    networks:
      default:
        ipv4_address: 172.88.88.13
networks:
  default:
    external:
       name: devops
# mysql-server 3306映射3366
# zabbix-server-mysql 10051
# zabbix-agent 10050
# zabbix-web-nginx-mysql 8080映射8088


# 启动
docker-compose -f zabbix.yml up -d
# 查看进程
docker-compose ps
# 停止
docker-compose -f zabbix.yml down

# http://192.168.8.110:8088/index.php
Admin/zabbix

#如果发现zabbix_server起不来,状态是Exit,查看日志
docker logs -f mysql-server 	docker restart mysql-server
docker logs -f zabbix-java-gateway
docker logs -f zabbix-server-mysql docker restart zabbix-server-mysql 
docker logs -f zabbix-web-nginx-mysql
docker logs -f zabbix-agent

注意:①运行docker-compose需在docker-compose.yml文件夹运行
②需要提前下载DejaVuSans.ttf字体文件到相应data/zabbix/fonts/文件夹
③编写docker-compose.yml文件后,需新建未创建的文件夹,如:/data/zabbix/alertscripts、/data/docker/mysql-data

只有适合业务本身的方案才是好方案。许多时候并不一定追寻最新的前沿技术,只有在充分了解自身业务的本质需求的前提下,才能挑选出最适合的解决方案,其次在稳定性的基础下适当向功能性方面拓展。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值