『亚马逊云科技产品测评』活动征文|借助AWS EC2搭建服务器群组运维系统Zabbix+spug
授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。
本文基于以下软硬件工具:
+ aws ec2
+ frp-0.52.3
+ zabbix 6.0 LTS
+ spug-3.3
+ win10笔记本
0. 环境
- 虚拟机ubuntu22(server),192.168.8.162
- 虚拟机ubuntu22(agent),192.168.8.173
- 笔记本win10,192.168.8.132
- aws ec2,54.195.224.245
目录
0. 环境
1. 虚拟机ubuntu22安装zabbix
1.1 安装 Zabbix 仓库
1.2 安装 Zabbix server, frontend, agent
1.3 创建 初始 数据库
1.4 Configure the database for Zabbix server
1.5 Configure PHP for Zabbix frontend
1.6 Start Zabbix server and agent processes
1.7 Open Zabbix UI web page
1.8 frp
1.8.1 下载可执行文件
1.8.2 解压
1.8.3 切换目录
1.8.4 修改配置
1.8.5 运行
2. aws ec2准备
2.1 控制台
2.2 连接到实例
2.3 部署frp
2.3.1 下载可执行文件
2.3.2 解压
2.3.3 切换目录
2.3.4 修改配置
2.3.5 服务器开启端口
2.3.6 测试web
2.3.7 测试zabbix server部署情况
3. 添加监控设备
3.1 win10
3.1.1 下载
3.2 修改配置
3.3 启动 zabbix agent
3.4 web添加主机
3.2 ubuntu22
3.2.1 切换用户
3.2.2 Install and configure Zabbix for your platform
3.2.4 重启 zabbix服务
3.2.5 web添加主机
3.5 效果
小结
4. 服务器部署spug
4.1 安装docker
4.2 创建docker-compose.yml
4.3 启动容器
4.4 初始化
4.6 通过aws访问本主机
4.6.1 开通端口
4.6.2 frp客户端添加端口
4.6.3 测试
1. 虚拟机ubuntu22安装zabbix
切换账号
sudo -s
1.1 安装 Zabbix 仓库
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
apt update
1.2 安装 Zabbix server, frontend, agent
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
1.3 创建 初始 数据库
mysql -uroot -p
问题:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
apt install mysql-server
mysql默认输入root密码是password。
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
password
mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
1.4 Configure the database for Zabbix server
Edit file /etc/zabbix/zabbix_server.conf
/etc/zabbix/zabbix_server.conf
添加:
DBPassword=password
1.5 Configure PHP for Zabbix frontend
Edit file /etc/zabbix/nginx.conf uncomment and set 'listen' and 'server_name' directives.
vim /etc/zabbix/nginx.conf
取消注释这两行:
# listen 8080;
# server_name example.com;
1.6 Start Zabbix server and agent processes
启动zabbix服务:
systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
1.7 Open Zabbix UI web page
http://192.168.125.146:8080/setup.php
默认语音 配置中文
配置DB 配置数据库密码 password
配置时区 Asia/Shanghai
用户名:Admin
密码:zabbix
1.8 frp
1.8.1 下载可执行文件
当前最新版本是0.52.3
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
1.8.2 解压
tar -zvxf frp_0.52.3_linux_amd64.tar.gz
1.8.3 切换目录
cd frp_0.52.3_linux_amd64
1.8.4 修改配置
vim frpc.ini
修改为以下内容:
serverAddr = "54.195.224.245"
serverPort = 30000auth.method = "token"
auth.token = "520101"[[proxies]]
name = "zabbix_agent"
type = "tcp"
localIP = "127.0.0.1"
localPort = 10050
remotePort = 10050[[proxies]]
name = "zabbix_server"
type = "tcp"
localIP = "127.0.0.1"
localPort = 10051
remotePort = 10051[[proxies]]
name = "zabbix_nginx"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 10052
1.8.5 运行
./frpc -c frpc.toml &
2. aws ec2准备
2.1 控制台
本步骤我们低成本创建服务器。
https://aws.amazon.com/cn/
在控制台主页,地区选择 爱尔兰 eu-west-1
创建服务器
Search栏输入 -> EC2
-> 启动实例 ->
-> Quick Start: Amazon Linux aws,
-> 实例类型:选择符合条件的免费套餐,t2.micro
-> 密钥对:创建密钥对
-> 名称:zzzzzzzzzzzzzzzzzzzz2#,RSA,.pem,然后保存到本地。ssh登录需要用到。
-> 创建实例
得到了服务器IP:54.195.224.245
2.2 连接到实例
用 MobaXterm为例
打开 MobaXterm -> Session -> SSH
-> Remote host: 54.229.195.3
-> 勾选Specify username: ec2-user
-> Avanced SSH settings
-> 勾选 Use private key
2.3 部署frp
2.3.1 下载可执行文件
到
https://github.com/fatedier/frp/releases
下载
当前最新版本是0.52.3
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
2.3.2 解压
tar -zvxf frp_0.52.3_linux_amd64.tar.gz
2.3.3 切换目录
cd frp_0.52.3_linux_amd64
2.3.4 修改配置
vim frps.toml
修改为以下内容:
bindPort = 30000
auth.method = "token"
auth.token = "520101"
webServer.addr = "0.0.0.0"
webServer.port = 30001
webServer.user = "admin"
webServer.password = "jian@123"
运行
./frps -c frps.toml &
2.3.5 服务器开启端口
通过web配置,开启自定义TCP,30000、30001、10050、10051、10052
2.3.6 测试web
浏览器打开 54.195.224.245:30001
2.3.7 测试zabbix server部署情况
浏览器打开 54.195.224.245:10052
登录账号和密码:
Admin
zabbix
3. 添加监控设备
3.1 win10
3.1.1 下载
到
https://www.zabbix.com/download_agents?version=6.4&release=6.4.8&os=Windows&os_version=Any&hardware=amd64&encryption=OpenSSL&packaging=Archive&show_legacy=0
下载
zabbix_agent-6.0.23-windows-amd64-openssl.zip
解压到
zabbix_agent-6.0.23-windows-amd64-openssl
3.2 修改配置
修改agent配置文件
zabbix_agent-6.0.23-windows-amd64-openssl\conf\zabbix_agentd.conf
Server=192.168.8.162
ServerActive=192.168.8.162
Hostname=192.168.8.132
其中Server和ServerActive用aws EC2的公网IP。Hostname用win10的ip。
3.3 启动 zabbix agent
打开命令行
切换目录zabbix_agent-6.0.23-windows-amd64-openssl\bin
然后:
zabbix_agentd.exe -c ..\conf\zabbix_agentd.conf -f
3.4 web添加主机
打开web:http://54.195.224.245:10052
配置 -> 主机 -> 创建主机
-> 主机名称:192.168.8.132
-> 模板: AIX by Zabbix agent
-> 群组: Templates
-> Interfaces: 客户端 192.168.8.132:10050
-> 更新
3.2 ubuntu22
3.2.1 切换用户
sudo -s
3.2.2 Install and configure Zabbix for your platform
a. Install Zabbix repository
# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
# dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
# apt update
b. Install Zabbix agent
# apt install zabbix-agent
3.2.3 修改agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.8.162 #指定zabbix server地 址
ServerActive=192.168.8.162
Hostname=192.168.8.173
3.2.4 重启 zabbix服务
Start Zabbix agent process and make it start at system boot.
# systemctl restart zabbix-agent
# systemctl enable zabbix-agent
3.2.5 web添加主机
打开web:http://54.195.224.245:10052
配置 -> 主机 -> 创建主机
-> 主机名称:192.168.8.173
-> 模板: AIX by Zabbix agent
-> 群组: Templates
-> Interfaces: 客户端 192.168.8.173:10050
-> 更新
3.5 效果
小结
本文借助AWS EC2的公网功能,可以远程检测服务器群组的运行情况。当前zabbix agent的模式是被动模式,需要和server处于同一网段才可以连接成功。主动模式下agent可以主动向server传输被检测服务器的状态,但是本文未实现,暂时先进展到这。另外,除了通过web检测服务器群组,还存在通过web ssh服务器群组的工具,比如spug。
4. 服务器部署spug
在ubuntu22的zabbix server中部署spug,可通过web登录被服务器群组。
4.1 安装docker
$ sudo apt remove docker docker-engine docker
$ sudo apt update
$ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
$ sudo systemctl status docker
$ sudo systemctl restart docker
$ sudo docker run hello-world
4.2 创建docker-compose.yml
cd ~/
mkdir spug && cd spuggedit docker-compose.yml
添加以下内容:
version: "3.3"
services:db:image: mariadb:10.8.2container_name: spug-dbrestart: alwayscommand: --port 3306 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_civolumes:- /data/spug/mysql:/var/lib/mysqlenvironment:- MYSQL_DATABASE=spug- MYSQL_USER=spug- MYSQL_PASSWORD=spug.cc- MYSQL_ROOT_PASSWORD=spug.ccspug:image: openspug/spug-servicecontainer_name: spugprivileged: truerestart: alwaysvolumes:- /data/spug/service:/data/spug- /data/spug/repos:/data/reposports:# 如果80端口被占用可替换为其他端口,例如: - "8000:80"- "18000:80"environment:- MYSQL_DATABASE=spug- MYSQL_USER=spug- MYSQL_PASSWORD=spug.cc- MYSQL_HOST=db- MYSQL_PORT=3306depends_on:- db
4.3 启动容器
sudo docker compose up -d
4.4 初始化
以下操作会创建一个用户名为 admin 密码为 spug.dev 的管理员账户,可自行替换管理员账户/密码。
sudo docker exec spug init_spug admin spug.dev
4.5 访问测试
在浏览器中输入 http://192.168.8.162:18000/host 访问(默认账户密码在第4步初始化时设置)。
admin
spug.dev
参考:https://www.spug.cc/docs/install-docker/
4.6 通过aws访问本主机
4.6.1 开通端口
开通18000
4.6.2 frp客户端添加端口
在前文的基础上添加18000
[[proxies]]
name = "spug"
type = "tcp"
localIP = "127.0.0.1"
localPort = 18000
remotePort = 18000
并重启frpc
4.6.3 测试
相关文章:

