一、准备工作

1、mysql数据库:192.168.1.5
2、nginx服务:192.168.1.10
3、docker服务器:192.168.1.20
4、zabbix客户端若干

二、docker搭建zabbix

1、部署zabbix-server

先部署测试zabbix-server:

mkdir -p /home/docker/server/zabbix
docker pull zabbix/zabbix-server-mysql
docker run --name zabbix-server -p 10051:10051 \
-e DB_SERVER_HOST="192.168.1.5" \
-e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" \
-itd zabbix/zabbix-server-mysql
docker cp zabbix-server:/etc/zabbix /home/docker/server/zabbix/zabbix-server  #将zabbix配置文件放到服务器,为的是修改方便
docker rm -f zabbix-server

启动正式docker-server:

docker run --name zabbix-server -p 10051:10051 \
-e DB_SERVER_HOST="192.168.1.5" \
-e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="1234565" \
-v /home/docker/server/zabbix/server/zabbix_server.conf:/etc/zabbix/ zabbix_server.conf \
-v /home/docker/server/zabbix/server/alertscripts:/usr/lib/zabbix/alertscripts \
-v /home/docker/server/zabbix/server/externalscripts:/usr/lib/zabbix/externalscripts \
-v /home/docker/server/zabbix/server/modules:/var/lib/zabbix/modules \
-v /home/docker/server/zabbix/server/enc:/var/lib/zabbix/enc \
-v /home/docker/server/zabbix/server/ssh_keys:/var/lib/zabbix/ssh_keys \
-v /home/docker/server/zabbix/server/ssl/certs:/var/lib/zabbix/ssl/certs \
-v /home/docker/server/zabbix/server/ssl/keys:/var/lib/zabbix/ssl/keys \
-v /home/docker/server/zabbix/server/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca \
-v /home/docker/server/zabbix/server/snmptraps:/var/lib/zabbix/snmptraps \
-v /home/docker/server/zabbix/server/mibs:/var/lib/zabbix/mibs \
-itd zabbix/zabbix-server-mysql
注:-v 参数将容器文件映射到服务器,也是方便修改

2、部署zabbix-web

先部署测试zabbix-web:

docker pull zabbix/zabbix-web-nginx-mysql
docker run --name zabbix-web  -p 8080:8080 -p 8443:8443 \
--link zabbix-server:zabbix-server \
-e DB_SERVER_HOST="192.168.1.5" \
-e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e PHP_TZ="Asia/Shanghai" \
-itd zabbix/zabbix-web-nginx-mysql
docker cp zabbix-web:/usr/share/zabbix /home/docker/server/zabbix/zabbix-web 
注:--link 链接容器,可以互相通信,接收容器可以获取源容器的环境变量。   -e 设置环境变量。

启动正式zabbix-web:

docker run --name zabbix-web  -p 8080:8080 -p 8443:8443 \
--link zabbix-server:zabbix-server \
-v /home/docker/server/zabbix/zabbix-web:/usr/share/zabbix \
-e DB_SERVER_HOST="192.168.1.5" \
-e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e PHP_TZ="Asia/Shanghai" \
-itd zabbix/zabbix-web-nginx-mysql

3、部署zabbix-agent

先部署测试zabbix-agent:

docker pull zabbix/zabbix-agent
docker run --name zabbix-agent -p 10050:10050 \
--link zabbix-server:zabbix-server \
-itd zabbix/zabbix-agent
docker cp zabbix-agent:/etc/zabbix /home/docker/server/zabbix/zabbix-agent 
docker rm -f zabbix-agent

修改zabbix_agentd.conf配置文件:(有2种情况)

  (1)zabbix-server和zabbix-agent在同一台服务器部署

Server=172.17.0.1      #docker容器的网关地址 

  (2)zabbix-server和zabbix-agent不在一台服务器

Server=192.168.1.20
ServerActive=192.168.1.20:10051
Hostname=主机名

启动正式zabbix-agent:

docker run --name zabbix-agent -p 10050:10050 \
--link zabbix-server:zabbix-server \
-v /home/docker/server/zabbix/zabbix-agent/zabbix_agentd.conf:/etc/zabbix/zabbix_agentd.conf \
-itd zabbix/zabbix-agent

在nginx配置域名访问:

server {
server_name zabbix.aa.com;
listen 80;
location /zabbix/ {
proxy_pass http://192.168.1.20:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_next_upstream error timeout invalid_header;
}
}

访问url:http://zabbix.aa.com/zabbix           默认用户名密码:admin/zabbix

注:如果想在没有装docker环境的服务器安装zabbix客户端,直接下载zabbix-agent安装包就可以了。(总结来说docker部署的zabbix-agent不太好用,可以用zabbix+grafana实现所有监控功能:zabbix监控Linux服务,grafana监控容器服务)

三、zabbix页面配置

要配合Grafana做监控系统,所以下面选项中有创建触发器的操作就可以免除了。

1、提前准备

创建模板:

创建应用集:

添加主机:

2、监控端口

添加监控项:

创建触发器:

点完添加会出现下面这个条件选项:

3、url监控(不需要安装zabbix-agent)

创建web场景:

四、zabbix结合Grafana页面展示并邮件警报

因为之前写过docker部署Prometheus+Grafana,这里搭建grafana就可以了,还需要为grafana安装一个zabbix插件:

docker exec -it grafana grafana-cli plugins install alexanderzobnin-zabbix-app    #进入容器执行命令
docker restart grafana #重启grafana

