1、如何选择自己的运维监控平台

1.1、常用的开源运维监控工具

1.1.1、Cacti

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。简单的说Cacti 就是一个PHP 程序。它通过使用SNMP 协议获取远端网络设备和相关信息,(其实就是使用Net-SNMP 软件包的snmpget 和snmpwalk 命令获取)并通过RRDTOOL 工具绘图,通过PHP 程序展现出来。我们使用它可以展现出监控对象一段时间内的状态或者性能趋势图。

官方网站:https://www.cacti.net/

1.1.2、Nagios

Nagios是一款开源的免费网络监视工具,能有效监控 Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

官方网站:https://www.nagios.org/

1.1.3、Ganglia

Ganglia是一款为HPC(高性能计算)集群而设计的可扩展的分布式监控系统,它可以监视和显示集群中的节点的各种状态信息,它由运行在各个节点上的gmond守护进程来采集CPU 、内存、硬盘利用率、I/O负载、网络流量情况等方面的数据,然后汇总到gmetad守护进程下,使用rrdtool存储数据,最后将历史数据以曲线方式通过PHP页面呈现。 Ganglia监控系统有三部分组成,分别是gmond、gmetad、webfrontend。 官方网站:http://ganglia.info/

1.1.4、Centreon

Centreon是一款功能强大的分布式IT监控系统,它通过第三方组件可以实现对网络、操作系统和应用程序的监控:首先,它是开源的,我们可以免费使用它;其次,它的底层采用nagios(目前官方开发了属于自己的监控引擎)作为监控软件,同时nagios通过ndoutil模块将监控到的数据定时写入数据库中,而Centreon实时从数据库读取该数据并通过Web界面展现监控数据;,最后,可以通过Centreon管理和配置nagios,或者说Centreon就是nagios的一个管理配置工具,通过Centreon提供的Web配置界面,可以轻松完成nagios的各种繁琐配置。 官方网站: https://www.centreon.com/en/

1.1.5、Grafana

Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源。 官方网站:https://grafana.com/

1.1.6、Prometheus

Prometheus是一个开源的服务监控系统和时间序列数据库。理解Prometheus,抓住三个词,即开源、监控、时间序列数据库

  • 开源:意味着我们可以免费使用,也可以自己提一些新功能或者Bug修复,共建强大的生态圈。
  • 监控:意味着普罗米修斯可以用于监控场景,监控我们的服务器,监控我们的数据库,监控我们的应用程序,它都用的上。
  • 时间序列数据库: 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。这些信息是不可变的。目前在监控场景用的比较多。

Prometheus目前的标配都是和Grafana,AlertManage一起使用的,俗称云监控三剑客,跟ELK类似。

其中,Prometheus负责拉取监控数据,存储。Grafana负责展示各种监控指标,通过图形化的方式实现可视化。正所谓,Prometheus负责赚钱养家,Grafana负责美貌如花。最后,还有一个AlertManage,这是一个打小报告的,主要负责异常告警,可以对接微信、钉钉等多种消息通知。

1.1.7、Zabbix

Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供各种通知机制以让系统管理员快速定位/解决存在的各种问题。

Zabbix主要由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台上。

官方网站:https://www.zabbix.com/

1.2、监控工具选型经验

1.2.1 中小企业传统监控选择Zabbix

Zabbix是一款综合了数据收集、数据展示、数据提取、监控报警配置、用户展示等方面的一款综合运维监控平台。 Zabbix学习入门较快,功能也很强大,是一个可以迅速用起来的监控软件,能够满足中小企业的监控报警需求,因此是中小型企业运维监控的首选平台。

1.2.2 云原生监控选择Prometheus

Prometheus是一套开源的监控&报警&时间序列数据库的组合,因为Kubernetes的流行带动了Prometheus的发展,所以,Prometheus更适合对docker、云服务、k8s等云原生应用进行监控。

2、zabbix版本发布与安装需求

2.1、zabbix版本发布计划

zabbix目前发布的版本有标准版和**长期支持版(LTS)**两种,LTS为Long Term Support的简写。

Zabbix LTS版本,将为客户提供5年的支持服务。前三年完全支持与后两年有限制支持。前三年包括一般、关键、安全性问题解决,后两年包括关键、安全性问题解决。超出时间不提供技术支持服务。

Zabbix标准版,发布计划周期为六个月,每六个月将有一个新的Zabbix稳定版本发布。

