这个示例展现了如何运行支持MySQL数据库的Zabbix server,基于Nginx web服务器运行Zabbix web接口,以及Zabbix Java gateway。

  1. 启动一个空的MySQL服务器实例

  docker pull mysql:5.7

  docker run --name mysql-server -p 3306:3306 -t -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" -e MYSQL_ROOT_PASSWORD="root" -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_bin

  2. 启动Zabbix Java gateway实例

  docker pull zabbix/zabbix-java-gateway:latest

  docker run --name zabbix-java-gateway -t -d zabbix/zabbix-java-gateway:latest

  3. 启动Zabbix server实例,并关联这个实例到已创建的MySQL服务器实例

  docker pull zabbix/zabbix-server-mysql:latest

  docker run --name zabbix-server-mysql -t -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" -e MYSQL_ROOT_PASSWORD="root" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" --link mysql-server:mysql --link zabbix-java-gateway:zabbix-java-gateway -p 10051:10051 -d zabbix/zabbix-server-mysql:latest

  Zabbix server实例暴露10051/TCP端口(Zabbix trapper)给主机。

  4. 启动Zabbix web 接口,并将它与MySQL服务器实例和Zabbix server实例关联

  docker pull zabbix/zabbix-web-nginx-mysql:latest

  docker run --name zabbix-web-nginx-mysql -t -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" -e MYSQL_ROOT_PASSWORD="root" --link mysql-server:mysql --link zabbix-server-mysql:zabbix-server -p 80:8080 -d zabbix/zabbix-web-nginx-mysql:latest

  Zabbix web 接口暴露80/TCP端口(HTTP)给主机。

  5.这个步骤我自己安装的时候在第3步出现问题,问题如下:

    继续处理zabbix-server-mysql安装的问题,创建该容器运行后发现该容器并没有启动,启不起来,原因应该是创建容器的命令有问题,把后台运行参数-d去除后发现报zabbix库users表数据不能为空,然后得知原因可能是没有初始化zabbix库,通过导入create.sql可以初始化,但是自己是利用docker方式安装的,使用二进制文件安装的方式下的目录下会有create.sql,但是docker方式就没有的,然后就搞了一份create.sql.gz,然后传到了linux,然后使用gunzip命令解压,然后需要将该sql文件传达docker容器中才行啊,然后就想到了挂载的方法,挂载后出现问题是不能访问挂载目录,因是CentOS7中的安全模块selinux把权限禁掉了,解决方法是在运行容器的时候,给容器加特权,即加上 --privileged=true 参数,然后表数据有了但是报query failed: [1071] Specified key was too long; max key length is 3072 bytes [create index items_1 on items (hostid,key_(1021))]错误。然后将数据库中zabbix中库删掉,重新执行该语句,zabbix-server-mysql就不会掉,zabbix库以及表也会自动生成。当然也可以想到就是在zabbix-server-mysql安装之前mysql库中zabbix库肯定是没有数据的,我现在相当于在安装之前就给它添加了数据,所以的确也有问题。正常应该是安装zabbix-server-mysql过程中会自动添加数据。我这个不知道为啥不行,删掉zabbix库再安装zabbix-server-mysql就可以了。

    解决方法是安装完mysql后,将zabbix库删除,然后按步骤安装zabbix-server-mysql,会生成zabbix以及其中的数据,容器不会停。

    docker挂载:docker run -v /root:/mydata --privileged=true mysql  :前为宿主机目录,:后为容器中挂载目录,不指定--privileged=true没有权限访问挂载目录

    ls -l:文件的详细信息,ls -i:查看文件的inode号(inode存储文件的详细信息)

    删除容器后挂载目录失效

  6.因为选择的容器是nginx做反向代理的,所以应该映射nginx对外服务的端口,即8080,而不是映射容器的80端口,如果用80端口无法访问web页面,所以映射可以写-p 80:8080

  7.如果要设置docker启动,容器启动,可在每个容器的启动参数里添加  --restart  always

  8.挺重要的一点是mysql需要使用5.7版本,刚开始使用的是新版本导致zabbix-web-nginx-mysql连接不上mysql,使用5.7以后没有问题了

  **重点:6和8是重点,5可以不用看正常情况下不会出现5的情况,如若出现重来一遍就完事。

  9.访问ip,用户名Admin,密码zabbix

  10.安装zabbix-agent,刚开始ZBX_SERVER_HOST写的是服务器ip,但是zabbix服务端会收不到agent端数据,通信有问题,使用docker的ip即可解决该问题

  docker run --name zabbix-agent -p 10050:10050 -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="172.17.0.1" -e ZBX_SERVER_PORT=10051 -d zabbix/zabbix-agent:latest

