【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版

【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版

背景

本项目原始为客户甲方项目,但是预算太有限40000元但是已经签约开发了,导致优雅草不得不继续完成开发来建立自营版本,本身优雅草在服务器众多的情况下也需要一个管理软件,其次优雅草后续是有可能自己建服务器并且自主维护的,因此本项目是有必要的

基于开源产品介绍

Zabbix 是一个开源的企业级分布式监控解决方案,以下是其主要的技术栈构成:

编程语言

  • C 语言:Zabbix 的核心程序主要使用 C 语言编写。C 语言具有高效、快速的特点,能够保证 Zabbix 在处理大量监控数据和高并发请求时具备良好的性能和稳定性,确保监控系统可以实时、准确地收集和处理各种监控指标。
  • PHP:Zabbix 的 Web 前端部分采用 PHP 语言开发。PHP 是一种广泛应用于 Web 开发的脚本语言,具有简单易学、开发效率高的优点,能方便地与数据库进行交互,实现监控数据的可视化展示和用户交互界面,方便用户进行配置管理、查看监控报表等操作。

数据库

  • MySQL:MySQL 是 Zabbix 最常用的数据库,它是一种开源的关系型数据库管理系统,具有高性能、可靠性强、易于管理等特点。Zabbix 使用 MySQL 来存储监控数据、配置信息、历史数据等,能够满足大规模监控数据的存储和查询需求。
  • PostgreSQL:PostgreSQL 也是 Zabbix 支持的数据库之一,它是一个功能强大的开源关系型数据库,具有高度的可扩展性和数据完整性,提供了丰富的数据类型和高级功能,适合处理复杂的查询和事务,在一些对数据安全性和完整性要求较高的场景中应用较多。

通信协议

  • SNMP:简单网络管理协议(SNMP)是 Zabbix 常用的监控协议之一,用于监控网络设备(如路由器、交换机等)的状态和性能指标。通过 SNMP,Zabbix 可以获取设备的接口流量、CPU 利用率、内存使用情况等信息。
  • IPMI:智能平台管理接口(IPMI)协议允许 Zabbix 监控服务器硬件的健康状态,如温度、电压、风扇转速等。即使服务器操作系统出现故障,也能通过 IPMI 获取硬件层面的信息,实现对服务器硬件的实时监控和预警。
  • JMX:Java 管理扩展(JMX)协议用于监控 Java 应用程序。Zabbix 可以通过 JMX 获取 Java 应用的各种性能指标,如堆内存使用情况、线程数量、垃圾回收统计信息等,帮助管理员及时发现和解决 Java 应用的性能问题。

操作系统

  • Linux:Zabbix 服务器和代理通常部署在 Linux 操作系统上,如 CentOS、Ubuntu 等。Linux 具有开源、稳定、安全等优点,并且提供了丰富的命令行工具和系统管理功能,便于进行 Zabbix 的安装、配置和维护。
  • Windows:虽然 Zabbix 主要在 Linux 环境下运行,但也支持在 Windows 操作系统上部署代理,用于监控 Windows 服务器和应用程序。用户可以在 Windows 系统上安装 Zabbix 代理程序,将监控数据发送到 Zabbix 服务器进行集中处理。

项目实战

环境要求

硬件环境

  • 服务器
  • CPU:对于小型部署环境,例如监控几十到几百台设备,建议至少配备 2 核 CPU。如果是中型规模,监控数百到数千台设备,4 核至 8 核的 CPU 较为合适。大型企业级应用,监控数千台以上设备时,则可能需要 8 核及以上的 CPU,以确保 Zabbix 能够及时处理大量的监控数据和并发请求。
  • 内存:小型部署一般需要 4GB 以上内存。中型部署建议 8GB - 16GB 内存。大型部署可能需要 16GB 甚至更高的内存,以保障系统的稳定运行,避免因内存不足导致性能下降或数据丢失。
  • 存储:存储容量取决于监控数据的保留时间和采集频率等因素。一般来说,初始安装至少需要 10GB 的可用空间。若要长期保留数据,如一年以上,且监控数据量较大时,可能需要数百 GB 甚至数 TB 的存储空间。
  • 网络
  • 带宽:Zabbix 服务器与被监控设备之间需要稳定的网络连接,带宽需求取决于监控数据的传输量。对于一般的监控场景,100Mbps 的网络带宽通常可以满足需求,但如果涉及大量图像、视频等数据的传输,或者监控设备数量众多、数据采集频率高,则可能需要 1000Mbps 及以上的带宽。
  • 网络延迟:为了保证监控数据的及时传输和处理,网络延迟应尽量低,一般建议控制在 50ms 以内,以确保 Zabbix 能够实时反映被监控设备的状态变化。