目前Zabbix LTS最新版本为Zabbix7.0 LTS,支持服务支持到2030年。Zabbix标准版最新版本为zabbix7.4.

2.2、zabbix安装要求

(1)、硬件要求

规模

监控指标

CPU内核

内存 (GiB)

数据库

1 000

2

8

MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL

10 000

4

16

MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL

100 000

16

64

MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL, Oracle

非常大

1 000 000

32

96

MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL, Oracle

(2)支持的操作系统平台

由于服务器操作的安全性要求和任务关键性,UNIX/Linux 是唯一能够始终如一地提供必要性能、容错和弹性的操作系统。

Zabbix server/agent 也可以在各种Unix/Linux操作系统上运行。自XP以来,所有Windows desktop 和 server 版本都支持Zabbix agent,但windows不支持安装Zabbix server。

(3)、后端数据库要求

有强制性要求。 特定功能的支持需要可选需求。

软件

支持版本

注释

MySQL/Percona

8.0.30 或以后版本

如果 MySQL(或 Percona)用作 Zabbix 后端数据库,则为必需。 需要 InnoDB 引擎。 建议使用 MariaDB Connector/C

库来构建server/proxy。

MariaDB

10.5.00-10.10.X

InnoDB 引擎是必需的。 建议使用 MariaDB Connector/C

库来构建server/proxy。

Oracle

19c - 21c

如果将 Oracle 用作 Zabbix 后端数据库,则为必需。

PostgreSQL

13.0-15.X

如果将 PostgreSQL 用作 Zabbix 后端数据库,则为必需。 自 Zabbix 6.0.10 起支持 PostgreSQL 15。

2.3、zabbix7.x LTS新特性介绍