『亚马逊云科技产品测评』活动征文|借助AWS EC2搭建服务器群组运维系统Zabbix+spug
授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 本文基于以下软硬件工具: aws ec2 frp-0.52.3 zabbix 6…...
文件转换,简简单单,pdf转word,不要去找收费的了,自己学了之后免费转,之后就复制粘贴就ok了
先上一个链接pdf转word文件转换 接口层 PostMapping("pdfToWord")public String pdfToWord(RequestParam("file") MultipartFile file) throws IOException {String fileName FileExchangeUtil.pdfToWord(file.getInputStream(),file.getName());return…...

Jmeter——循环控制器中实现Counter计数器的次数重置
近期在使用Jmeter编写个辅助测试的脚本,用到了多个Loop Controller和Counter。 当时想的思路就是三个可变的数量值,使用循环实现;但第三个可变值的数量次数,是基于第二次循环中得到的结果才能确认最终次数,每次的结果…...
[创业之路-85]:IT创业成功老板的品质、创业失败老板的特征、成功领导者的品质、失败管理者的特征
目录 前言: 一、创业成功老板的品质 二、创业失败老板的特征 三、成功领导者的品质 四、失败管理者的特征 前言: 大多数创业或职场共事,都是基于某种人际关系或所谓的感情,这是大数的职场众生相,也是人情社会的中…...

警惕.360勒索病毒,您需要知道的预防和恢复方法。
引言: 网络威胁的演变无常,.360勒索病毒作为一种新兴的勒索软件,以其狡猾性备受关注。本文将深入介绍.360勒索病毒的特点,提供解决方案以恢复被其加密的数据,并分享一系列强化网络安全的预防措施。如果您在面对被勒索…...

人力资源小程序
人力资源管理对于企业的运营至关重要,而如今随着科技的发展,制作一个人力资源小程序已经变得非常简单和便捷。在本文中,我们将为您介绍如何通过乔拓云网制作一个人力资源小程序,只需五个简单的步骤。 第一步:注册登录乔…...
【多线程 - 10、线程同步3 ThreadLocal】
一、ThreadLocal 1、介绍 可以实现资源对象的线程隔离;可以实现了线程内的资源共享 如果使用 ThreadLocal 管理变量,则每一个使用该变量的线程都获得该变量的副本, 副本之间相互独立,这样每一个线程都可以随意修改自己的变量副本…...

【Flink 问题集】The generic type parameters of ‘Collector‘ are missing
错误展示: Exception in thread "main" org.apache.flink.api.common.functions.InvalidTypesException: The return type of function main(CollectionDemo.java:33) could not be determined automatically, due to type erasure. You can give type in…...
数据分析—将txt文件转为csv文件;将csv文件转为xls文件
txt文件转为csv文件转化代码: import csv# 输入txt文件路径 txt_file rC:\Users\ZARD\Desktop\daily-min-temperatures.txt# 输出csv文件路径 csv_file rC:\Users\ZARD\Desktop\daily-min-temperatures.csv# 打开txt文件以读取数据 with open(txt_file, r) as tx…...
【算法】二分查找-20231120
这里写目录标题 一、75. 颜色分类二、80. 删除有序数组中的重复项 II三、125. 验证回文串四、189. 轮转数组 一、75. 颜色分类 提示 中等 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻ÿ…...
WPF实现将鼠标悬浮在按钮上时弹出菜单
在WPF 中,要实现当鼠标悬停在按钮上时显示菜单,并能够灵活设置菜单的位置(如按钮的上方或下方),你可以使用 Popup 控件来创建自定义的弹出菜单。以下是如何通过 Popup 控件来实现这种功能的步骤: 1. 在 XA…...
车载以太网-传输层-UDP
文章目录 UDP协议UDP报文格式UDP报文示例UDP协议测试UDP协议 UDP(User Datagram Protocol)是一种无连接的传输层协议,它不保证数据传输的可靠性,但是具有传输速度快的优点。UDP协议主要用于那些对数据传输速度要求较高,但对数据传输的可靠性要求不高的应用场景,如音视频…...
uniapp如何上传文件,使用API是什么
在uniapp中上传文件的方法有很多,其中一种常用的方法是使用wx.uploadFile() API。该API可以上传本地文件或网络文件,并支持设置请求头、请求参数等选项。 具体使用方法如下: 1.引入API: import { uploadFile } from /util/requ…...

【狂神说Java】Docker概述 | Docker安装 | Docker的常用命令
✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :【狂神说Java】 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,…...

Git精讲
Git基本操作 创建Git本地仓库 git initgit clone 配置Git git config [--global] user.name "Your Name" git config [--global] user.email "emailexample.com"–global是一个可选项。如果使用了该选项,表示这台机器上所有的Git仓库都会使…...
读书笔记:Effective C++ 3.0版2005年Scott Meyers : 55条建议(47-55)
条款47 :请使用traits classes表现类型信息(Use traits classes for information about types) (1).Traits classes使得”类型相关信息”在编译期可用。它们以templates和”templates特化”完成实现。 (2).整合重载技术(overloading)后,traits classes有…...
Golang Context 的并发安全性探究
在 Golang 中,Context 是一个用于管理 goroutine 生命周期、传递请求和控制信息的重要机制。然而,当多个 goroutine 同时使用 Context 时,很容易出现并发安全性问题。本文将探讨如何正确使用 Context 并保证其在并发环境下的安全性。 1. Con…...
C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...

单张图像3D重建:原理与PyTorch实现
近年来,深度学习(DL)在解决图像分类、目标检测、语义分割等 2D 图像任务方面表现出了出色的能力。DL 也不例外,在将其应用于 3D 图形问题方面也取得了巨大进展。 在这篇文章中,我们将探讨最近将深度学习扩展到单图像 3…...

340条样本就能让GPT-4崩溃,输出有害内容高达95%?OpenAI的安全防护措施再次失效
仅需340个示例微调GPT-4,即可绕过安全限制,让模型说出“枪支改装方法”、“生化武器制作过程”等有害内容? OpenAI的安全防护措施再次失效,攻击的成功率高达95%! 近日,美国顶尖大学UIUC与斯坦福联合对GPT…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...