软件环境

  • 操作系统
  • Linux:Zabbix 对多种 Linux 发行版都有很好的支持,如 CentOS、Ubuntu、Debian 等。以 CentOS 为例,CentOS 7 及以上版本是较为推荐的,因为它们具有更稳定的内核和更丰富的软件包管理功能。
  • UNIX:包括 FreeBSD、OpenBSD 等 UNIX 系统也可作为 Zabbix 的运行平台,适用于对系统安全性和稳定性有较高要求的用户。
  • 数据库
  • MySQL:MySQL 是 Zabbix 常用的数据库,5.7 版本及以上能够很好地与 Zabbix 配合,提供高效的数据存储和查询功能。
  • PostgreSQL:也是 Zabbix 支持的数据库之一,9.6 版本及以上在处理大规模数据和复杂查询时表现出色,适合对数据一致性和事务处理要求较高的场景。
  • Web 服务器
  • Apache:Apache 是一款广泛使用的 Web 服务器,2.4 版本及以上与 Zabbix 兼容性良好,能够稳定地提供 Web 服务,支持 Zabbix 的 Web 界面访问。
  • Nginx:Nginx 以其高性能和低资源占用著称,1.12 版本及以上常被用于部署 Zabbix 的 Web 界面,特别是在高并发访问的情况下,能有效提高系统的响应速度。
  • 其他软件
  • PHP:Zabbix 的 Web 界面基于 PHP 开发,需要 PHP 7.2 及以上版本,并需要安装相关的扩展,如php-mysqlphp-gdphp-xml等,以确保 Zabbix Web 功能的正常运行。

搭建实战步骤

我们选择腾讯云,以腾讯云为例,其他云计算服务商同理,我们选定 docker ce 镜像,省去了很多事情,docker ce 开始我都不明白什么意思,后来看了才知道就是docker镜像,默认搭配Linux centos -_-||!!!

注意看介绍,简直一天一个新概念,我们一定要选择带docker的省去了安装docker,自从RAV容器概念开始市场化,云计算越来越强了

选择ssh 创建密码, 所有连接方式只有ssh 最安全,并且不被保留,遗失找不回,谨慎保管,

对应地区创建,创建好,登录,默认用户名root 这些就不用讲了, 用ssh终端打开 并且连接

我这里用的xterminal

安装 Zabbix

  1. 创建一个用于存放 Zabbix 配置文件和数据的目录,例如:sudo mkdir -p /opt/zabbix/data /opt/zabbix/config
  2. 更改目录权限,确保 Docker 容器可以访问这些目录,执行命令:sudo chmod -R 777 /opt/zabbix
  3. 拉取 Zabbix 镜像,可拉取官方镜像或根据需求选择合适的镜像源,执行命令:docker pull zabbix/zabbix-server-mysql:latest docker pull zabbix/zabbix-web-nginx-mysql:latest
  4. 拉取 MySQL 镜像,执行命令:docker pull mysql:8.0
  5. 创建并启动 MySQL 容器,执行命令:
docker run -d \
    --name zabbix-mysql \
    -e MYSQL_DATABASE=zabbix \
    -e MYSQL_USER=zabbix \
    -e MYSQL_PASSWORD=zabbix_password \
    -e MYSQL_ROOT_PASSWORD=root_password \
    -v /opt/zabbix/data/mysql:/var/lib/mysql \
    mysql:8.0

将zabbix_password和root_password替换为实际的密码。

好方便,都是批量按顺序来执行命令,现在的技术越来越方便了,我这里本着测试就暂时用测试的即可。

完成准备工作,创建并启动 Zabbix Server 容器,执行命令:

docker run -d \
    --name zabbix-server \
    --link zabbix-mysql:mysql \
    -e DB_SERVER_HOST=mysql \
    -e MYSQL_DATABASE=zabbix \
    -e MYSQL_USER=zabbix \
    -e MYSQL_PASSWORD=zabbix_password \
    -v /opt/zabbix/data:/var/lib/zabbix \
    -v /opt/zabbix/config:/etc/zabbix \
    -p 10051:10051 \
    zabbix/zabbix-server-mysql:latest

继续成功,

记得放行10051默认端口,这是zabbix默认端口

创建并启动 Zabbix Web 容器,执行命令:

