Skip to content

常见问题

80 端口被占用了怎么办?

amprobenginx 服务的默认端口为 80 端口,如果目标机的 80 端口被占用,则需要在默认 nginx.conf 配置文件的基础上修改端口后,挂载到容器中覆盖原来的默认配置,下面以 8082 端口为例展示如果修改:

新建 /data/amprobe/nginx 目录并在该目录下创建 nginx.conf 文件内容如下:

bash
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       8082;  # 修改为目标机可用的端口,这里以 8082 为例
        # 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;  #必须的写这个,使用nginx的rewrite对uri进行重写  下面这行也要改为api
            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;
        }
    }
}
  • 通过 docker 部署是挂载 nginx 配置
bash
sudo docker run -itd --name amprobe --net="host" \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /proc:/host/proc:ro \
    -v /sys:/host/sys:ro \
    -v /:/rootfs:ro\
    -v /data/amprobe/nginx/nginx.conf:/etc/nginx/nginx.conf
    amuluze/amprobe:v1.3.3
  • 通过 docker-compose 部署是挂载 nginx 配置
bash
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
      - /:rootfs:ro
      - /data/amprobe/nginx/nginx.conf:/etc/nginx/nginx.conf

如何查看和配置监控磁盘?

需要修改默认配置文件 config.toml[Disk]Devices 的内容,同样通过挂载的方式替换原来的默认配置文件,新建 /data/amprobe/configs 目录,并在该目录下新建 config.toml 文件,复制默认配置信息,并修改如下的部分:

toml
....
[Disk]
# 主机监控数据的采集频率,支持配置多个磁盘
Devices = ["vda1", "vda2", "vda3"]
...

在宿主机执行 lsblk 命令:

bash
$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0    87M  1 loop /snap/lxd/27948
loop1    7:1    0  39.1M  1 loop /snap/snapd/21184
loop2    7:2    0  38.7M  1 loop /snap/snapd/21465
loop3    7:3    0  63.9M  1 loop /snap/core20/2182
loop4    7:4    0  63.9M  1 loop /snap/core20/2264
loop6    7:6    0    87M  1 loop /snap/lxd/28373
sr0     11:0    1 203.6M  0 rom  
vda    252:0    0    40G  0 disk 
├─vda1 252:1    0     1M  0 part 
└─vda2 252:2    0    40G  0 part /

可以看到这里只有一块硬盘 vda,有两个分区 vda1vda2,这里我们将 vda2 填入上面的 Devices

toml
....
[Disk]
# 主机监控数据的采集频率,支持配置多个磁盘
Devices = ["vda2"]
...
  • 通过 docker 部署是挂载 config.toml 配置
bash
sudo docker run -itd --name amprobe --net="host" \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /proc:/host/proc:ro \
    -v /sys:/host/sys:ro \
    -v /:/rootfs:ro\
    -v /data/amprobe/nginx/nginx.conf:/etc/nginx/nginx.conf
    -v /data/amprobe/configs/config.toml:/app/configs/config.toml
    amuluze/amprobe:v1.3.3
  • 通过 docker-compose 部署是挂载 config.toml 配置
bash
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
      - /:rootfs:ro
      - /data/amprobe/nginx/nginx.conf:/etc/nginx/nginx.conf
      - /data/amprobe/configs/config.toml:/app/configs/config.toml

如何查看和配置监控网口?

需要修改默认配置文件 config.toml[Ethernet]Names 的内容,同样通过挂载的方式替换原来的默认配置文件,新建 /data/amprobe/config 目录,并在该目录下新建 config.toml 文件,复制默认配置信息,并修改如下的部分:

toml
....
[Ethernet]
# 需要监控的网口,可以通过 ifconfig 命令查看,支持配置多个网口
Names = ["eth0"]
...

在宿主机执行 ifconfig 命令:

