用户指出的三个问题,逐条核实后的结论:
1) 「采集日志路径」对 DaemonSet 确实是多余的 —— 确认后端模板里写死了
`replacement: /var/log/pods/*$1/*.log`(按 pod UID 精确匹配容器标准输出),
表单里填的 logPath 对 DaemonSet 完全不参与渲染。
→ 选择 DaemonSet 时隐藏该字段,提交时强制置空。
2) 「可以指定采集多个命名空间」—— 后端**早就支持**:
models.Collector.TargetNamespaces + promtailNamespaceFilter(),
空数组 = 全集群。只是**前端新建弹框没暴露**(编辑弹框里有)。
→ 新建弹框补上多选 chips(全集群 / 各命名空间可点选),并补齐前后端透传:
dto.CreateCollectorRequest.TargetNamespaces
controller → services.CreateCollectorRequest.TargetNamespaces
models.Collector.TargetNamespaces
之前前端即使传了也会被 Go 静默丢弃(无该字段)。
3) 「命名空间」字段语义已在上一提交补了分类型说明:
- DaemonSet:采集器自身部署在哪个命名空间(不影响采什么)
- Sidecar:目标应用 Deployment 所在命名空间
新增 TestDaemonsetTargetNamespacesFilter:
nil → 不生成 namespaces 白名单(全集群)
["astralx"] → 生成且包含 astralx
["astralx","default"] → 两个都在
=== 实测(d45dfa18ecc5)===
前端文案「只采集这些命名空间」「不选 = 采集整个集群…」均已进包
渲染测试 3 种输入全部符合预期
注:本次 docker push latest 遇到 Docker Hub 502,v0.1 成功而 latest 仍指向旧镜像,
导致首次滚动后 Pod 仍是旧代码;重推 latest + 强制重建 Pod 后确认
Pod digest = d45dfa18ecc5 —— 记录这个坑:push 失败必须核对三方 digest。
21 lines
908 B
Go
21 lines
908 B
Go
package dto
|
|
|
|
import "lokistack/models"
|
|
|
|
type CreateCollectorRequest struct {
|
|
Name string `json:"name" binding:"required"`
|
|
Type string `json:"type" binding:"required"`
|
|
LokiDeploymentID uint `json:"lokiDeploymentID" binding:"required"`
|
|
HostID *uint `json:"hostID"`
|
|
ClusterID *uint `json:"clusterID"`
|
|
TargetDeployment string `json:"targetDeployment"`
|
|
Namespace string `json:"namespace"`
|
|
LogPath string `json:"logPath"`
|
|
Labels string `json:"labels"`
|
|
// ScrapeJobs 主机模式的结构化采集项(可选;留空按 LogPath 生成 app + system 两个默认项)
|
|
ScrapeJobs []models.ScrapeJob `json:"scrapeJobs"`
|
|
// TargetNamespaces 仅 k8s-daemonset 使用:只采集这些命名空间的 Pod 日志。
|
|
// 空/不传 = 采集全集群(默认,保持旧行为)。
|
|
TargetNamespaces []string `json:"targetNamespaces"`
|
|
}
|