Docker容器-监控告警
点击展开更新日志
2025
title
xxxxx
nexttime
会有些什么呢(❁´◡`❁)
¶Komari 监控面板
¶源起
为了监控手上的几台的服务器,简单看一下内存硬盘网络的情况,最初是想要统计加到 Grafana 上的,毕竟之前弄好了嘛,但一时之间找不到合适的监控模板,于是干脆就用一个单独的模板来做监控得了。
最初是选择的 哪吒监控V1,实际部署之后发现个别使用 IPv4 节点会是不是断联,估计可能是 haproxy 和采集间隔的缘故,暂时不知道怎么改,兜兜转转换到了 Komari。一套下来感觉还不错,暂时选择了这套。
¶需求
如果是将 dashboard 部署在公网服务器上,操作会简单一点,可是呢,我想把 dashboard 部署在内网环境,主要还是因为使用场景基本都在内网,想要把所有容器统一管理起来,真要说有什么必要的理由貌似也没有。但这样就会引出一个新的问题,互联网上的服务器如何连接到内网的 dashboard,因此,一个公网地址是必要的。
到这里,整理一下我的部署需求:
- 内网部署,监控内网及互联网服务器(Linux, Windows)
- 容器部署
- 界面美观可自定义
根据部署过程中遇到的问题,实现以上需求的资源需求如下:
- 【必需】公网地址:如果有IPv4最好,但至少要有 IPv6
- 【必需】Docker环境:本地已安装Docker环境
- 【可选】带公网IPv6的服务器:如果没有公网IPv4出口那么这个就是必需的,需要做中转。
- 【推荐】SSH工具:既然都用Linux了,怎么没有一个趁手的工具呢
关于公网 IPv6 的检查,并非用
ip
命令看到存在 IPv6 就可以,需要用ping -6 aliyun.com
检查是否可以ping通,才能说明该服务器 IPv6 是否支持对外访问,重点是服务器要能够访问 IPv6,否则也是徒劳。比如阿里云的ECS虽然提供IPv6,支持IPv6访问,但服务器本身不能够访问外部IPv6地址,需要单独购买流量费。
¶环境
- 内网服务器intA:具有公网IPv6,
- 部署 dashboard
- 部署 Nginx 反向代理 data.example.com
- 具有公网IPv6服务器extB
- 阿里云服务器extC:不支持对外IPv6访问
- 域名 data.example.com 已绑定到 extB 的地址
¶部署
¶Dashboard 部署
假设本地 Docker 环境已就绪,有顺畅访问 Github 及拉取 Docker 镜像的手段。
创建 compose 文件
1 | services: |
启动
1 | docker compose up -d |
获取账号密码
1 | docker logs komari |
查看日志获取登录用户名和密码。
登录管理页面
http://<IP>:25774
密码可能是做了限制不允许输入
/
,但是可以选择粘贴,因此:
- 更改为不包含
/
的新密码- 利用密码管理工具记住自动填充
¶Nginx 反向代理
一般情况下自然不可能记端口访问,因此我们需要配置一层代理,以Openresty为例:
1 | server { |
此时就能够用域名访问后台,后续探针上报地址也就使用域名了。
¶DDNS 配置
既然我们的服务部署在内网,想要公网上的服务器连接上,自然还需要有一个公网访问的地址:
- 公网IPv4:
- 这种情况下只需要将域名绑定到IP,后续就能够直接用域名部署代理了,不需要额外的操作,后续操作直接跳过。
- 公网IPv6
- 如果恰好和我一样只有v6的地址,就需要稍微折腾一下,以下操作仅针对只有公网IPv6的情况:
- 部署 ddns-go-jeessy2
- 将以上访问域名
komari.xxx.top
添加绑定 - 外网验证解析访问是否正常。
具体部署操作可以参考文档说明或者后面有空再补充。
¶手动部署代理——支持对外IPv6公网
对于extB服务器的情况:
- 具有公网IPv4
- 具有对外IPv6:
1
2
3
4
5
6
7
8root@Debian12:~# ping -6 aliyun.com
PING aliyun.com(2401:b180:1:60::6 (2401:b180:1:60::6)) 56 data bytes
64 bytes from 2401:b180:1:60::6 (2401:b180:1:60::6): icmp_seq=1 ttl=85 time=152 ms
64 bytes from 2401:b180:1:60::6 (2401:b180:1:60::6): icmp_seq=2 ttl=85 time=152 ms
^C
--- aliyun.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 152.093/152.106/152.119/0.013 ms
这种情况下可以直接配置:
- 登录到 komari 后台手动添加一个节点,复制部署指令
- SSH 登录到待部署代理服务器 extB,粘贴指令执行
- 安装完成后回到后台检查是否已获取节点信息,如果没有,使用命令查看代理启动日志排查:
1
systemctl status komari-agent
¶手动部署代理——不支持对外IPv6公网
如果对于extC服务器的情况:
1 | [root@aliyun ~]# ping -6 aliyun.com |
直接执行部署指令是连接不上server的,因此需要找一个中间服务器做代理,比如 extB——有公网IPv4能够接收extC的请求,也能够访问只有 IPv6 的dashboard,因此部署步骤如下:
- 在 extB 上部署 haproxy(也可以选择Nginx,图简单我直接用TCP)
因安装步骤写在这里略显冗余,放在另一篇了。 - 配置到
data.example.com
的转发配置,端口自定义,比如8080,如果有白名单配置也需要添加extC的IP到白名单,重启服务; - 修改部署指令
1
bash <(curl -sL https://raw.githubusercontent.com/komari-monitor/komari-agent/refs/heads/main/install.sh) -e https://data.example.com:8080 -t abcdefg
将内网的面板地址更换为绑定 extB 服务器的域名+端口
- 如果一切顺利,dashboard上应该就能看到了
¶手动部署代理-无root权限
此类情况适用于希望将 serv00 这样的服务器也加入监控,直接使用部署指令没有权限,而且脚本也没有支持 FreeBSD,因此只能手动下载 agent。
-
从 Github 找到对应的agent下载地址:https://github.com/komari-monitor/komari-agent/releases,比如选择
freebsd-amd64
-
下载到用户目录
1
2
3mkdir -p application/komari-agent
cd application/komari-agent
wget https://github.com/komari-monitor/komari-agent/releases/download/1.0.62/komari-agent-freebsd-amd64 -
创建启动脚本
1
2
3
4
5
6
7vim start-agent.sh
# 添加以下内容
#!/bin/bash
/home/User/application/komari-agent/komari-agent-freebsd-amd64 -e https://data.example.com:8080 -t abcdefg12345 >> /home/User/application/komari-agent/komari-agent.log -
启动脚本
1
2
3chmod +x start-agent.sh
./start-agent.sh
# pm2 start start-agent.sh --name komaripm2 的安装晚点补充
¶自动发现
参考:Agent 自动发现
对于需要批量部署和管理 Agent 实例,可以在管理后台生成自动发现密钥,使用以下命令安装 Agent:
1 | # Linux/macOS |
-e, --endpoint
komari 服务器地址,需要能够访问,比如:https://data.example.com:8080
--auto-discovery
自动发现密钥,用于批量注册 Agent
¶卸载代理
-
停止并禁用服务
1
2systemctl stop komari-agent
systemctl disable komari-agent -
删除服务文件
1
2rm /etc/systemd/system/komari-agent.service
systemctl daemon-reload -
删除安装文件
1
rm -rf /opt/komari /var/log/komari
一键删除:
1 | sudo systemctl stop komari-agent && sudo systemctl disable komari-agent && sudo rm -f /etc/systemd/system/komari-agent.service && sudo systemctl daemon-reload && sudo rm -rf /opt/komari /var/log/komari |