『亚马逊云科技产品测评』活动征文|借助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. 环境](#0. 环境)

[1. 虚拟机ubuntu22安装zabbix](#1. 虚拟机ubuntu22安装zabbix)

[1.1 安装 Zabbix 仓库](#1.1 安装 Zabbix 仓库)

[1.2 安装 Zabbix server, frontend, agent](#1.2 安装 Zabbix server, frontend, agent)

[1.3 创建 初始 数据库](#1.3 创建 初始 数据库)

[1.4 Configure the database for Zabbix server](#1.4 Configure the database for Zabbix server)

[1.5 Configure PHP for Zabbix frontend](#1.5 Configure PHP for Zabbix frontend)

[1.6 Start Zabbix server and agent processes](#1.6 Start Zabbix server and agent processes)

[1.7 Open Zabbix UI web page](#1.7 Open Zabbix UI web page)

[1.8 frp](#1.8 frp)

[1.8.1 下载可执行文件](#1.8.1 下载可执行文件)

[1.8.2 解压](#1.8.2 解压)

[1.8.3 切换目录](#1.8.3 切换目录)

[1.8.4 修改配置](#1.8.4 修改配置)

[1.8.5 运行](#1.8.5 运行)

[2. aws ec2准备](#2. aws ec2准备)

[2.1 控制台](#2.1 控制台)

[2.2 连接到实例](#2.2 连接到实例)

[2.3 部署frp](#2.3 部署frp)

[2.3.1 下载可执行文件](#2.3.1 下载可执行文件)

[2.3.2 解压](#2.3.2 解压)

[2.3.3 切换目录](#2.3.3 切换目录)

[2.3.4 修改配置](#2.3.4 修改配置)

[2.3.5 服务器开启端口](#2.3.5 服务器开启端口)

[2.3.6 测试web](#2.3.6 测试web)

[2.3.7 测试zabbix server部署情况](#2.3.7 测试zabbix server部署情况)

[3. 添加监控设备](#3. 添加监控设备)

[3.1 win10](#3.1 win10)

[3.1.1 下载](#3.1.1 下载)

[3.2 修改配置](#3.2 修改配置)

[3.3 启动 zabbix agent](#3.3 启动 zabbix agent)

[3.4 web添加主机](#3.4 web添加主机)

[3.2 ubuntu22](#3.2 ubuntu22)

[3.2.1 切换用户](#3.2.1 切换用户)

[3.2.2 Install and configure Zabbix for your platform](#3.2.2 Install and configure Zabbix for your platform)

[3.2.4 重启 zabbix服务](#3.2.4 重启 zabbix服务)

[3.2.5 web添加主机](#3.2.5 web添加主机)

[3.5 效果](#3.5 效果)

小结

[4. 服务器部署spug](#4. 服务器部署spug)

[4.1 安装docker](#4.1 安装docker)

[4.2 创建docker-compose.yml](#4.2 创建docker-compose.yml)

[4.3 启动容器](#4.3 启动容器)

[4.4 初始化](#4.4 初始化)

[4.6 通过aws访问本主机](#4.6 通过aws访问本主机)

[4.6.1 开通端口](#4.6.1 开通端口)

[4.6.2 frp客户端添加端口](#4.6.2 frp客户端添加端口)

[4.6.3 测试](#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 = 30000

auth.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 spug

gedit docker-compose.yml

添加以下内容:

复制代码
version: "3.3"
services:
  db:
    image: mariadb:10.8.2
    container_name: spug-db
    restart: always
    command: --port 3306 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - /data/spug/mysql:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=spug
      - MYSQL_USER=spug
      - MYSQL_PASSWORD=spug.cc
      - MYSQL_ROOT_PASSWORD=spug.cc
  spug:
    image: openspug/spug-service
    container_name: spug
    privileged: true
    restart: always
    volumes:
      - /data/spug/service:/data/spug
      - /data/spug/repos:/data/repos
    ports:
      # 如果80端口被占用可替换为其他端口,例如: - "8000:80"
      - "18000:80"
    environment:
      - MYSQL_DATABASE=spug
      - MYSQL_USER=spug
      - MYSQL_PASSWORD=spug.cc
      - MYSQL_HOST=db
      - MYSQL_PORT=3306
    depends_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 测试

相关推荐
阿竹.44 分钟前
Linux运维新手的修炼手扎之第21天
linux·运维·服务器
望获linux1 小时前
【实时Linux实战系列】实时系统的调试技术
linux·运维·服务器·网络·数据库·操作系统·嵌入式软件
Z7676_1 小时前
静态路由技术
服务器·前端·javascript
工控小楠1 小时前
CCLink IE转ModbusTCP网关配置无纸记录器(中篇)
服务器·网络·php
DC_BLOG1 小时前
OSPFv3中LSA参数
运维·服务器·华为·智能路由器·huawei
Tim风声(网络工程师)2 小时前
如何通过mac的前24bit,模糊确认是那一台什么样的设备
运维·服务器·网络·macos
189228048612 小时前
NW972NW974美光固态闪存NW977NW981
大数据·服务器·网络·人工智能·性能优化
basketball6162 小时前
Linux C 进程基本操作
linux·运维·服务器·c语言·后端
望获linux2 小时前
【Linux基础知识系列】第五十四篇 - 网络协议基础:TCP/IP
java·linux·服务器·开发语言·架构·操作系统·嵌入式软件