1、提前准备

访问Grafana:http://grafana.aa.com  用户名密码:admin/grafana123  在页面配置zabbix插件并添加数据源:   

保存并测试,如果成功说明和zabbix已经连接成功。

创建报警信息:(grafana自带的警报)

2、导入json仪表盘模板

根据自己需求下载:https://grafana.com/grafana/dashboards,下载完导入到grafana:

3、手动创建仪表板:

(1)监控端口并报警:

   监控端口并报警配置完成。

(2)监控url并报警:

  监控URL并报警配置完成。

报警邮件展示:

功能以及操作方面可能有所不足,还在研究,持续更新中!!!

人生确实没有意义,但人生有美。

Docker搭建zabbix+grafana监控系统的更多相关文章

  1. Docker搭建Prometheus+grafana监控系统

    一.Prometheus简介 1.简介 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB). Prometheus使用Go语言开发,是Google BorgM ...

  2. Docker部署Zabbix+Grafana监控

    Docker部署Zabbix+Grafana监控 环境 centos 7 ; Docker 17.12.0-ce ; docker-compose version 1.20.1 2018-4-1 当前 ...

  3. docker-compose 搭建 Prometheus+Grafana监控系统

    有关监控选型之前有写过一篇文章: 监控系统选型,一文轻松搞定! 监控对象 Linux服务器 Docker Redis MySQL 数据采集 1).prometheus: 采集数据 2).node-ex ...

  4. docker-compose快速搭建 Prometheus+Grafana监控系统

    一.说明Prometheus负责收集数据,Grafana负责展示数据.其中采用Prometheus 中的 Exporter含:1)Node Exporter,负责收集 host 硬件和操作系统数据.它 ...

  5. 搭建zabbix+grafana监控

    编写一件安装脚本 #!/bin/sh echo "\033[32;1m脚本作者:fage\033[0m" #sleep 10 zabbix_version=4.0.2 zabbix ...

  6. [转帖]基于docker 搭建Prometheus+Grafana

    基于docker 搭建Prometheus+Grafana https://www.cnblogs.com/xiao987334176/p/9930517.html need good study 一 ...

  7. Zabbix分布式监控系统实践

    https://www.zabbix.com/wiki/howto/install/Ubuntu/ubuntuinstall 环境介绍OS: Ubuntu 10.10 Server 64-bitSer ...

  8. docker搭建zabbix

    本次使用docker搭建zabbix的组合是mysql+docker+zabix-server 1 先安装数据库mysql docker run --name zabbix-mysql-server ...

  9. 使用Ubuntu系统编译安装Zabbix企业级监控系统

    使用Ubuntu系统编译安装Zabbix企业级监控系统   作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Ubuntu系统部署笔记:https://www.cnblogs.com/ ...

随机推荐

  1. C++对象内存分布详解(包括字节对齐和虚函数表)

    转自:https://www.jb51.net/article/101122.htm 1.C++对象的内存分布和虚函数表: C++对象的内存分布和虚函数表注意,对象中保存的是虚函数表指针,而不是虚函数 ...

  2. python程序打包成exe(使用pyinstaller)

    pyinstaller下载地址:https://github.com/pyinstaller/pyinstaller/ (这个文件能够自动安装依赖项,其他版本的貌似还要自己安装依赖项) 下载之后解压到 ...

  3. 【JVM进阶之路】十三:类加载过程

    通过前面的学习,我们了解了Class文件的结构,在Class文件中描述的各类信息,最终都需要加载到虚拟机中之后才能被运行和使用. 接下来,我们开始学习JVM的类加载. 一个类从被加载到虚拟机内存中开始 ...

  4. Crontab 的使用方法

    第1列分钟1-59第2列小时1-23(0表示子夜)第3列日1-31第4列月1-12第5列星期0-6(0表示星期天)第6列要运行的命令 下面是crontab的格式:分 时 日 月 星期 要运行的命令 这 ...

  5. 西门子 S7300 以太网模块连接组态王方法

    北京华科远创科技有限研发的远创智控ETH-YC模块,以太网通讯模块型号有MPI-ETH-YC01和PPI-ETH-YC01,适用于西门子S7-200/S7-300/S7-400.SMART S7-20 ...

  6. Scrapy的Request和Response

    Scrapy的Request和Response   本文链接:https://blog.csdn.net/kissazhu/article/details/80865773 上节课我们学习了中间件,知 ...

  7. GO学习-(1) why go?

    为什么你应该学习Go语言? 终于等到你!Go语言--让你用写Python代码的开发效率编写C语言代码. 为什么互联网世界需要Go语言 世界上已经有太多太多的编程语言了,为什么又出来一个Go语言? 硬件 ...

  8. Eclipse从SVN中检出项目缺少Jar包的问题

    Eclipse从SVN中检出项目缺少Jar包的问题

  9. 一篇文章弄懂 Java 反射的使用

    说到Java反射,必须先把 Java 的字节码搞明白了,也就是 Class , 大 Class 在之前的文章中,我们知道了Java的大Class就是类的字节码,就是一个普通的类,里面保存的是类的信息, ...

  10. TensorFlow六种激活函数

    TensorFlow六种激活函数 每个神经元都必须有激活函数.神经元提供了模拟复杂非线性数据集所必需的非线性特性.该函数取所有输入的加权和,进而生成一个输出信号.把它看作输入和输出之间的转换.使用适当 ...