bash
$ ifconfig
br-cd17b8481878: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.32.0.1  netmask 255.255.0.0  broadcast 172.32.255.255
        inet6 fe80::42:2cff:feef:1f29  prefixlen 64  scopeid 0x20<link>
        ether 02:42:2c:ef:1f:29  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 440 (440.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:c5ff:fed8:8fdf  prefixlen 64  scopeid 0x20<link>
        ether 02:42:c5:d8:8f:df  txqueuelen 0  (Ethernet)
        RX packets 792315  bytes 140799131 (140.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 949072  bytes 4068378394 (4.0 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.8.7  netmask 255.255.252.0  broadcast 10.0.11.255
        inet6 fe80::5054:ff:fed4:5196  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:d4:51:96  txqueuelen 1000  (Ethernet)
        RX packets 136754125  bytes 34470629761 (34.4 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 141300377  bytes 26653906002 (26.6 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 6766450  bytes 557395245 (557.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6766450  bytes 557395245 (557.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vethbd1cd65: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::e846:acff:fef1:e52c  prefixlen 64  scopeid 0x20<link>
        ether ea:46:ac:f1:e5:2c  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1153  bytes 80886 (80.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vethc0a309a: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::d896:14ff:fef5:8807  prefixlen 64  scopeid 0x20<link>
        ether da:96:14:f5:88:07  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1154  bytes 80956 (80.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到宿主机通过 etho0 网口配置的 IP 对外提供服务,这里我们将 eth0 填入上面的 Names

toml
....
[Ethernet]
# 需要监控的网口,可以通过 ifconfig 命令查看,支持配置多个网口
Names = ["eth0"]
...
  • 通过 docker 部署是挂载 config.toml 配置
bash
sudo docker run -itd --name amprobe --net="host" \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /proc:/host/proc:ro \
    -v /sys:/host/sys:ro \
    -v /:/rootfs:ro\
    -v /data/amprobe/nginx/nginx.conf:/etc/nginx/nginx.conf
    -v /data/amprobe/configs/config.toml:/app/configs/config.toml
    amuluze/amprobe:v1.3.3
  • 通过 docker-compose 部署是挂载 config.toml 配置
bash
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
      - /:rootfs:ro
      - /data/amprobe/nginx/nginx.conf:/etc/nginx/nginx.conf
      - /data/amprobe/configs/config.toml:/app/configs/config.toml

每次重启服务后,数据会被清空?

是的,默认每次重启服务后会删库重建,如果希望在重启服务后保留历史数据,可如下操作:

bash
$ cd /data/amprobe
$ touch probe.db

probe.db 进行挂载。

  • 通过 docker 部署是挂载 probe.db 文件
bash
sudo docker run -itd --name amprobe --net="host" \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /proc:/host/proc:ro \
    -v /sys:/host/sys:ro \
    -v /:/rootfs:ro\
    -v /data/amprobe/probe.db:/app/probe.db
    -v /data/amprobe/nginx/nginx.conf:/etc/nginx/nginx.conf
    -v /data/amprobe/configs/config.toml:/app/configs/config.toml
    amuluze/amprobe:v1.3.3
  • 通过 docker-compose 部署是挂载 probe.db 文件
bash
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
      - /:rootfs:ro
      - /data/amprobe/probe.db:/app/probe.db
      - /data/amprobe/nginx/nginx.conf:/etc/nginx/nginx.conf
      - /data/amprobe/configs/config.toml:/app/configs/config.toml

主机监控数据保存多长时间?

默认保存 24 小时的监控,目前暂不支持修改。

如何通过日志排查问题?

amprobe 容器中是使用 supervisor 来管理 nginxserver 服务,所以 docker log -f amprobe 只能查看到 supervisor 的日志,想要排查 nginxserver 的日志,可以通过如下方法进行排查:

bash
$ docker exec -it amprobe sh
$ pwd
/app
$ ls
amprobe  app.log  configs  nginx.log  probe.db  probe.log  probe.log.20240429

nginx.logprobe.log 分别是 nginxserver 的日志文件。

如何管理用户

通过 init.yaml 文件来管理用户,每次重启 Amporbe 时,会自动根据 init.yaml 配置文件更新用户。