概述
一、zabbix可以干什么
Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。
Zabbix 使用 MySQL、PostgreSQL、SQLite、Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 前端则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP 等各种协定做死活监视。在客户端如 UNIX、Windows 中安装 Zabbix Agent 之后,可监视 CPU 负荷、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP检查,以及利用 IPMI、SSH、telnet 对目标进行监视。另外,Zabbix 包含 XMPP 等各种 Item 警示功能。
二、zabbix的资源
第三方函数库及工具
- Zabbix 第三方工具列表。
- Zabbix monitor Apache - 用 Zabbix 监视 Apache 的方法。
- Zabbix JMX - 利用 Zabbix,透过 JMX 对 Java 服务做监视的 Item 设定方法 (2.0以上,非第三方,需安装 zabbix_java)。
- MySQLBix 用 Zabbix 监视 MySQL 的方法。
- MySQL-Performance-Monitor - 用 Zabbix 监视 MySQL 效能的方法。
API与工具[编辑]
- Ruby library - for Zabbix API.
- PHP library - for Zabbix API.
- Python library - for Zabbix API.
- Perl library - for Zabbix API.
- Zabcon - 使用 zbxapi 的函式库做出来的 CLI 工具 (面向Ruby)。
Android[编辑]
- Mobbix - Android 专用的 Zabbix Client 端。
- Zabbix Triggers Widget - Android 专用的Zabbix Client 端。
- Zabbkit - Android 专用的 Zabbix Client 端。
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、前端组件
-
基于 Apache2 Web 服务器以及支持 MySQL 数据库的 Zabbix web 接口 - zabbix/zabbix-web-apache-mysql
-
基于 Apache2 Web 服务器以及支持 PostgreSQL 数据库的 Zabbix web 接口 - zabbix/zabbix-web-apache-pgsql
-
基于 Nginx Web 服务器以及支持 MySQL 数据库的 Zabbix web 接口 - zabbix/zabbix-web-nginx-mysql
-
基于 Nginx Web 服务器以及支持 PostgreSQL 数据库的 Zabbix web 接口 - - zabbix/zabbix-web-nginx-pgsql
2、数据库及zabbix服务器组件
-
MySQL 数据库支持的 Zabbix server - zabbix/zabbix-server-mysql
-
PostgreSQL 数据库支持的 Zabbix server - zabbix/zabbix-server-pgsql
3、后端代理及agent组件
Zabbix agent - zabbix/zabbix-agent
-
SQLite3 数据库支持的 Zabbix proxy - zabbix/zabbix-proxy-sqlite3
-
MySQL 数据库支持的 Zabbix proxy - zabbix/zabbix-proxy-mysql
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_TLSCAFILE
,ZBX_TLSCRLFILE
,ZBX_TLSKEY_FILE
和ZBX_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
环境变量来启用SNMP陷阱处理功能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文件中没有中文字库,所以当界面切换为中文显示时,会显示中文异常。
最后
以上就是着急草莓为你收集整理的docker容器安装开源运维系统zabbix的全部内容,希望文章能够帮你解决docker容器安装开源运维系统zabbix所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复