zabbix 官网提供一个镜像 [ zabbix-appliance ], 可以直接拉起一个 zabbix-server. 但是数据库无法分离出来.

本实践使用 zabbix 官方提供的 Docker 镜像 [ zabbix-server-mysql ], [ zabbix-web-nginx-mysql ], 以及 [ mariadb ] 搭建一个 zabbix-server.

镜像说明

  • zabbix-server-mysql : 运行zabbix-server
  • mariadb: zabbix 数据库
  • zabbix-web-nginx-mysql : zabbix UI

Zabbix 微服务系统

Mariadb

docker volume create zbx_mariadb

docker run -d --name zbx_mariadb --restart=always \
-v zbx_mariadb:/var/lib/mysql \
-e "MYSQL_ROOT_PASSWORD=testpw" mariadb

登录 mysql, 授权:

docker exec -it zbx_mariadb mysql -p

MariaDB > CREATE USER zabbix@"172.17.%" IDENTIFIED BY "zabbix";
MariaDB > CREATE DATABASE zabbix CHARACTER SET utf8mb4;
MariaDB > GRANT ALL ON zabbix.* TO zabbix@"172.17.%" IDENTIFIED BY "zabbix";
MariaDB > FLUSH PRIVILEGES;

zabbix-server

docker run -d --name zabbix-server --link zbx_mariadb:mariadb --restart=always -p 10051:10051 \
-e "DB_SERVER_HOST=zbx_mariadb" \
-e "MYSQL_USER=zabbix" \
-e "MYSQL_PASSWORD=zabbix" \
-e "MYSQL_DATABASE=zabbix" \
-v /tmp:/tmp \
-v /etc/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
zabbix/zabbix-server-mysql

镜像 zabbix-server-mysql 基于 alpine, 如果需要在容器内安装 python, 可以进入容器执行:

apk add --no-cache python && \
python -m ensurepip && \
rm -r /usr/lib/python*/ensurepip && \
pip install --upgrade pip setuptools && \
rm -r /root/.cache

ps: 也可以直接拉取: `docker pull zhegao/zabbix-server-mysql`

zabbix-web

docker run -d  --name zabbix-web-nginx-mysql --link zbx_mariadb:mariadb --restart=always -p 8080:80 \
-e DB_SERVER_HOST="zbx_mariadb" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e ZBX_SERVER_HOST="172.17.0.1" \
-e PHP_TZ="Asia/Shanghai" zabbix/zabbix-web-nginx-mysql

nginx 配置

server {
listen 80;
server_name monitor.xx; location / {
proxy_pass http://172.17.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto "http";
}
}

这里的 172.17.0.1 地址是 docker 默认的桥接地址. 当然, 这些地址都可以替换为宿主机网卡的地址.

登录验证: Admin / zabbix.

基于 Docker 的 Zabbix 微服务系统的更多相关文章

  1. Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务

    本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...

  2. 基于docker部署的微服务架构(四): 配置中心

    原文:http://www.jianshu.com/p/b17d65934b58%20 前言 在微服务架构中,由于服务数量众多,如果使用传统的配置文件管理方式,配置文件分散在各个项目中,不易于集中管理 ...

  3. 画了一张基于Spring Cloud的微服务系统架构图

  4. 基于Spring Boot、Spring Cloud、Docker的微服务系统架构实践

    由于最近公司业务需要,需要搭建基于Spring Cloud的微服务系统.遍访各大搜索引擎,发现国内资料少之又少,也难怪,国内Dubbo正统治着天下.但是,一个技术总有它的瓶颈,Dubbo也有它捉襟见肘 ...

  5. 基于Openshift的SpringBoot微服务

    基于Openshift的SpringBoot微服务 OpenShift是红帽的云开发平台即服务(PaaS).自由和开放源码的云计算平台使开发人员能够创建.测试和运行他们的应用程序,并且可以把它们部署到 ...

  6. 干货|基于 Spring Cloud 的微服务落地

    转自 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的 ...

  7. 基于Spring Cloud的微服务落地

    微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的微服务 ...

  8. SpringCloud(9)使用Spring Cloud OAuth2保护微服务系统

    一.简介 OAth2是一个标准的授权协议. 在认证与授权的过程中,主要包含以下3种角色. 服务提供方 Authorization Server. 资源持有者 Resource Server. 客户端 ...

  9. 基于Spring Cloud的微服务入门教程

    (本教程的原地址发布在本人的简书上:http://www.jianshu.com/p/947d57d042e7,若各位看官有什么问题或不同看法请在这里或简书留言,谢谢!) 本人也是前段时间才开始接触S ...

随机推荐

  1. java—连连看GUI

    1.连连看棋盘图形化 package Link; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; impo ...

  2. [zt]手把手教你写对拍程序(PASCAL)

    谁适合看这篇文章? ACMERS,OIERS或其它参加算法竞赛或需要算法的人 对操作系统并不太熟悉的人 不会写对拍的人 在网上找不到一个特别详细的对拍样例的人 不嫌弃我写的太低幼的人 前言 在NOIP ...

  3. java — 设计模式

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 一.设计模式的分类 ...

  4. java线程安全— synchronized和volatile

    java线程安全— synchronized和volatile package threadsafe; public class TranditionalThreadSynchronized { pu ...

  5. python学习笔记06:操作文件

    调用内置的open函数打开文件,传递两个参数:文件路径(绝对路径或相对路径),打开模式('r':读,'r+':读写,'w':写,'b':二进制): f = open('data.txt','w') f ...

  6. 第二章 shell的语法

    变量:字符串.数字.环境和参数 获取变量内容可以在变量前使用$字符,使用echo指令可以将变量内容输出到终端. wuchao@wuchao-Lenovo:~$ var=hello wuchao@wuc ...

  7. Swift中避免在多个文件中重复import相同的第三方包

    swift中由于有命名空间的存在,在同一个target创建的文件,都可以不引用直接就可以拿来使用,但是不同target之间必须要import 之后才能使用,在不同的文件中使用都要重复的import这个 ...

  8. PAT L2-028 秀恩爱分得快

    https://pintia.cn/problem-sets/994805046380707840/problems/994805054698012672 古人云:秀恩爱,分得快. 互联网上每天都有大 ...

  9. phpcms V9如何判断用户是否登录以及登陆后的标签写法问题

    首先要获取userid {php$userid=param::get_cookie('_userid');}​ 然后再判断是否为空 {if $userid}...这里写已经登录之后的代码...{els ...

  10. 图像检测算法Halcon 10的使用

    安装完成HALCON之后,在VS项目中添加动态链接库配置项目,并修改此项目属性的包含目录.库目录和链接器.