两个服务抢一个端口
9090 是 Linux 运维里典型的双身份端口。Prometheus 默认用它提供 HTTP 服务:查询界面、告警规则页以及 /api/v1/query 等接口都在这里;Cockpit 是发行版自带的 Web 管理台,通过 systemd socket 单元监听 9090 并使用 HTTPS。同一台机器同时装了监控与管理台就会抢端口,排障第一步是确认监听者是谁,而不是先动防火墙。
基本信息
| 服务 | Prometheus / Cockpit |
|---|---|
| 协议 | TCP;Prometheus 为 HTTP,Cockpit 为 HTTPS |
| 默认端口 | 两者均为 9090 |
| 用途 | 指标查询与规则管理 / 服务器 Web 管理 |
| 安全等级 | Prometheus 仅监控网段;Cockpit 仅管理网段 |
典型使用场景
- 日常查指标:Prometheus 界面跑 PromQL,看目标是否抓取成功
- 接告警规则:在界面上验证规则表达式后再落地到配置文件
- 单机排障:通过 Cockpit 看服务状态、日志、存储与网络,背后调用 systemd 与 journal
- 冲突排查:新装监控组件起不来时确认 9090 已被谁占用
- 安全评估:资产里出现无认证的 9090 页面,需要判断是监控还是管理台
区分两个服务
区分两个服务
curl -s http://localhost:9090/-/ready # Prometheus 返回就绪文本
curl -sk https://localhost:9090/ | grep -i cockpit | head -2
ss -lntp | grep 9090 # 看进程与绑定地址
curl -s http://localhost:9090/api/v1/targets | head -c 300两个 9090 的区分
| 服务 | 判定方法 | 访问控制 |
|---|---|---|
| Prometheus | curl /-/ready 返回就绪文本 | 界面无认证,仅限内网 |
| Cockpit | 9090 上是 HTTPS 页面 | 系统账号登录,仅管理网段 |
| 探活端点 | /-/ready、/-/healthy | 反代鉴权时需放行 |
冲突时错开端口
冲突时错开端口
# Prometheus 换监听地址与端口
prometheus --web.listen-address=127.0.0.1:9095
# Cockpit 用 socket 单元覆盖
systemctl edit cockpit.socket
# [Socket]
# ListenStream=127.0.0.1:9095
systemctl daemon-reload && systemctl restart cockpit.socketCockpit 是完整的系统管理入口:用户、服务、容器、终端都能改,且只有系统账号一道认证。暴露到公网等于把系统管理面放到互联网上。
给 Prometheus 反代加鉴权时要注意放行 /-/ready 与 /-/healthy,否则上游健康检查会全部失败;同时别只改端口不改绑定地址,否则端口变了暴露面没变。
部署与巡检建议
- 同机部署前先决定谁占 9090,另一个换端口并顺手改绑定地址
- 监控套件与管理台分属不同网段时,防火墙按角色放行而不是按端口放行
- Prometheus 用 systemd 固化监听参数,避免手工启动后配置漂移
- 定期核对 9090 的监听进程,确认没有遗留的调试实例或旧版本服务