docker容器安装开源运维系统zabbix

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/firehadoop/article/details/84642907

一、zabbix可以干什么

Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。

Zabbix 使用 MySQLPostgreSQLSQLiteOracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 前端则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP 等各种协定做死活监视。在客户端如 UNIX、Windows 中安装 Zabbix Agent 之后,可监视 CPU 负荷、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMPTCPICMP检查,以及利用 IPMI、SSHtelnet 对目标进行监视。另外,Zabbix 包含 XMPP 等各种 Item 警示功能。

二、zabbix的资源

第三方函数库及工具

API与工具[编辑]

Android[编辑]

iPhone[编辑]

  • Mozaby - iPhone 专用 Zabbix Client 端。
  • Zabbkit - iPhone 专用 Zabbix Client 端。
  • MobileOp - iPhone 专用 Zabbix Client 端。

Windows Phone[编辑]

  • Zabbkit - Windows Phone 专用 Zabbix Client 端。

三、zabbix系统架构

Zabbix的用户界面是一组PHP页面,通常由带有PHP模块的Apache Web服务器提供。前端页面访问Zabbix数据库以检索用于绘图的数据。

Zabbix数据库包含所有收集的数据以及前端使用的配置数据。Zabbix支持许多不同的数据库,因此您可能会选择一个您喜欢的数据库。

数据库由Zabbix服务器提供。服务器使用代理收集数据。这些代理通常安装在受监视的计算机上,很可能是每台计算机一个代理程序。

zabbix系统体系有三大部分构成:

1、Front-end 前端WEB界面通过PHP实现终端用户交互,应用服务器支持apache和nginx,Zabbix API允许你使用JSON RPC协议来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务

2、Database zabbix系统数据保存可以支持mysql、oracle、postgresql

3、Back-End 后端zabbix服务端有agents、proxy与server三块,agents安装在各个监控主机或服务器上,proxy辅助server收集数据,分担server的负载,小型项目中可以不适用proxy,server是zabbix软件实现监控的核心程序,主要功能是与proxy和agents进行交互、触发器计算、发送告警通知并将告警数据集中保存至Database

四、docker镜像仓库中zabbix组件介绍

1、前端组件

2、数据库及zabbix服务器组件

3、后端代理及agent组件

       Zabbix agent - zabbix/zabbix-agent

       Zabbix Java Gateway - zabbix/zabbix-java-gateway

4、镜像版本说明

Zabbix 组件的每个镜像仓库都包含了下列标签:

  • latest - 基于 Alpine Linux 镜像的最新稳定版的 Zabbix 组件;

  • alpine-latest - 基于 Alpine Linux 镜像的最新稳定版的 Zabbix 组件;latest stable version of a Zabbix component based on Alpine Linux image

  • ubuntu-latest - 基于 Ubuntu 镜像的最新稳定版的 Zabbix 组件;latest stable version of a Zabbix component based on Ubuntu image

  • alpine-4.0-latest - 基于 Alpine Linux 镜像的最新次要版本的 Zabbix 4.0 组件;latest minor version of a Zabbix 4.0 component based on Alpine Linux image

  • ubuntu-4.0-latest - 基于 Unbuntu 镜像的最新次要版本的 Zabbix 4.0 组件;latest minor version of a Zabbix 4.0 component based on Ubuntu image

  • alpine-4.0.* - 基于 Alpine Linux 镜像的不同次要版本的 Zabbix 4.0 组件,其中 * 代表 Zabbix 组件的次要版本;

  • ubuntu-4.0.* - 基于 Ubuntu 镜像的不同次要版本的 Zabbix 4.0 组件,其中 * 代表 Zabbix 组件的次要版本。

五、用于实验zabbix的快速体验安装

zabbix/zabbix-appliance镜像是基于Nginx Web服务器的Zabbix设备,内置MySQL服务器,Zabbix服务器,Zabbix Java Gateway和Zabbix前端

docker run --name some-zabbix-appliance -p 80:80 -p 10051:10051 -d zabbix/zabbix-appliance

通过docker ps验证是否启动成功,如果启动成功则可以通过浏览器直接数据主机IP地址进行访问,访问界面如下:默认的用户名是: Admin 密码是:zabbix

测试环境安装主要目的是用于验证zabbix功能点,但是不能用于生产,因为所有的数据无法保存在外部,容器只要重启,全部配置数据丢失。 

六、用于生产环境的容器安装 

生产主机本地目录结构,本文档的目录在/home/zabbix下,设置了用于保存mysql数据库的data目录,其它目录根据实际应用情况可选。

1、启动一个单独的数据库mysql用于保存zabbix数据

docker run --rm --name mysql-server -t \
-e MYSQL_DATABASE="zabbix"  \
-e MYSQL_USER="zabbix"  \
-e MYSQL_PASSWORD="zabbix"  \
-e MYSQL_ROOT_PASSWORD="zabbix"  \
-v /home/zabbix/data:/var/lib/mysql  \
-d mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_bin

