『亚马逊云科技产品测评』活动征文|借助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…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
