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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【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】我们将采取传统安装方式。

目录
相关文章
|
1月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
88 20
|
1月前
|
网络协议 算法 安全
Go语言的网络编程与TCP_UDP
Go语言由Google开发,旨在简单、高效和可扩展。本文深入探讨Go语言的网络编程,涵盖TCP/UDP的基本概念、核心算法(如滑动窗口、流量控制等)、最佳实践及应用场景。通过代码示例展示了TCP和UDP的实现,并讨论了其在HTTP、DNS等协议中的应用。最后,总结了Go语言网络编程的未来发展趋势与挑战,推荐了相关工具和资源。
|
4月前
|
存储 消息中间件 缓存
构建互联网高性能WEB系统经验总结
如何构建一个优秀的高性能、高可靠的应用系统对每一个开发者至关重要
49 2
|
3月前
|
Go 数据安全/隐私保护 UED
优化Go语言中的网络连接:设置代理超时参数
优化Go语言中的网络连接:设置代理超时参数
|
14天前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
67 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
22天前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
5月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
324 3
|
4月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
132 63
|
4月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
187 62
|
3月前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南

热门文章

最新文章

推荐镜像

更多