热门角色不仅是灵感来源,更是你的效率助手。通过精挑细选的角色提示词,你可以快速生成高质量内容、提升创作灵感,并找到最契合你需求的解决方案。让创作更轻松,让价值更直接!
我们根据不同用户需求,持续更新角色库,让你总能找到合适的灵感入口。
本提示词专为IT专业人员设计,提供全面的本地化软件部署解决方案。通过系统化的任务分解和逐步推理,能够根据用户的具体环境需求生成定制化的部署指南、配置模板和故障排除方案。亮点包括:智能识别系统兼容性、自动化生成配置脚本、提供详细的验证步骤和应急预案,确保部署过程高效可靠。特别适用于企业级软件、数据库系统、中间件等复杂应用的本地环境部署,帮助用户规避常见技术陷阱,提升部署成功率。
部署概述:项目背景和目标
环境要求:硬件、软件、网络需求清单
部署步骤:编号列表形式的详细操作指引
配置示例:关键配置文件的模板代码块
验证检查:部署完成后的验收项目清单
故障排除:常见问题及解决方案表格
运维建议:日常维护注意事项
说明与约束
部署概述 本方案面向企业内网,构建高可用监控平台(Prometheus/Grafana/Alertmanager),通过双节点冗余、nginx+keepalived 提供 VIP 入口(10.0.10.10),并实现安全合规(AppArmor、TLS/HSTS、RBAC/只读、审计归档)、系统调优(inotify、max_map_count、nofile)、稳定存储与离线备份(独立 SSD + NAS)。监控与管理 VLAN 分离,exporter 接入采用内部 mTLS,防火墙精细化控制端口访问。
建议的拓扑(示例)
环境要求
部署步骤
规划与前置准备 1.1 划分 VLAN:管理网与监控网分离,分配 mon-a/mon-b 业务 IP 和 VRRP VIP(10.0.10.10) 1.2 DNS/主机名:为 mon-a/mon-b/VIP 配置 A 记录(可选) 1.3 存储挂载:在两节点将 2TB SSD 挂载至 /data/prometheus(ext4,noatime)
基础系统与安全基线 2.1 更新与基础包:安装 keepalived、chrony、logrotate、ufw、ca-certificates 2.2 安装 Docker CE 24 与 Compose 插件(或使用 containerd,保持镜像签名校验) 2.3 启用 AppArmor:保持默认 docker-default;不关闭 AppArmor 2.4 系统参数调优(持久化到 /etc/sysctl.d/99-monitoring.conf) - fs.inotify.max_user_watches = 1048576 - vm.max_map_count = 262144 - net.core.somaxconn = 1024 - vm.swappiness = 10 生效后验证 sysctl -a 显示正确值(注意遵循变更窗口与回退计划) 2.5 ulimit:为 docker 服务与容器设置 nofile=65536(在 /etc/security/limits.d/monitoring.conf 或 Compose ulimits) 2.6 时间同步:chrony 指向企业 NTP,确保两节点时钟一致(偏差 <100ms)
证书体系与密钥管理 3.1 内部 CA(推荐) - 生成/导入企业级根 CA 与中间 CA - 为 nginx(VIP 域名/主机名)签发服务器证书(SAN 包含 VIP/域名) - 为 Prometheus 客户端签发 mTLS 客户端证书(用于抓取 node_exporter/blackbox) - 为 node_exporter/blackbox_exporter 签发服务器证书(各节点或通配) 说明:私钥妥善保管,文件权限 600,禁止外发;在容器内以只读挂载。 3.2 公有证书(可选) - 若外网入口需要,使用 certbot 申请并自动续期;强制 HTTPS 与 HSTS 3.3 证书分发与撤销 - 使用企业秘钥管理流程分发,保留吊销列表(CRL)与到期提醒(<30天预警)
防火墙与网络访问控制(以 UFW 为例,按企业策略调整)
目录结构与 Compose 工程(两节点一致)
keepalived 配置与健康检查(主备) 6.1 在 mon-a/mon-b 安装 keepalived(系统服务,非容器) 6.2 使用 VRRP 提供 VIP 10.0.10.10;track_script 检查 nginx 监听 443 健康;发生故障自动漂移
组件配置与启动 7.1 Prometheus - 双实例独立抓取相同 targets;开启 WAL 压缩、合理保留周期;暴露 /federate(为未来联邦上层聚合) 7.2 Alertmanager - 两实例集群(9094 gossip);路由、接收器、抑制策略一致;告警去重与静默共享 7.3 Grafana - 身份认证、RBAC、只读 Viewer;禁用匿名;behind nginx 强制 HTTPS/HSTS - HA 注意:若不引入外部数据库(PostgreSQL),采用 nginx 粘性会话 + 单节点写入,故障时会话丢失。若需强一致 HA,建议接入企业 PostgreSQL(见运维建议) 7.4 node_exporter 与 blackbox_exporter - 启用 TLS 与 mTLS,Prometheus 使用客户端证书抓取 7.5 nginx - 反向代理 Prometheus/Alertmanager/Grafana;TLS1.2/1.3、HSTS、严格安全头;对 Prometheus/Alertmanager 管理 API 进行门禁(仅读) 7.6 logrotate - 对 nginx、Prometheus、Alertmanager、Grafana 日志按日轮转并归档到 NAS 7.7 chrony - 验证时钟同步;配置源为企业 NTP
备份与恢复
配置示例
version: "3.9"
services:
prometheus:
image: prom/prometheus:v2.49.0
restart: always
user: "1000:1000"
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--storage.tsdb.retention.time=30d"
- "--storage.tsdb.wal-compression"
- "--web.enable-lifecycle" # 不启用 admin API,避免破坏性操作
- "--web.external-url=https://monitor.example.com/prometheus"
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./prometheus/rules:/etc/prometheus/rules:ro
- /data/prometheus:/prometheus
- ./prometheus/certs:/etc/prometheus/certs:ro
ports:
- "9090:9090"
ulimits:
nofile: 65536
alertmanager:
image: prom/alertmanager:v0.27.0
restart: always
command:
- "--config.file=/etc/alertmanager/alertmanager.yml"
- "--cluster.listen-address=0.0.0.0:9094"
- "--cluster.peer=10.0.10.11:9094"
- "--cluster.peer=10.0.10.12:9094"
- "--web.external-url=https://monitor.example.com/alertmanager"
volumes:
- ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro
- ./alertmanager/templates:/etc/alertmanager/templates:ro
- ./alertmanager/data:/alertmanager
ports:
- "9093:9093"
- "9094:9094"
grafana:
image: grafana/grafana:10.4.5
restart: always
environment:
- GF_SERVER_ROOT_URL=https://monitor.example.com/grafana
- GF_SERVER_SERVE_FROM_SUB_PATH=true
- GF_SERVER_PROTOCOL=http
- GF_AUTH_ANONYMOUS_ENABLED=false
- GF_SECURITY_ALLOW_EMBEDDING=false
- GF_SECURITY_COOKIE_SECURE=true
- GF_AUTH_DISABLE_LOGIN_FORM=false
- GF_USERS_DEFAULT_THEME=light
# 生产中使用企业秘密管理注入管理员密码,勿写入文件
# - GF_SECURITY_ADMIN_PASSWORD=__SET_BY_SECRET__
volumes:
- ./grafana/grafana.ini:/etc/grafana/grafana.ini:ro
- ./grafana/data:/var/lib/grafana
ports:
- "3000:3000"
ulimits:
nofile: 65536
node_exporter:
image: prom/node-exporter:v1.6.1
restart: always
command:
- "--web.config.file=/etc/node_exporter/web.yml"
- "--path.rootfs=/host"
volumes:
- ./exporters/node_exporter_web.yml:/etc/node_exporter/web.yml:ro
- "/:/host:ro,rslave"
network_mode: host
pid: host
blackbox_exporter:
image: prom/blackbox-exporter:v0.24.0
restart: always
command:
- "--web.config.file=/etc/blackbox/web.yml"
- "--config.file=/etc/blackbox/blackbox.yml"
volumes:
- ./exporters/blackbox_web.yml:/etc/blackbox/web.yml:ro
- ./exporters/blackbox.yml:/etc/blackbox/blackbox.yml:ro
ports:
- "9797:9797"
nginx:
image: nginx:1.25-alpine
restart: always
ports:
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/certs:/etc/nginx/certs:ro
- ./nginx/logs:/var/log/nginx
depends_on:
- prometheus
- alertmanager
- grafana
ulimits:
nofile: 65536
networks:
default:
driver: bridge
vrrp_script chk_nginx {
script "/usr/local/sbin/check_port.sh 443"
interval 2
fall 3
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface <your-nic> # 示例:ens160
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass __SET_BY_SECRET__
}
virtual_ipaddress {
10.0.10.10/24 dev <your-nic>
}
track_script {
chk_nginx
}
}
vrrp_instance VI_1 {
state BACKUP
interface <your-nic>
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass __SET_BY_SECRET__
}
virtual_ipaddress {
10.0.10.10/24 dev <your-nic>
}
track_script {
chk_nginx
}
}
#!/usr/bin/env bash
# 用于 keepalived track_script,检测本机TCP端口是否在 LISTEN
PORT="$1"
ss -ltn | awk '{print $4}' | grep -q ":$PORT" && exit 0 || exit 1
user nginx;
worker_processes auto;
events { worker_connections 4096; }
http {
# 安全头与TLS参数
server_tokens off;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header Referrer-Policy strict-origin-when-cross-origin;
upstream grafana_upstream {
# 粘性会话(仅在未使用外部DB时建议)
ip_hash;
server 127.0.0.1:3000 max_fails=3 fail_timeout=30s;
}
upstream prometheus_upstream { server 127.0.0.1:9090; }
upstream alertmanager_upstream { server 127.0.0.1:9093; }
server {
listen 443 ssl http2;
server_name monitor.example.com; # 替换为 VIP FQDN
ssl_certificate /etc/nginx/certs/vip.crt;
ssl_certificate_key /etc/nginx/certs/vip.key;
ssl_trusted_certificate /etc/nginx/certs/ca.crt;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# Grafana
location /grafana/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://grafana_upstream/;
}
# Prometheus(只读门禁:不暴露 admin API,不允许管理变更)
location /prometheus/ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://prometheus_upstream/;
# 可选:限制方法
if ($request_method !~ ^(GET|HEAD|OPTIONS|POST)$) { return 405; }
}
# Alertmanager
location /alertmanager/ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://alertmanager_upstream/;
}
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
}
}
global:
scrape_interval: 15s
evaluation_interval: 30s
external_labels:
cluster: "monitoring-ha"
instance: "${HOSTNAME}"
rule_files:
- /etc/prometheus/rules/*.yml
scrape_configs:
- job_name: 'node_exporter'
scheme: https
tls_config:
ca_file: /etc/prometheus/certs/ca.crt
cert_file: /etc/prometheus/certs/client.pem
key_file: /etc/prometheus/certs/client.key
insecure_skip_verify: false
static_configs:
- targets:
- "node1.example.com:9100"
- "node2.example.com:9100"
- "127.0.0.1:9100" # 本机
relabel_configs:
- source_labels: [__address__]
target_label: instance
- job_name: 'blackbox'
metrics_path: /metrics
scheme: https
tls_config:
ca_file: /etc/prometheus/certs/ca.crt
cert_file: /etc/prometheus/certs/client.pem
key_file: /etc/prometheus/certs/client.key
static_configs:
- targets:
- "10.0.10.11:9797"
- "10.0.10.12:9797"
# 对外联邦(供上层聚合拉取),不主动互拉避免环路
# 可按需增加:
# - job_name: 'snmp'(通过 snmp_exporter 或静态抓取外部组件)
global:
resolve_timeout: 5m
smtp_smarthost: "smtp.example.com:587" # 企业邮件网关
smtp_from: "alerts@example.com"
smtp_auth_username: "__SET_BY_SECRET__"
smtp_auth_password: "__SET_BY_SECRET__"
smtp_require_tls: true
route:
receiver: 'mail-default'
group_by: ['alertname', 'cluster', 'instance']
group_wait: 30s
group_interval: 5m
repeat_interval: 3h
receivers:
- name: 'mail-default'
email_configs:
- to: "noc@example.com"
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'instance']
[server]
root_url = https://monitor.example.com/grafana
serve_from_sub_path = true
protocol = http
domain = monitor.example.com
enforce_domain = true
[security]
admin_user = admin
cookie_secure = true
strict_transport_security = true
# 密码通过环境变量或秘密管理注入,不写入配置文件
[auth]
disable_login_form = false
anonymous_enabled = false
signout_redirect_url = /grafana/login
[users]
allow_sign_up = false
auto_assign_org = true
auto_assign_org_role = Viewer
[log]
mode = console
level = info
tls_server_config:
cert_file: /etc/node_exporter/tls/server.crt
key_file: /etc/node_exporter/tls/server.key
client_auth_type: RequireAndVerifyClientCert
client_ca_file: /etc/node_exporter/tls/ca.crt
basic_auth_users: {}
tls_server_config:
cert_file: /etc/blackbox/tls/server.crt
key_file: /etc/blackbox/tls/server.key
client_auth_type: RequireAndVerifyClientCert
client_ca_file: /etc/blackbox/tls/ca.crt
basic_auth_users: {}
modules:
http_2xx:
prober: http
timeout: 5s
http:
preferred_ip_protocol: ip4
tcp_connect:
prober: tcp
timeout: 5s
/opt/monitoring/nginx/logs/*.log {
daily
rotate 14
compress
missingok
notifempty
dateext
sharedscripts
postrotate
/bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || true
endscript
}
验证检查
故障排除 | 症状 | 可能原因 | 解决方案 | | --- | --- | --- | | VIP 不漂移或漂移缓慢 | keepalived track_script 未命中、网络丢包、优先级相同 | 检查 check_port.sh 返回码;调低 advert_int;确认优先级配置;排查 NIC/ARP | | Grafana 反代 404 或静态资源丢失 | 未启用子路径或 root_url 配置错误 | 检查 grafana.ini 的 root_url 与 serve_from_sub_path;nginx location /grafana/ 末尾斜杠 | | Prometheus Targets DOWN | 证书不匹配、CA 未分发、mTLS 客户端证书过期 | 验证 SAN;检查 tls_config 文件路径;轮转证书并重载 | | Alertmanager peers 显示 1/2 | 9094 端口被防火墙拦截 | 放行监控 VLAN 到 9094;确认 cluster.peer 地址可达 | | nginx 报错 “no live upstreams” | 后端容器未启动或健康检查失败 | 查看容器日志;确认端口映射与依赖;恢复后 reload nginx | | Prometheus 查询卡顿或OOM | 超长查询、保留周期过大、并发高 | 缩短 retention;优化记录规则;限制 Grafana 查询时间范围;增加内存 | | 证书校验失败 | 链不完整、客户端未信任 CA | 配置 ssl_trusted_certificate;向客户端分发 CA | | 时钟偏差导致告警异常 | NTP 不稳或时区错误 | 调整 chrony 源;统一时区为 UTC 或企业标准;重启 chrony 验证 |
运维建议
注意
如需,我可以根据您实际的网段、域名与证书颁发流程,细化 firewall 规则与证书生成命令,或提供 PostgreSQL 版 Grafana HA 配置模板(符合企业治理标准)。
通过提示词明确部署目标与范围,生成项目计划、资源清单与风险台账,协调供应商与内部团队,加速上线并提升可预期性。
按分步指引执行安装与配置,遇到异常按故障排除路径定位问题,产出巡检清单与应急预案,显著缩短恢复时间。
生成适配本地环境的集群部署方案与参数模板,设计备份与恢复流程,验证数据一致性与性能达标,稳健支撑关键数据业务。
面向企业IT主管、架构师与运维团队,打造一条从“环境评估—方案设计—分步实施—验证交付—运维保障”的闭环提示词工作流;通过一次输入即可生成量身定制的本地部署指南、配置模板与验证清单,提前识别兼容与风险点,减少沟通与试错成本,提升部署成功率与可复用性;帮助团队快速通过安全与合规审查,缩短上线周期,最终实现更稳、更快、更省的本地化交付。
将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。
把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。
在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。
免费获取高级提示词-优惠即将到期