docker方式安装zabbix的更多相关文章

  1. Windows下VMware虚拟机使用Centos,Docker方式安装openstf的小坑

    今天使用docker方式安装openstf碰到了一小坑,坑了我半天.特此记录! docker方式安装stf就不说了,网上教程一大把. 但是... 安装完之后.进入web控制界面,手机连接的好好的.但硕 ...

  2. 在CentOS上通过Docker方式安装Redis

    在CentOS上通过Docker方式安装Redis 首先保证已经安装docker. 拖拽redis镜像 docker pull redis 启动redis docker run -p 6379:637 ...

  3. Linux上通过docker方式安装mysql

    centos版本信息: docker版本信息 mysql版本:5.7 1.docker方式安装 首先拉取mysql镜像:docker pull mysql:5.7     查看本地的mysql镜像 执 ...

  4. openresty——yum安装 配置 使用 错误处理 docker方式安装

    yum方式安装 wget https://openresty.org/package/centos/openresty.repo mv openresty.repo /etc/yum.repos.d/ ...

  5. docker 一键安装zabbix server、zabbix agent

    基本原理.须知:1.zabbix 分为zabbix server和zabbix agent,其中zabbix server需要web环境,并且其数据存储在独立的数据库中:2.docker是一种容器服务 ...

  6. Zabbix系列-REHL6.10离线方式安装Zabbix 4.0 LTS

    环境 第零步:关闭系统默认防火墙 setenforce 0 sed -i -r "/^SELINUX=/c SELINUX=disabled" /etc/selinux/confi ...

  7. pipelinewise 学习一 docker方式安装

    pipelinewise 没有提供基于pip 包的模式进行安装,而且推荐使用docker 以及源码的方式 以下是一个使用docker运行的方式 安装   git clone https://githu ...

  8. docker部署安装zabbix

    安装docker 安装docker需要配置网络yum源,centos7自带的版本太低了 第一步:下载阿里云的docker安装包 在yum仓库的目录之下 [root@localhost yum.repo ...

  9. Docker方式安装QIIME 2

    # 下载最新版QIIME 2 docker pull qiime2/core:2017.7 # 测试是否安装成功 docker run -t -i -v $(pwd):/mnt/hgfs/2017 q ...

随机推荐

  1. c++-投骰子

    #include<iostream>#include<cstdlib>//产生随机数的函数using namespace std;enum GameStatus{WIN,LOS ...

  2. 【混合编程】C/C++调用Fortran的DLL

    [混合编程]C/C++调用Fortran的DLL 以一个简单的加法器为例,介绍C/C++调用Fortran语言DLL的操作过程 一.Fortran操作 1.1 Fortran代码 首先是加法功能的实现 ...

  3. eclipse中的项目如何打成war包

    war包即Web归档文件,将Web项目打成war包可以直接拷贝到Web服务器发布目录(例如Tomcat服务器webapps目录 ),当Tomcat启动后该压缩文件自动解压,war包方便了web工程的发 ...

  4. rest-framework之视图和源码解析

    视图和源码解析 通过使用mixin类编写视图: from rest_framework import mixins from rest_framework import generics class ...

  5. RabbitMQ Go客户端教程3——发布/订阅

    本文翻译自RabbitMQ官网的Go语言客户端系列教程,本文首发于我的个人博客:liwenzhou.com,教程共分为六篇,本文是第三篇--发布/订阅. 这些教程涵盖了使用RabbitMQ创建消息传递 ...

  6. _u32定义

    驱动开发的原则: 能用__u32就最好用它,或者用u_int32_t之类的也可以,但不要直接用unsigned int等默认的数据类型.目的是让别人明白,你这个变量占多大内存. 原因: 1.你不能确定 ...

  7. 磁盘管理--如何在VMware上给centos7增加一块磁盘

    一. 实验环境 VMware Workstaion + Centos7 二.实验步骤 1.关闭虚拟机,添加磁盘 2.添加硬件向导 硬件类型 你要安装哪类硬件? 点击完成观察到已经成功添加磁盘 3.开启 ...

  8. 有标号DAG计数(生成函数)

    有标号DAG计数(生成函数) luogu 题解时间 首先考虑暴力,很容易得出 $ f[ i ] = \sum\limits_{ j = 1 }^{ i } ( -1 )^{ j - 1 } \bino ...

  9. Java9的模块化是什么

    Java9新特性中的模块化到底是什么 Java9中的一个重大特性是增加了一种新型的程序设计组件 - 模块. 官方对模块的定义为:一个被命名的,代码和数据的自描述集合.( the module, whi ...

  10. 手把手带你使用EFR32 -- 土壤湿度传感器变身第二形态,以 ZigBee 形态出击

    前言 后悔,总之就是非常后悔,我当时到底是为啥才会猪油蒙心,选择了 EFR32 来学习 ZigBee 使用啊? EFR32 这玩意看性能确实不错,但是资料太少了,EmberZnet SDK 也是用得一 ...