docker run -d \
    --name zabbix-web \
    --link zabbix-server:zabbix-server \
    --link zabbix-mysql:mysql \
    -e ZBX_SERVER_HOST=zabbix-server \
    -e DB_SERVER_HOST=mysql \
    -e MYSQL_DATABASE=zabbix \
    -e MYSQL_USER=zabbix \
    -e MYSQL_PASSWORD=zabbix_password \
    -p 80:80 \
    zabbix/zabbix-web-nginx-mysql:latest

再执行:

docker run -d \
    --name zabbix-server \
    -e DB_SERVER_HOST=<mysql_host> \
    -e MYSQL_DATABASE=<db_name> \
    -e MYSQL_USER=<db_user> \
    -e MYSQL_PASSWORD=<db_password> \
    -e ZBX_SERVER_HOST=<zabbix_server_host> \
    -p 10051:10051 \
    --link <mysql_container_name>:mysql \
    zabbix/zabbix-server-mysql:latest

以上值要替换为真实值。

  • -d:表示以守护进程(detached)模式在后台运行容器。
  • --name zabbix-server:为容器指定一个名称为zabbix-server
  • -e:用于设置环境变量,这里分别设置了连接 MySQL 数据库所需的主机地址、数据库名称、用户名、密码,以及 Zabbix Server 主机地址等信息。<mysql_host>应替换为 MySQL 服务器的实际地址,可以是容器名称、容器 ID 或 IP 地址;<db_name><db_user><db_password>分别替换为实际的数据库名称、用户名和密码;<zabbix_server_host>通常可以设置为localhost或 Zabbix Server 所在主机的 IP 地址。
  • -p 10051:10051:将容器内的 Zabbix Server 服务端口 10051 映射到宿主机的 10051 端口,这样外部可以通过宿主机的 10051 端口访问 Zabbix Server 服务。
  • --link <mysql_container_name>:mysql:将 Zabbix Server 容器与 MySQL 容器建立链接,<mysql_container_name>应替换为实际的 MySQL 容器名称。

执行后报错,我们发现一个问题,母亲链接方式 是—link 我们要改成自定义网络

—link 选项在较新的 Docker 版本中已不推荐使用,它逐渐被用户自定义网络所取代。使用自定义网络不仅更加灵活,而且网络配置更易于管理和维护。

以下给出更加严格的安装部署方式,并且我已经把示范中的数据替换为我自己确定要创建的数据。

1. 创建自定义网络

首先,创建一个自定义的 Docker 网络,用于 Zabbix 各组件之间的通信。

docker network create zabbix-net

2. 启动 MySQL 容器

创建并启动 MySQL 容器,设置数据库相关信息。

docker run -d \
        --name zabbix-mysql \
        --network zabbix-net \
        -e MYSQL_DATABASE=zabbix \
        -e MYSQL_USER=network \
        -e MYSQL_PASSWORD=network446657 \
        -e MYSQL_ROOT_PASSWORD=network446657 \
        -v /data/mysql:/var/lib/mysql \
        -p 3306:3306 \
        mysql:8.0

在上述命令中:

  • -d:表示容器在后台以守护进程方式运行。
  • --name zabbix-mysql:指定容器名称为zabbix-mysql
  • --network zabbix-net:将容器连接到名为zabbix-net的自定义网络。
  • -e开头的参数设置了 MySQL 的环境变量,包括数据库名、普通用户及密码、root 用户密码。
  • -v /data/mysql:/var/lib/mysql:将宿主机的/data/mysql目录挂载到容器内的/var/lib/mysql目录,用于数据持久化。
  • -p 3306:3306:将容器的 3306 端口映射到宿主机的 3306 端口。

3. 启动 Zabbix Server 容器

docker run -d \
        --name zabbix-server \
        --network zabbix-net \
        -e DB_SERVER_HOST=zabbix-mysql \
        -e MYSQL_DATABASE=zabbix \
        -e MYSQL_USER=network \
        -e MYSQL_PASSWORD=network446657 \
        -e ZBX_SERVER_HOST=network.youyacao.com \
        -v /data/zabbix/server:/var/lib/zabbix \
        -p 10051:10051 \
        zabbix/zabbix-server-mysql:latest

此命令中:

  • 各项参数含义与 MySQL 容器类似,--network zabbix-net连接到自定义网络。
  • -e ZBX_SERVER_HOST=network.youyacao.com设置 Zabbix Server 的主机地址为指定网址。