定义了数据库名zabbix,数据库用户zabbix,密码zabbix,在本地目录/home/zabbix/data中持久化保存mysql容器运行中的数据,确保容器退出运行后,数据不会丢失,最后两条是定义了数据库的字符集为utf8,解决了mysql数据库保存中文的问题;

 2、启动zabbix server服务,并关联这个服务到上面已经启动的mysql数据库实例上,确保zabbix的数据可以保存到mysql数据库中,挂载在本地目录中的还有其它一些内容,根据生产环境实际情况灵活决定是否挂载,如果挂载可以通过容器直接加载本地目录中的脚本或认证信息

docker run --rm --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="zabbix" \
--link mysql-server:mysql \
-v /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
-v /home/zabbix/modules:/var/lib/zabbix/modules \
-v /home/zabbix/enc:/var/lib/zabbix/enc \
-v /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys \
-v /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs \
-v /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys \
-v /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca \
-v /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps \
-v /home/zabbix/mibs:/var/lib/zabbix/mibs \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql

 使用docker logs命令查看zabbix-server-mysql的运行日志,确认zabbix服务器实例关联数据库实例成功。

/usr/lib/zabbix/alertscripts

该卷用于自定义警报脚本。它是AlertScriptsPath参数zabbix_server.conf

/usr/lib/zabbix/externalscripts

外部检查(项目类型)使用该卷。它是ExternalScripts参数zabbix_server.conf

/var/lib/zabbix/modules

该卷允许加载其他模块并使用LoadModule功能扩展Zabbix服务器。

/var/lib/zabbix/enc

该卷用于存储TLS相关文件。这些文件的名称使用规定ZBX_TLSCAFILEZBX_TLSCRLFILEZBX_TLSKEY_FILEZBX_TLSPSKFILE变量。

/var/lib/zabbix/ssh_keys

该卷用作SSH检查和操作的公钥和私钥的位置。它是SSHKeyLocation参数zabbix_server.conf

/var/lib/zabbix/ssl/certs

该卷用作客户端身份验证的SSL客户端证书文件的位置。它是SSLCertLocation参数zabbix_server.conf

/var/lib/zabbix/ssl/keys

该卷用作客户端身份验证的SSL私钥文件的位置。它是SSLKeyLocation参数zabbix_server.conf

/var/lib/zabbix/ssl/ssl_ca

该卷用作SSL服务器证书验证的证书颁发机构(CA)文件的位置。它是SSLCALocation参数zabbix_server.conf

/var/lib/zabbix/snmptraps

该卷用作snmptraps.log文件的位置。它可以由zabbix-snmptraps容器共享,并volumes_from在创建Zabbix服务器的新实例时使用Docker选项继承。
可以使用共享卷和交换ZBX_ENABLE_SNMP_TRAPS环境变量来启用S​​NMP陷阱处理功能true

/var/lib/zabbix/mibs

该卷允许添加新的MIB文件。它不支持子目录,必须放置所有MIB /var/lib/zabbix/mibs

 3、启动zabbix前端web界面实例,将web界面实例与前面的mysql数据库服务实例及zabbix-server实例配置数据关联起来进行展示

docker run --rm --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="zabbix" \
      -e PHP_TZ="Asia/Shanghai" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 8080:80 \
      -d zabbix/zabbix-web-nginx-mysql:latest

--link mysql-server:mysql 连接数据库实例,mysql-server必须要与第一步的--name mysql-server完全一致

--link zabbix-server-mysql:zabbix-server 连接zabbix服务器实例,zabbix-server-mysql必须要与第二步的--name zabbix-server-mysql完全一致

DB_SERVER_HOST变量的值要与第二步指定的-e DB_SERVER_HOST="mysql-server"一致

4、验证登陆主机8080端口,查看是否能正常登陆

用户名是Admin,密码是zabbix,使用Admin登陆成功后可以手动修改账号的登陆显示语言为中文,并修改密码。

5、在监控主机上安装agent,完成对监控主机的管理

docker run --rm --name zabbix-agent \
    -e ZBX_HOSTNAME="Zabbix Server" \
    -e ZBX_SERVER_HOST="133.3.107.3" \
    -p 10050:10050 \
    -d zabbix/zabbix-agent

ZBX_SERVER_HOST变量写入zabbix服务器所在主机的对外网卡IP地址即可

登陆zabbix的web管理界面,录入刚才纳管的主机即可完成管理

管理效果如下

遗留问题:由于web显示的docker文件中没有中文字库,所以当界面切换为中文显示时,会显示中文异常。 

猜你喜欢

转载自blog.csdn.net/firehadoop/article/details/84642907
今日推荐