常见问题
80 端口被占用了怎么办?
amprobe
中 nginx
服务的默认端口为 80 端口,如果目标机的 80 端口被占用,则需要在默认 nginx.conf
配置文件的基础上修改端口后,挂载到容器中覆盖原来的默认配置,下面以 8082 端口为例展示如果修改:
新建 /data/amprobe/nginx
目录并在该目录下创建 nginx.conf
文件内容如下:
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
配置
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
配置
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
文件,复制默认配置信息,并修改如下的部分:
....
[Disk]
# 主机监控数据的采集频率,支持配置多个磁盘
Devices = ["vda1", "vda2", "vda3"]
...
在宿主机执行 lsblk
命令:
$ 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
,有两个分区 vda1
、vda2
,这里我们将 vda2
填入上面的 Devices
中
....
[Disk]
# 主机监控数据的采集频率,支持配置多个磁盘
Devices = ["vda2"]
...
- 通过
docker
部署是挂载config.toml
配置
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
配置
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
文件,复制默认配置信息,并修改如下的部分:
....
[Ethernet]
# 需要监控的网口,可以通过 ifconfig 命令查看,支持配置多个网口
Names = ["eth0"]
...
在宿主机执行 ifconfig
命令:
$ 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
中
....
[Ethernet]
# 需要监控的网口,可以通过 ifconfig 命令查看,支持配置多个网口
Names = ["eth0"]
...
- 通过
docker
部署是挂载config.toml
配置
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
配置
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
每次重启服务后,数据会被清空?
是的,默认每次重启服务后会删库重建,如果希望在重启服务后保留历史数据,可如下操作:
$ cd /data/amprobe
$ touch probe.db
将 probe.db
进行挂载。
- 通过
docker
部署是挂载probe.db
文件
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
文件
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
来管理 nginx
和 server
服务,所以 docker log -f amprobe
只能查看到 supervisor
的日志,想要排查 nginx
和 server
的日志,可以通过如下方法进行排查:
$ docker exec -it amprobe sh
$ pwd
/app
$ ls
amprobe app.log configs nginx.log probe.db probe.log probe.log.20240429
nginx.log
和 probe.log
分别是 nginx
和 server
的日志文件。
如何管理用户
通过 init.yaml
文件来管理用户,每次重启 Amporbe
时,会自动根据 init.yaml
配置文件更新用户。