4. 启动 Zabbix Web 容器

docker run -d \
        --name zabbix-web \
        --network zabbix-net \
        -e ZBX_SERVER_HOST=zabbix-server \
        -e DB_SERVER_HOST=zabbix-mysql \
        -e MYSQL_DATABASE=zabbix \
        -e MYSQL_USER=network \
        -e MYSQL_PASSWORD=network446657 \
        -p 80:8080 \
        zabbix/zabbix-web-nginx-mysql:latest

该命令启动 Zabbix Web 容器:

  • --network zabbix-net连接到自定义网络。
  • -e参数设置了 Zabbix Web 连接 Zabbix Server 和 MySQL 数据库的相关信息。
  • -p 80:8080将容器内的 8080 端口映射到宿主机的 80 端口,以便通过network.youyacao.com访问 Zabbix Web 界面(需确保宿主机 80 端口未被占用且域名已正确解析到宿主机 IP)。

5. 配置域名解析

确保network.youyacao.com域名正确解析到运行 Zabbix 的服务器 IP 地址。这通常需要在域名注册商的 DNS 管理界面进行设置,添加一条 A 记录,将network.youyacao.com指向服务器的公网 IP 地址。

6. 验证安装

使用docker ps命令查看所有容器是否正常运行:

docker ps

如果所有容器状态均为Up,表示安装成功。通过浏览器访问http://network.youyacao.com,应该能看到 Zabbix 的登录界面,默认用户名Admin,密码zabbix。登录后即可开始使用 Zabbix 进行监控配置。

查看状态没有问题,

能访问,但是数据库有点问题,稍微调整和检查下防火墙之类的东西,不过以上关于docker安装到此结束。

以上内容是用docker容器安装方式的,但是我们要做的不是用docker,我要传统安装方式,

docker优缺点:

优点:适合面向使用者,简单方便,操作
缺点:不利于二次开发,维护,最重要是开发和升级,docker镜像是一键式交付,不同的版本做不同的镜像,因此是面向使用者。

下一篇,篇幅【02】我们将采取传统安装方式。

目录
相关文章
|
9月前
|
Dubbo 前端开发 Java
让你在组建企业级项目时手到擒来——浅谈各类常用工具和框架概述
让你在组建企业级项目时手到擒来——浅谈各类常用工具和框架概述
|
30天前
|
监控 安全 算法
深度剖析核心科技:Go 语言赋能局域网管理监控软件进阶之旅
在局域网管理监控中,跳表作为一种高效的数据结构,能显著提升流量索引和查询效率。基于Go语言的跳表实现,通过随机化索引层生成、插入和搜索功能,在高并发场景下展现卓越性能。跳表将查询时间复杂度优化至O(log n),助力实时监控异常流量,保障网络安全与稳定。示例代码展示了其在实际应用中的精妙之处。
41 9
|
9月前
|
数据采集 监控 数据管理
《数据治理简易速速上手小册》第2章 数据治理框架的建立(2024 最新版)
《数据治理简易速速上手小册》第2章 数据治理框架的建立(2024 最新版)
160 0
直播网站源码社区功能部署开发:连接世界的互动形式!
直播网站源码社区功能如何去实现from flask import Flask, request app = Flask(__name__) posts = [] @app.route('/post', methods=['POST'])
直播网站源码社区功能部署开发:连接世界的互动形式!
|
Oracle Java 关系型数据库
从0开始搭建一台服务器开发环境(上)
这套文章将教您如何一步一步搭建一台服务器,通过这套文章你将搭建的服务,以及配置如下:
998 1
从0开始搭建一台服务器开发环境(上)
|
NoSQL 网络协议 Java
从0开始搭建一台服务器开发环境(中)
4,安装maven 5,安装tomcat 6,安装redis 8,安装mysql 9,安装svn
214 0
从0开始搭建一台服务器开发环境(中)
|
安全 关系型数据库 MySQL
企业Web服务器现场抓鸡案例分享| 学习笔记
快速学习企业Web服务器现场抓鸡案例分享。
企业Web服务器现场抓鸡案例分享| 学习笔记
|
jenkins 应用服务中间件 持续交付
从0开始搭建一台服务器开发环境(下)
10,安装NgInx 11,安装jenkins 12,开放服务器指定端口 13,其他注意细节,避免采坑
108 0
|
数据采集 负载均衡 监控
陪玩系统源码的可观测体系,搭建注意事项有哪些?
陪玩系统源码的可观测体系,搭建注意事项有哪些?