(1)、主机向导(Host Wizard

Web 界面一键完成 Agent 安装、模板绑定、PSK 加密、阈值与宏设置,无需手动干预

(2)、监控指标卡片(Item Card)

Dashboard 新增卡片组件,可集中展示关键 Item 的实时值、单位、状态与描述;同时提供 History 小组件,在同一面板内即可查看指标趋势

(3)、Map 增强

支持组件层级叠放;连线可绑定 Item,按阈值变色,实现更直观的拓扑状态展示

(4)、无限嵌套发现

低级别发现(LLD)与主机原型发现取消层级限制,可链式发现“集群→主机→数据库→表空间”等复杂对象,大幅简化多层监控配置

(5)、前后端 TLS 加密

Zabbix Server 与 Web 前端之间可启用 TLS(证书或 PSK),满足“零信任”内网或公网安全要求,安装或后期均可开启

3、zabbix应用组件介绍

Zabbix主要有几个组件构成,这些组件的功能介绍如下:

(1)、Zabbix Server

Zabbix Server是Zabbix的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。 它主要负责接收客户端发送的报告和信息,同时,所有配置、统计数据及配置操作数据均由其组织进行。

(2)、Zabbix Database Storage

主要用于存储数据,所有配置信息和Zabbix收集到的数据都被存储在数据库中。常用的存储设备有MySQL、Oracle、SQLite等。

(3)、Zabbix Web 界面

这是Zabbix提供的GUI接口,通常(但不一定)与Zabbix Server运行在同一台物理机器上。

(4)、Zabbix Proxy代理服务器

这是一个可选组件,常用于分布监控环境中,代理Server可以替Zabbix Server收集性能和可用性数据,汇总后统一发往Zabbix Server端。

(5)、Zabbix Agent监控代理

Zabbix Agent部署在被监控主机上,能够主动监控本地资源和应用程序,并负责收集数据发往Zabbix Server端或Zabbix Proxy端。从zabbix5版本开始,zabbix_agent分为zabbix_agent和zabbix_agent2,zabbix_agent2是第二个agent版本,功能更加强大,采用go语言编写,支持zabbix_agent所有功能。使用zabbix_agent2可监控docker容器、ceph、mysql、oracle、redis等。

4、Zabbix服务进程介绍

根据功能和用途,默认情况下zabbix包含5个进程,分别是zabbix_agentd/zabbix_agent2、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外还有一个zabbix_java_gateway是可选的功能,需要另外安装。下面分别介绍下它们各自的作用。

(1)、zabbix_agentd/zabbix_agent2

zabbix_agentd/agent2是Zabbix Agent监控代理端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘、网络使用情况等,推荐使用zabbix_agent2。

(2)、zabbix_get

zabbix提供的一个工具,通常在Zabbix server或者Zabbix proxy端执行用来获取远程客户端信息,这其实是Zabbix server去Zabbix Agent端拉取数据的过程,此工具主要用来进行用户排错。例如在Zabbix server端获取不到客户端的监控数据时,可以使用zabbix_get命令测试获取客户端数据来做故障排查。

(3)、zabbix_sender

zabbix提供的一个工具,用于发送数据给Zabbix server或者Zabbix proxy,这其实是Zabbix Agent端主动推送监控数据到Zabbix Server端的过程,通常用于耗时比较长的检查或者有大量主机(千台以上)需要监控的场景。此时通过主动推送数据到Zabbix server,可以在很大程度上减轻Zabbix server的压力和负载。

(4)、zabbix_proxy

Zabbix Proxy的代理守护进程。功能类似Zabbix server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交或者被提交到Zabbix server上。

(5)、zabbix_java_gateway

Zabbix2.0之后引入的一个功能。顾名思义:Java网关,主要用来监控JAVA应用环境,类似zabbix_agentd进程。需要特别注意的是,它只能主动去推送数据,而不能等待zabbix server或者zabbix proxy来拉取数据。它的数据最终会给到zabbix server或者zabbix proxy上。

(6)、zabbix_server

Zabbix server是整个Zabbix系统的核心进程。其它进程zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到Zabbix server来统一进行处理。

(7)、Zabbix web service

Zabbix web service 是一个用来连接外部网站服务的进程。现在,Zabbix web service 用来收集和发送定时报告,Zabbix web service 模块在预编译的Zabbix安装包中提供。通过源码包中编译Zabbix web service时,需要指定--enable-webservice配置参数。

(8)、zabbix默认端口号

以下每个组件的开放端口列表适用于默认配置:

Zabbix 组件

端口号

协议

连接类型

Zabbix agent

10050

TCP

on demand

Zabbix agent 2

10050

TCP

on demand

Zabbix server

10051

TCP

on demand

Zabbix proxy

10051

TCP

on demand

Zabbix Java gateway

10052

TCP

on demand

Zabbix web service

10053

TCP

on demand

Zabbix frontend

80

HTTP

on demand

443

HTTPS

on demand

Zabbix trapper

10051

TCP

on demand

注意,端口号应在防火墙中打开以启用 Zabbix 通信。

5、zabbix运行架构

6、多种方式安装zabbix监控平台

zabbix的安装部署非常简单,官方提供了四种安装途径,分别是二进制rpm包安装方式、源码安装方式、容器安装方式和虚拟机镜像安装方式。

Zabbix web端是基于HTTP服务器和PHP脚本语言进行构建的,HTTP服务器可以是nginx或apache,zabbix的数据存储支持多种数据库,可以是MySQL、Oracle、PostgreSQL、SQLite等,这里我们选择MySQL数据库作为后端存储。

安装环境介绍:

操作系统:RHEL9/AlmaLinux9

MySQL:MySQL8.0.32

zabbix:Zabbix6.4/Zabbix7.0 LTS

6.1、使用dnf/yum在线进行安装

zabbix官方提供了dnf安装方式,这是最简单的一种部署形式,详细安装过程如下:

1、安装MySQL数据库

这里使用目前MySQL8.0.32版本,采用MySQL官方发布的二进制版本进行安装,下载后的二进制版本名称大致为mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz,下面是安装MySQL的过程:

[root@zabbixserver ~]# xz -d mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
[root@zabbixserver ~]# tar xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar  -C /usr/local
[root@zabbixserver ~]# cd /usr/local/
[root@zabbixserver ~]# mv mysql-8.0.32-linux-glibc2.12-x86_64 mysql
[root@zabbixserver ~]# cd mysql
[root@zabbixserver mysql]# useradd mysql
[root@zabbixserver mysql]# mkdir etc logs data
[root@zabbixserver mysql]# more /usr/local/mysql/etc/my.cnf 
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/logs/mysqld.pid
[root@zabbixserver mysql]# chown -R mysql:mysql   /usr/local/mysql
[root@zabbixserver mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
[root@zabbixserver mysql]# /usr/local/mysql/support-files/mysql.server start

当在命令行登录mysql的时候,由于二进制版本发布环境的不同,在almalinux9/rhel9环境下,可能会出现依赖库文件问题,下面是错误信息:

[root@zabbixserver mysql]# /usr/local/mysql/bin/mysql -uroot -p
bin/mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

这就是二进制文件编译环境不同导致的,解决方法如下:

[root@zabbixserver mysql]# ll /usr/lib64/libtinfo.so.6
lrwxrwxrwx. 1 root root 15  2月 10  2022 /usr/lib64/libtinfo.so.6 -> libtinfo.so.6.2
[root@zabbixserver mysql]# ln -s /usr/lib64/libtinfo.so.6.2  /usr/lib64/libtinfo.so.5
[root@zabbixserver mysql]# ll /usr/lib64/libtinfo.so.5
lrwxrwxrwx 1 root root 26  3月 14 15:02 /usr/lib64/libtinfo.so.5 -> /usr/lib64/libtinfo.so.6.2

做完软连接之后,就可以顺利登陆mysql命令行了。

Mysql启动成功后,需要重置root密码,临时密码在上面定义的mysql日志文件/usr/local/mysql/logs/mysqld.log中可以查到。登录mysql命令行,并重置密码,执行如下SQL命令:

[root@zabbixserver mysql]#  /usr/local/mysql/bin/mysql -uroot -p
Enter password:  #输入临时密码
mysql> alter user 'root'@'localhost' identified by 'abc123456';
mysql>  quit

至此,MySQL部署完成。

2、安装zabbix监控平台

首先,下载zabbix的安装源,执行如下命令:

[root@zabbixserver ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
[root@zabbixserver ~]# dnf clean all

接着开始安装Zabbix server,Web前端,agent

[root@zabbixserver ~]# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

然后,创建初始数据库,在数据库主机上运行以下代码:

[root@zabbixserver mysql]#  /usr/local/mysql/bin/mysql -uroot -p
password
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'zabbix123';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

导入初始架构和数据,系统将提示输入zabbix用户的密码:

[root@zabbixserver mysql]#  zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | /usr/local/mysql/bin/mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

zabbix监控平台安装完成。

4、zabbix基础配置参数说明

首先是zabbix-server的基础配置,需要修改/etc/zabbix/zabbix_server.conf配置文件中的两个参数,信息如下:

DBPassword=zabbix123
DBSocket=/tmp/mysql.sock

然后是在zabbix web配置中,编辑配置文件/etc/nginx/conf.d/zabbix.conf,去掉下面两行注释:

#listen 8080;
#server_name example.com;

至此,zabbix安装和基础配置完成。

zabbix-server的配置文件中,除了上面给出的两个配置参数,还需要关注如下几个配置项:

ListenPort=10051
	LogFile=/tmp/zabbix_server.log
	DBHost=localhost
	DBName=zabbix 
	DBUser=zabbix 
	DBPassword=zabbix 
	ListenIP=0.0.0.0
	StartPollers=5
	StartTrappers=10
	StartDiscoverers=10
	AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
  • ListenPort是zabbix server默认监听端口,LogFile用来指定zabbix server日志输出路径,DBHost为数据库的地址,如果数据库在本机,可不做修改,DBName为数据库名称,DBUser为连接数据库的用户名,DBPassword为连接数据量对应的用户密码。ListenIP为zabbix server监听的IP地址,也就是zabbix server启动的监听端口对哪些ip开放,Agentd为主动模式时,这个值建议设置为0.0.0.0。
  • StartPollers 用于设置zabbix serve服务启动时启动Pollers(主动收集数据进程)的数量,数量越多,则服务端吞吐能力越强,同时对系统资源消耗越大。
  • StartTrappers用于设置zabbix server服务启动时启动Trappers(负责处理Agentd推送过来的数据的进程)的数量。Agentd为主动模式时,zabbix server需要设置这个值大一些。
  • StartDiscoverers用于设置zabbix server服务启动时启动Discoverers进程的数量,如果zabbix监控报Discoverers进程忙时,需要提高该值。
  • AlertScriptsPath用来配置zabbix server运行脚本存放目录,一些供zabbix server使用的脚本,都可以放在这里。

所有配置完成后,就可以启动Zabbix server和agent进程了,并为它们设置开机自启:

[root@zabbixserver mysql]# systemctl restart zabbix-server zabbix-agent nginx php-fpm
[root@zabbixserver mysql]# systemctl enable zabbix-server zabbix-agent nginx php-fpm

最后,访问http://ip:8080端口,即可访问zabbix的web界面。

安装完成后,如下如所示:

如果在出图界面,无法显示汉字,如下图所示:

点击主机右侧的grapha查看图示化界面

那么还需要修正字体,zabbix出图界面对应的字体文件在/usr/share/zabbix/assets/fonts目录下,默认是graphfont.ttf文件,但此文件在almalinux9下是不存在的,所以出图界面中文无法显示,解决的方法是:下载需要的中文字体文件,然后拷贝到/usr/share/zabbix/assets/fonts目录下,重命名为graphfont.ttf即可。

6.2、通过docker安装部署zabbix监控平台

根据学习方式和运维经验,大家用docker容器来安装zabbix的时候,推荐zabbix-server、zabbix-web使用容器来安装,而zabbix agent/agent2通过rpm包方式安装。

采用docker安装zabbix,需要下载多个镜像,分别是:Mysql镜像、zabbix-server镜像、Zabbix web镜像、zabbix-java-gateway镜像以及zabbix-agent镜像。这些镜像都可以从docker官方镜像站https://hub.docker.com/下载,分别对应的镜像名字为: zabbix-server镜像:zabbix-server-mysql 地址:https://hub.docker.com/r/zabbix/zabbix-server-mysql Zabbix web镜像:zabbix-web-nginx-mysql 地址:https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql Zabbix agent镜像: zabbix-agent 地址:https://hub.docker.com/r/zabbix/zabbix-agent Zabbix agent2镜像: zabbix-agent2 地址: https://hub.docker.com/r/zabbix/zabbix-agent2 MySQL镜像: mysql 地址: https://hub.docker.com/_/mysql zabbix-java-gateway 地址:https://hub.docker.com/r/zabbix/zabbix-java-gateway

1、安装docker引擎

要使用docker,必须先安装docker引擎,步骤如下:

[root@master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master ~]# yum makecache fast
[root@master ~]# yum install docker-ce -y
[root@master ~]# systemctl restart docker
[root@master  ~]# systemctl enable docker
[root@master  ~]# docker version

2、下载镜像

拉去镜像之前先替换国内镜像源

cat > /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.m.daocloud.io",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
EOF

重载配置

systemctl daemon-reload

查看是否生效

docker info | grep -A3 Mirrors

(1)、拉取mysql镜像

这里使用8.0版本,在linux终端拉取8.0.32镜像

docker pull mysql:8.0.32
(2)、下载zabbix-server镜像

zabbix-server镜像分两种,支持MySQL数据库zabbix-server-mysql,支持支持PostgreSQL数据库zabbix/zabbix-server-pgsql。下面安装的是支持MySQL数据库的Server镜像。

打开zabbix-server-mysql的docker hub,大家会发现,zabbix-server-mysql有多个版本,可根据自己的环境选择合适版本。选择ubuntu版本和centos版本均可,zabbix版本我选择最新版6.4.0,所以下载镜像方式如下:

docker pull zabbix/zabbix-server-mysql:centos-6.4.0
(3)、下载Zabbix web镜像

这里使用的是基于Nginx web服务器及支持MySQL数据库的Zabbix web接口zabbix/zabbix-web-nginx-mysql。这里我用的是centos-6.4.0版本:

docker pull zabbix/zabbix-web-nginx-mysql:centos-6.4.0
(4)、下载zabbix-java-gateway镜像

Zabbix本身不支持直接监控Java,而是使用zabbix-java-gateway监控jvm/tomcat性能。这里我们使用centos-6.4.0版本,在linux终端执行如下命令:

docker pull zabbix/zabbix-java-gateway:centos-6.4.0
3、运行镜像
(1)、创建docker网络

启动zabbix等镜像之前,需要先创建一个新的Docker网络。需要将后面的zabbix-server、mysql、web等容器都加入到此网络中,方便互相访问。在终端使用下面命令创建。

docker network create -d bridge zabbix_net

创建后,可以查看是否创建成功。

docker network ls

(2)、 运行mysql镜像,创建mysql容器
docker run -itd -p 3306:3306 --name zabbix-mysql --network zabbix_net --restart unless-stopped -v /etc/localtime:/etc/localtime -v /dockerdata/zabbix/db:/var/lib/mysql -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" mysql:8.0.32 --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_bin
(3)、运行zabbix-java-gateway镜像

创建zabbix-java-gateway容器,执行如下命令:

docker run -v /etc/localtime:/etc/localtime -dit --restart=always --name=zabbix-java-gateway --network zabbix_net zabbix/zabbix-java-gateway:centos-6.4.0
(4)、运行zabbix-server-mysql镜像

创建zabbix-server-mysql容器之前,首先创建数据卷zabbix-server-vol,通过命令

docker volume create zabbix-server-vol

接着,启动zabbix-server-mysql容器。

docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/etc/zabbix -v /etc/localtime:/etc/localtime -v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts --name=zabbix-server-mysql --restart=always --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" -e ZBX_JAVAGATEWAY="zabbix-java-gateway"  -e ZBX_JAVAGATEWAY_ENABLE="true" -e  ZBX_JAVAGATEWAYPORT=10052 zabbix/zabbix-server-mysql:centos-6.4.0
(5)、 运行zabbix-web-nginx-mysql镜像

创建zabbix-web-nginx-mysql容器,可执行如下命令:

docker run -dit -p 8080:8080 -v /etc/localtime:/etc/localtime -v /dockerdata/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf --name zabbix-web-nginx-mysql --restart=always --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" -e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql:centos-6.4.0
(6)、运行zabbix-agent镜像

本地agent的安装:

docker run -dit  --name zabbix-agent -p 10050:10050 --network zabbix_net -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" -e ZBX_SERVER_PORT=10051 zabbix/zabbix-agent:centos-6.4.0

zabbix-agent2:

docker run -dit  --name zabbix-agent2 -p 10050:10050 -v /var/run/docker.sock:/var/run/docker.sock --network zabbix_net -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" -e ZBX_SERVER_PORT=10051 --privileged zabbix/zabbix-agent2:latest
4、通过docker-compose一键安装zabbix

docker-compose是用来做docker的多容器控制,有了docker-compose,我们可以把所有繁琐的docker操作全都一条命令,自动化的完成。

要使用docker-compose,需要安装一个工具docker-compose,可直接从官方:https://github.com/docker/compose/releases 处下载编译好的二进制文件即可。

[root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose

一键安装zabbix的docker-compose.yml文件内容如下:

[root@zabbixserver zabbix]# more docker-compose.yml 
version: '3'
services:
  zabbix-web-nginx-mysql:
    image: zabbix/zabbix-web-nginx-mysql:centos-6.4.0
    restart: always
    environment:
      - DB_SERVER_HOST=zabbix-mysql
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix123
      - MYSQL_ROOT_PASSWORD=root123
      - ZBX_SERVER_HOST=zabbix-server-mysql
    ports:
      - 8080:8080
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
    networks:
      - zabbix_net
    depends_on:
      - zabbix-mysql
      - zabbix-server-mysql
  zabbix-mysql:
    image: mysql:8.0.32
    restart: always
    environment:
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix123
      - MYSQL_ROOT_PASSWORD=root123
    command:
      - mysqld
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8
      - --collation-server=utf8_bin
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/zabbix/db:/var/lib/mysql
    networks:
      - zabbix_net
  zabbix-java-gateway:
    image: zabbix/zabbix-java-gateway:centos-6.4.0
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime
    networks:
      - zabbix_net
  zabbix-server-mysql:
    image: zabbix/zabbix-server-mysql:centos-6.4.0
    restart: always
    volumes:
      - zabbix-server-vol:/etc/zabbix
      - /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
      - /etc/localtime:/etc/localtime
    ports:
      - 10051:10051
    environment:
      - DB_SERVER_HOST=zabbix-mysql
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix123
      - MYSQL_ROOT_PASSWORD=root123
      - ZBX_JAVAGATEWAY=zabbix-java-gateway
      - ZBX_JAVAGATEWAY_ENABLE=true
      - ZBX_JAVAGATEWAYPORT=10052
      - ZBX_STARTPOLLERS=15
      - ZBX_STARTTRAPPERS=10
      - ZBX_STARTDISCOVERERS=5
    depends_on:
      - zabbix-mysql
    networks:
      - zabbix_net
  zabbix-agent:
    image: zabbix/zabbix-agent:centos-6.4.0
    restart: always
    ports:
      - 10050:10050
    environment:
      - ZBX_HOSTNAME=Zabbix server
      - ZBX_SERVER_HOST=zabbix-server-mysql
      - ZBX_SERVER_PORT=10051
    networks:
      - zabbix_net

networks:
  zabbix_net:
    driver: bridge

volumes:
  zabbix-server-vol:

docker-compose.yml文件编写完成后,在docker-compose.yml所在目录下,运行下面命令:

docker-compose up  -d

就可以自动完成zabbix的部署了。

docker-compose.yml还依赖一些脚本,字体文件等,这些在课件资源中提供。请同学们注意下载。

6.3、zabbix_agent的安装与配置

1、非docker方式安装zabbix_agent

远程被监控主机上zabbix agent的安装,不建议通过容器方式进行安装,建议采用普通的方式安装zabbix-agent,这里我采用rpm包方式安装,可从http://repo.zabbix.com/zabbix/ 下载zabbix的agent端rpm包,版本与zabbix server端保持一致,安装如下:

[root@localhost app]#wget \
http://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-agent-6.4.0-release1.el9.x86_64.rpm
[root@localhost app]# rpm -ivh zabbix-agent-6.4.0-release1.el9.x86_64.rpm

安装完成后,zabbix agent端已经安装完成了,zabbix agent端的配置目录默认位于/etc/zabbix下,可在此目录进行配置文件的修改。

2、zabbix_agent端的配置

zabbix agent端的配置文件是/etc/zabbix/zabbix_agent.conf,需要修改的内容为如下:

LogFile=/var/log/zabbix/zabbix_agentd.log	#zabbix agentd日志文件路径
Server=192.168.38.146	#指定zabbix server端IP地址
StartAgents=3		#指定启动agentd进程的数量,默认是3个,设置为0,表示关闭agentd的被动模式(zabbix server主动来agent拉取数据)。
ServerActive=192.168.28.146	#启用agentd的主动模式(zabbix agent主动推送数据到zabbix server),启动主动模式后,agentd将主动将收集到的数据发送到zabbix server端,ServerActive后面指定的ip就是zabbix server端IP。
Hostname=	#需要监控服务器的主机名或者IP地址,此选择的设置一定要和zabbix web端主机配置中对应的主机名一致。
Include=/etc/zabbix/zabbix_agentd.d/	 #相关配置都可以放到此目录下,自动生效。
UnsafeUserParameters=1		#启用agent端自定义item功能,设置此参数为1后,就可以使用UserParameter指令了。UserParameter用于自定义监控项。

所有配置修改完成后,就可以启动zabbix_agent了:

[root@slave001 zabbix]# systemctl  start  zabbix-agent

6.4、登录Zabbix web GUI

Zabbix web是php代码编写的,因此,直接访问web地址即可:http://ip地址:8080,即可访问web页面。

登录zabbix web后,还需要做一些简单配置,如下图所示:

这里设置简体中文,接着下一步:

确认每个安装要求都是OK状态,点击下一步:

这里需要特别注意,数据库主机,默认是localhost,会使用本地sock方式和zabbix进行通信,此种方式安全性较低,同时,也仅仅是数据库和zabbix部署在一起才可以使用。推荐将数据库主机修改为数据库服务器的IP地址,这里因为数据库和zabbix部署在一起,所以我就填写127.0.0.1,这种是基于TCP的通信方式,可实现传输加密,比较安全,推荐这种方式。

其它配置,数据库名称、用户名、密码根据情况填写即可。配置完成,点击下一步:

这里主要是选择时区,中国选择亚洲上海即可,zabbix主机名称,随便填写一个即可,主题根据喜好选择,然后点击下一步:

这是安装前汇总信息,确认没错,点击下一步:

到这里zabbix web就配置完成了,注意zabbix web的配置文件地址,默认在服务器上/etc/zabbix/web/zabbix.conf.php路径下,里面保存了刚才设置的配置信息。最后,就进入登录界面了,如下图所示:

默认的zabbix平台登录用户名为Admin,密码为zabbix。注意是Admin,而不是admin。

6.5、测试zabbix server监控

如何知道zabbix server监控已经生效呢,可进入zabbix server容器,然后执行zabbix_get命令进行测试,登录zabbix server容器,执行如下命令即可进行测试:

其中:

  • -s是指定zabbix agent端的IP地址。
  • -p是指定zabbix agent端的监听端口。
  • -k是监控项,即item。

如果有输出结果,表明zabbix server可以从zabbix agent获取数据,配置成功。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