Repository navigation
Expand file tree
/
Copy pathenv.example
More file actions
168 lines (145 loc) · 9.11 KB
/
Copy pathenv.example
File metadata and controls
168 lines (145 loc) · 9.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# 本地开发模板:复制为 .env 后填写;所有密钥类变量留空,禁止提交真实值。
# 发布栈(deploy/release/compose.yaml)请使用 deploy/release/env.example。
# 必填:JWT_KEY1、JWT_KEY2、MYSQL_ADDR、TREE_PASSWORD_ENCRYPTION_KEY(webhook 进程另需 WEBHOOK_MYSQL_ADDR;使用根目录 docker-compose.yaml 另需 REDIS_PASSWORD);条件必填/可选见各项注释。
# 环境配置
# 后端 ENV 可选值(大小写不敏感,首尾空白忽略):production/prod/prd(生产)、development/dev(开发)。
# ENV 未设置、为空(含只有空白)或为其他取值(包括 test/testing)时后端拒绝启动(SEC-27);APP_ENV 不生效。
ENV=development
# ============================================================================
# 应用主配置
# ============================================================================
# 服务器配置
SERVER_PORT=8889
# 日志配置
LOG_DIR=./logs
LOG_LEVEL=debug
# JWT配置(JWT_KEY1、JWT_KEY2 必填;production 要求 ≥32 字符、互不相同)
# 生成: openssl rand -hex 24
JWT_KEY1=
JWT_KEY2=
# 可选,用来覆盖 config yaml 里的 JWT_ISSUER,一般不要设:设了会覆盖 yaml 中的值,现有 token 将全部失效。
# JWT_ISSUER=
# JWT_EXPIRATION:访问令牌有效期,单位是分钟(pkg/jwt 按 time.Minute 计算),30 = 30 分钟;请勿按秒填写。
# 与发布模板 deploy/release/compose.yaml 一致。旧示例值 3600 实为 3600 分钟(60 小时)。
# 本分支(合入 sched/w1-mantou 前):不设时取 config/*.yaml 的 jwt.expiration(现为 3600),≤0 时回退 30。
# 合入 sched/w1-mantou 后:代码与 config/*.yaml 默认 30;超过 1440(24 小时)时 ENV=production 拒绝启动,
# 其他环境告警后继续;≤0 时告警并使用 30。
JWT_EXPIRATION=30
# Redis配置(同时供根目录 docker-compose.yaml 的 redis --requirepass 使用)
REDIS_ADDR=localhost:6379
# 使用根目录 docker-compose.yaml 时必填:redis 以 --requirepass 启动,compose 用 ${REDIS_PASSWORD:?} 校验,留空会直接报错(生成: openssl rand -hex 24)
# 后端读取同一变量连接 Redis;不用 compose、连接无认证的 Redis 时才可留空。此处保持为空,不要提交真实值
REDIS_PASSWORD=
# MySQL配置
# 根目录 docker-compose.yaml 的 mysql root 口令(必填,生成: openssl rand -hex 24)
MYSQL_ROOT_PASSWORD=
# 必填。格式: <user>:<password>@tcp(localhost:3306)/cloudops?charset=utf8mb4&parseTime=True&loc=Local(勿提交真实口令)
MYSQL_ADDR=
# 树形结构配置
TREE_CHECK_STATUS_CRON=@every 300s
# 必填,必须恰好 32 字节(AES-256),生成: openssl rand -hex 16;升级时保持不变并与数据库一同备份
TREE_PASSWORD_ENCRYPTION_KEY=
# Kubernetes配置
K8S_REFRESH_CRON=@every 300s
# Prometheus配置
PROMETHEUS_REFRESH_CRON=@every 15s
PROMETHEUS_ENABLE_ALERT=0
PROMETHEUS_ENABLE_RECORD=0
# 告警推送地址:指向 webhook 进程(cmd/webhook)的 /api/v1/alerts/receive,不是主后端;端口须与 webhook 实际监听端口一致
# 写法:完整 URL 的 scheme 建议写小写 http:// 或 https://,不区分大小写(w1 119c332 起 alert_cache.go 用 hasPrefixFold,
# HTTP://、Https:// 也按完整 URL 处理;合入 w1 前的旧代码按区分大小写的前缀判断,所以统一写小写);也可只写 host:port(按 http 处理)。
# (本分支用仓库 config/webhook.yaml 时为 8889,没有配置文件时为 8888,见下方 WEBHOOK_PORT 说明)。
# 发布栈(REL-03A 合入后)compose 把 backend 的该值设为 ${PROMETHEUS_ALERT_WEBHOOK_ADDR:-http://webhook:8889/api/v1/alerts/receive}:
# 默认指向 Compose 内的 webhook 服务;只有 Alertmanager 在 Compose 网络外时才在 deploy/release/.env 里覆盖(webhook 默认不发布端口,
# 需自行暴露)。不要把这里的 localhost 值带进发布栈:.env 或 shell 里导出的同名变量都会覆盖 compose 默认值。
PROMETHEUS_ALERT_WEBHOOK_ADDR=http://localhost:8889/api/v1/alerts/receive
PROMETHEUS_ALERT_WEBHOOK_FILE_DIR=/tmp/webhook_files
# HTTP SD 接口在主后端上,端口与 SERVER_PORT 一致(代码默认 8889)。
PROMETHEUS_HTTP_SD_API=http://localhost:8889/api/not_auth/getTreeNodeBindIps
# Mock配置
MOCK_ENABLED=true
# 定时任务配置(可选)
# CRON_ALLOW_LOCAL_EXEC 默认 false:命令行(2)/脚本(4)类定时任务不在后端主机本地执行,已有的这两类任务会停止执行。
# 设为 true 可保留这两类任务;scripts/integration/cron_crash_smoke.py 也要求 true。
# CRON_ALLOW_LOCAL_EXEC=
# ============================================================================
# 通知配置
# ============================================================================
# 邮箱通知配置
NOTIFICATION_EMAIL_ENABLED=true
NOTIFICATION_EMAIL_SMTP_HOST=smtp.qq.com
NOTIFICATION_EMAIL_SMTP_PORT=587
# 条件必填:NOTIFICATION_EMAIL_ENABLED=true 时需要 USERNAME/PASSWORD
NOTIFICATION_EMAIL_USERNAME=
NOTIFICATION_EMAIL_PASSWORD=
NOTIFICATION_EMAIL_FROM_NAME=AI-CloudOps
NOTIFICATION_EMAIL_MAX_RETRIES=3
NOTIFICATION_EMAIL_RETRY_INTERVAL=5m
NOTIFICATION_EMAIL_TIMEOUT=30s
NOTIFICATION_EMAIL_USE_TLS=true
# 飞书通知配置
NOTIFICATION_FEISHU_ENABLED=true
# 条件必填:NOTIFICATION_FEISHU_ENABLED=true 时需要 APP_ID/APP_SECRET
NOTIFICATION_FEISHU_APP_ID=
NOTIFICATION_FEISHU_APP_SECRET=
NOTIFICATION_FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/v2/hook/
NOTIFICATION_FEISHU_PRIVATE_MESSAGE_API=https://open.feishu.cn/open-apis/im/v1/messages
NOTIFICATION_FEISHU_TENANT_ACCESS_TOKEN_API=https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
NOTIFICATION_FEISHU_MAX_RETRIES=3
NOTIFICATION_FEISHU_RETRY_INTERVAL=5m
NOTIFICATION_FEISHU_TIMEOUT=10s
# ============================================================================
# Webhook子系统配置
# ============================================================================
# Webhook基础配置
# webhook 进程(cmd/webhook)必填:完整 MySQL DSN,格式同 MYSQL_ADDR;webhook 不读 MYSQL_ADDR,需单独设置。
# 发布栈 deploy/release/compose.yaml 有 webhook 服务:该值由 scripts/release-env.py 写入 deploy/release/.env,经 compose 注入;
# 本机直接运行或单独部署 webhook 时自行设置。
WEBHOOK_MYSQL_ADDR=
# WEBHOOK_PORT:webhook(cmd/webhook)监听端口;优先级 WEBHOOK_PORT > 配置文件 > 默认 8889。
# 空串视为未设置;端口须为 1-65535 的纯数字,前导零按十进制处理(检查脚本会更保守地拒绝前导零)。
# 用 --config 指定配置文件时,port 写在 config/webhook.yaml 同样的 webhook: 根节点下。
# 平铺 webhook 字段、大小写重复键和多文档会拒绝启动;没有根节点时输出 [配置告警] 后继续启动。
# 主后端(SERVER_PORT)默认同为 8889;同一台机器同时运行时用 WEBHOOK_PORT 错开端口,
# 同步修改 PROMETHEUS_ALERT_WEBHOOK_ADDR。发布 compose 不传 WEBHOOK_PORT,容器监听镜像配置的 8889。
WEBHOOK_PORT=8889
# 整数字段只接受十进制整数(拒绝负数、10.0、前导零及进制前缀),空环境变量视为未设置。
# fixed_workers: 1-1024;default_upgrade_minutes: 1-10080;common_map_renew_interval_seconds: 1-86400;
# request_timeout_seconds: 1-600,0 不允许;超出范围时拒绝启动。
WEBHOOK_FIXED_WORKERS=10
WEBHOOK_FRONT_DOMAIN=http://localhost:3000
WEBHOOK_BACKEND_DOMAIN=http://localhost:8889
WEBHOOK_DEFAULT_UPGRADE_MINUTES=60
WEBHOOK_ALERT_MANAGER_API=http://localhost:9093
WEBHOOK_COMMON_MAP_RENEW_INTERVAL_SECONDS=300
# Webhook飞书配置
# 群聊消息地址:webhook 按 content.go SentFeishuGroup 用 "<本值>/<发送组的群机器人 token>" 拼接,
# 所以写到 bot/v2/hook 为止、末尾不加斜杠,拼出 https://open.feishu.cn/open-apis/bot/v2/hook/<token>。
# 不要写 im/v1/messages(那是私聊/应用消息接口)。
WEBHOOK_IM_FEISHU_GROUP_MESSAGE_API=https://open.feishu.cn/open-apis/bot/v2/hook
WEBHOOK_IM_FEISHU_REQUEST_TIMEOUT_SECONDS=10
WEBHOOK_IM_FEISHU_PRIVATE_ROBOT_APP_ID=
WEBHOOK_IM_FEISHU_PRIVATE_ROBOT_APP_SECRET=
WEBHOOK_IM_FEISHU_TENANT_ACCESS_TOKEN_API=https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
# ============================================================================
# 外部服务配置 (仅支持环境变量)
# ============================================================================
# 阿里云配置
ALIYUN_ACCESS_KEY_ID=
ALIYUN_ACCESS_KEY_SECRET=
# LLM配置
LLM_API_KEY=
LLM_BASE_URL=https://xxx/v1
# 飞书Webhook
# 形如 https://open.feishu.cn/open-apis/bot/v2/hook/<token>,token 属于凭据
FEISHU_WEBHOOK=
# Tavily搜索配置
TAVILY_API_KEY=
# AI service gateway (same key as Python service; never expose to the browser)
AIOPS_BASE_URL=http://cloudops-aiops:8080
# 条件必填:production 下配置了 AIOPS_BASE_URL 时需要,≥32 字符
AIOPS_API_KEY=
# Exact browser origins, comma-separated. Empty allows same-origin requests only.
SERVER_ALLOWED_ORIGINS=http://localhost:5666
# Set only for the first empty-database boot, then remove. Minimum 12 characters.
BOOTSTRAP_ADMIN_PASSWORD=