这个示例展现了如何运行支持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. VS2022不能使用<bits/stdc++.h>的解决方案

    •<bits/stdc++.h>介绍  #include<bits/stdc++.h>  包含了目前 C++ 所包含的所有头文件,又称万能头文件,简直是开挂一般的存在. 你编程 ...

  2. 阿里云ECS服务器(G5)安装配置docker

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 前言 服务器配置:阿里云ECS服务器(G5服务器3年2核8G内存80G云盘),安装的是CentOS,内核信息:5.10.60-9.al8.x86_ ...

  3. nginx配置只允许某个IP或某些IP进行访问

    server{ listen 80; listen 443 ssl; server_name ehall.jerry.plus; ssl_certificate "****.crt" ...

  4. django处理跨域

    django处理Ajax跨域访问时使用javascript进行ajax访问的时候,出现如下错误 出错原因:javascript处于安全考虑,不允许跨域访问.下图是对跨域访问的解释: 概念: 这里说的j ...

  5. 远程调用NFS超时,服务卡死

    远程调用NFS超时,服务卡死 如何查看进程中使用了哪些文件句柄?

  6. 【论文阅读】CVPR2022: Learning from all vehicles

    Column: March 23, 2022 1:08 PM Last edited time: March 23, 2022 11:13 PM Sensor/组织: 现leaderboard第一名, ...

  7. 一个简单的模拟实例说明Task及其调度问题

    Task对于.NET的重要性毋庸置疑.通过最近的一些面试经历,发现很多人对与Task及其调度机制,以及线程和线程池之间的关系并没有清晰的认识.本文采用最简单的方式模拟了Task的实现,旨在说明Task ...

  8. case 函数语法与使用

    case 函数是聚合函数的一种,为统计函数. case表达式: CASE selector WHEN value1 THEN action1; WHEN value2 THEN action2; WH ...

  9. HashMap?ConcurrentHashMap?

    Java团长在csdn 2019-02-06 19:58:00  104241  收藏 666     来源:crossoverJie(ID:crossoverJie) 前言 Map 这样的 Key ...

  10. redis 持久化有几种方式?

    面试题 redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的? 面试官心理分析 redis 如果仅仅只是将数据缓存在内存里面,如果 redis 宕机了再重启 ...