Zabbix技术分享——使用docker-compose快速部署zabbix监控系统

前面文章有提到过使用docker来快速拉起一个zabbix监控系统(详见:如何使用docker快速部署一个zabbix监控系统),但是要一个个执行docker启动命令去将对应的容器启动。如果要配置参数多,那敲启动命令就是一件让人心累的事情。而且敲完后若没有保存启动命令,后面的管理也是比较麻烦,并且如果容器数量较多,还要一个个手敲启动命令,这就非常的不方便。

所以为了解决这个问题,并且更加高效的启动一个zabbix监控系统。现在使用docker-compose这个容器编排工具来高效的启动zabbix监控系统。

1.  Docker-compose介绍

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排, 并且提供了 scale (服务扩容) 的功能。

Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

2.  基础语法

Docker-compose就是通过docker-compose.yaml文件所定义的容器作为一个项目,从而进行docker容器的管理。下面就对docker-compose.yaml模板文件的常用基础语法进行一个简单的解释

2.1 container_name

Compose 的容器默认名称格式是:<项目名称><服务名称><序号>

虽然可以自定义项目名称、服务名称,但是如果你想完全控制容器的命名,可以使用这个标签指定:

比如我要制定一个mysql容器的名为“mysql-test”,那么

version: '3'

services:

 mysql:

container_name: mysql-test

2.2 image

指定服务的镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。

比如我要制定一个mysql容器,使用的镜像名为“mysql:8.0”,那么

version: '3'

services:

 mysql:

image: mysql:8.0

2.3 depends_on

在使用 Compose 时,最大的好处就是少打启动命令,但是一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,必然会因为容器依赖问题而启动失败。

例如在没启动数据库容器的时候启动了应用容器,这时候应用容器会因为找不到数据库而退出,为了避免这种情况我们需要加入一个标签,就是 depends_on,这个标签解决了容器的依赖、启动先后的问题。

比如我要先启动一个MySQL,后启动nginx,那么

version: '3'

services:

  nginx:

   image: nginx:1.16.1

   depends_on:

     - mysql

  mysql:

   image: mysql:8.0

2.4. environment

这是设置镜像的环境变量,直接将变量定义到镜像里面,这样启动容器时会自动读取该环境变量

如启动一个MySQL容器,要设置它的root初始化密码为“123456”,那

version: '3'

services:

  mysql:

   image: mysql:8.0

environment:

  MYSQL_ROOT_PASSWORD: 123456

2.5. ports

该参数是将宿主机的端口映射到容器端口,从而在宿主机访问对应的端口能访问到容器内。

如要讲MySQL容器的3306端口映射到宿主机的33060端口,那

version: '3'

services:

  mysql:

   image: mysql:8.0

ports:

    -    “33060:3306”

2.6 volumes

挂载一个目录或者一个已存在的数据卷容器,可以直接使用[HOST:CONTAINER] 这样的格式,或者使用 [HOST:CONTAINER:ro] 这样的格式,后者对于容器来说,数据卷是只读的,这样可以有效保护宿主机的文件系统。

Compose

的数据卷指定路径可以是相对路径,使用 . 或者.. 来指定相对目录。version: '3'

services:

  mysql:

   image: mysql:8.0

volumes:

    -  ./data:/var/lib/mysql

    -   /var/log/mysql:/var/log/mysql

3.  安装docker-compose

选择对应版本下载安装包

https://github.com/docker/compose/releases?after=1.28.0


上传到服务器修改名称并授权

mv docker-compose-x86 docker-compose

chmod +x docker-compose

测试

./docker-compose –v

安装

mv docker-compose /usr/bin

4. 编写zabbix监控系统的docker-compose.yaml文件

version: '3.7'

services:

 mysql:

   container_name: mysql

   image: mysql:latest

   restart: always

   environment:

     MYSQL_DATABASE: zabbix

     MYSQL_ROOT_PASSWORD: zabbix@2022

   ports:

     - "3306:3306"

   volumes:

     - /data/mysql:/var/lib/mysql

 zabbix-server:

   container_name: zabbix_server

   image: zabbix/zabbix-server-mysql:latest

   restart: always

   depends_on:

     - mysql

   environment:

     MYSQL_DATABASE: zabbix

     MYSQL_PASSWORD: zabbix@2022

     MYSQL_USER: root

     DB_SERVER_HOST: 192.168.75.31

     DB_SERVER_PORT: 3306

   ports:

     - "10051:10051"

   volumes:

     - /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts

     - /data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts

 zabbix-web:

   container_name: zabbix_web

   image: zabbix/zabbix-web-nginx-mysql:latest

   restart: always

    depends_on:

     - mysql

     - zabbix_server

   environment:

     MYSQL_DATABASE: zabbix

     MYSQL_PASSWORD: zabbix@2022

     MYSQL_USER: root

     DB_SERVER_HOST: 192.168.75.31

     DB_SERVER_PORT: 3306

     ZBX_SERVER_HOST: 192.168.75.31

      ZBX_SERVER_PORT: 10051

   ports:

     - "8080:8080"

 zabbix-agent:

   container_name: zabbix_agent

   image: zabbix/zabbix-agent:latest

   restart: always

   depends_on:

     - mysql

     - zabbix_server

   environment:

     ZBX_HOSTNAME: 192.168.75.31

     ZBX_SERVER_HOST: 172.18.0.1

   ports:

     - "10050:10050"

5. 启动zabbix监控系统

别忘了安装docker!

编写好zabbix监控系统的docker-compose.yaml文件后,就可以启动系统了

Docker-compose up –d

如图所示,已成功启动

6. 验证监控系统

我这边web端口映射为宿主机的18080,所以访问zabbix界面,那就是IP+18080

默认的账号密码:

Admin

zabbix


如图,成功访问。


这一期的Zabbix技术内容到这就结束了。我是乐维IT君,专注运维技术分享,更多Zabbix技术及其他运维内容,还可以查看我的往期内容,zabbix服务,zabbix配置,zabbix部署等zabbix服务解决方案

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容