本文最后更新于 2024-06-28,文章内容可能已经过时。

前言

大家好,这里是可爱的Cherry。

今天Cherry发现了一款国人大佬新开发的docker容器监控与控制面板项目——amprobe。

该项目是作者的独立开发之路起步项目,因为上线时间不久,暂时只支持宿主机的监控,docker容器的启停日志查看运维等,暂时不支持用于容器的新建、镜像拉取等操作。

不过相信在不久的将来,该项目将脱颖而出,成为继dockerui之后,国内达人又一款针对docker容器管理的好项目~

🔻项目首页
image.png

项目地址:https://github.com/amuluze/amprobe
项目特性

- 监控主机的 CPU、内存、磁盘 IO、网络 IO情况
- 监控部署于主机上 Docker 容器的运行状态、CPU、内存使用情况
- 实时查看 Docker 容器的日志,并支持日志下载
- 针对管理员用户提供简单的 Docker 容器、镜像运维操作
- 操作日志记录

系统部署

一、docker-compose.yaml代码

🔻新建文件夹路径/volume1/amprobe,在/volume1/amprobe文件夹中新建或上传docker-compose.yml,config.toml,init.yaml,nginx.conf等共4个文件,并将相应的代码复制进去。
image.png
🔻compose.yml代码,主要是启动项目需要

version: '3'
services:
  amprobe:
    image: amuluze/amprobe:v1.3.3
    container_name: amprobe
    network_mode: "host"
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /dev:/host/dev:ro
      - ./config.toml:/app/configs/config.toml
      - ./init.yaml:/app/configs/init.yaml
      - ./nginx.conf:/etc/nginx/nginx.conf

🔻init.yaml代码(可选配置),主要是初始化账号密码

users:
  - username: cgakki  # 管理员,拥有启停容器的权限,非管理员则没有
    password: 666666
    status: 1
    is_admin: 1
  - username: amprobe
    password: 666666
    status: 1
    is_admin: 0

🔻config.toml代码(可选配置),主要是初始化配置文档

[Fiber]
# http监听地址
Host = "0.0.0.0"
# http监听端口
Port = 8000
# http优雅关闭等待超时时长(单位秒)
ShutdownTimeout = 30
SeverHeader = "probe"
AppName = "probe"
Prefork = false

# 数据库文件存放位置的配置
# 需要监控的磁盘设备配置
# 定时任务执行间隔配置
[Gorm]
# 是否开启调试模式
Debug = true
# 数据库类型(目前支持的数据库类型:postgres)
DBType = "sqlite"
# 设置连接可以重用的最长时间(单位:秒)
MaxLifetime = 7200
# 设置数据库的最大打开连接数
MaxOpenConns = 150
# 设置空闲连接池中的最大连接数
MaxIdleConns = 50
# 数据库表名前缀
TablePrefix = "s_"
# 是否启用自动映射数据库表结构
EnableAutoMigrate = true

[DB]
# 连接地址
Host = ""
# 连接端口
Port = ""
# 用户名
User = ""
# 密码
Password = ""
# 数据库
DBName = "/app/probe"
# SSL模式
SSLMode = ""

[Disk]
# 主机监控数据的采集频率
Devices = ["vda1", "vda2", "vda3"]

[Ethernet]
# 需要监控的网口,可以通过 ifconfig 命令查看
Names = ["eth0"]

[Task]
# 定时任务采样间隔,单位 s
Interval = 60

[Logger]
File = "/app/probe.log"
Level = "debug"
RotationTime = "1"  # 每天切分一个日志文件
MaxAge = "7"        # 最多保留 7 天的日志

[Auth]
# 是否启用
Enable = true
# 签名方式(支持:HS512/HS384/HS512)
SigningMethod = "HS512"
# 签名key
SigningKey = "amprobe"
# 过期时间(单位秒)
Expired = 7200
# key 前缀
Prefix = "auth_"

[InitData]
Enable = true
InitConfigFile = "/app/configs/init.yaml"

🔻nginx.conf代码(可选配置),主要是配置nginx端口,默认是80端口

worker_processes  1;
daemon off;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;  # 可修改为实际需要使用的端口
        # server_name  amprobe.amuluze.com; # 服务器地址或绑定域名

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }

        location /api/ {
            rewrite ^/api/(.*)$ /$1 break;
            proxy_pass http://127.0.0.1:8000/; #跨域转发路由地址
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location /ws/ {
            # rewrite ^/wsUrl/(.*)$ /$1 break; #拦截标识去除
            proxy_pass http://127.0.0.1:8000/ws/;

            proxy_http_version 1.1;

            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }

        # 错误页配置
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

二、部署系统

方法一:SSH部署

# 来到文件夹目录
cd /volume1/docker/容器名/
# 启动容器
docker-compose up -d

方法二:群晖部署compose

打开container manager,选择项目,点击新建,选择penpot路径,点击下一步即可
image.png

方法三:威联通部署compose

打开container station,创建应用程序,复制代码验证后部署即可
image.png


系统使用

🔻项目首页,比较好的展示了目前的容器使用量,以及宿主机的各类系统参数,譬如发行版本、内核版本、系统架构、docker版本、api版本、git版本、go版本等。
image.png
🔻容器首页,可以看到所有容器的基础信息,支持容器的启动、停止、重启、删除、日志查看等。
image.png
🔻镜像首页,支持对单个镜像进行删除,也支持批量删除未使用镜像
image.png
🔻宿主机监控,这里磁盘、网络等都需要在config文件中配置,比如多款硬盘就配置多个(使用fdisk查询),网口同理(使用ifconfig查询)
image.png