Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
23f91e4
feat(observability): 添加HTTP请求时延指标收集功能
JaD1ng Sep 19, 2025
d5dc444
feat(observability): 添加HTTP延迟注入功能并优化指标收集
JaD1ng Sep 19, 2025
c8ba099
refactor(metrics): 简化HTTP时延指标名称并更新健康检查脚本
JaD1ng Sep 19, 2025
334a81d
feat(prometheus_adapter): 新增prometheus_adapter实现指标查询功能
JaD1ng Sep 20, 2025
48b34b0
fix(prometheus_adapter): 更新默认Prometheus地址并完善文档
JaD1ng Sep 23, 2025
855c514
feat(告警): 实现告警规则同步功能并重构API层
JaD1ng Sep 23, 2025
54b8f4d
feat(prometheus_adapter): 实现告警规则增量更新功能
JaD1ng Sep 24, 2025
f6c1ad1
feat(observability): 修复Prometheus告警规则支持并优化规则同步机制
JaD1ng Sep 24, 2025
0b636a1
refactor(prometheus_adapter): 重构告警规则管理API和逻辑
JaD1ng Sep 25, 2025
40d41e8
feat(prometheus_adapter): 实现告警规则持久化与优雅关闭功能
JaD1ng Sep 25, 2025
271763e
feat(prometheus): 实现主动拉取告警的webhook服务
JaD1ng Sep 25, 2025
b6e76bd
feat(配置): 支持从多个默认路径加载配置文件
JaD1ng Sep 25, 2025
4bc9b15
feat(prometheus): 实现Alertmanager兼容API并重构告警处理
JaD1ng Sep 25, 2025
285412f
feat(prometheus_adapter): 添加获取绑定地址方法并优化端口配置逻辑
JaD1ng Sep 25, 2025
705363e
fix(prometheus_adapter): 更新告警webhook路径并添加REDACTED字段
JaD1ng Sep 28, 2025
6de1793
feat(告警规则): 添加删除规则模板和元信息的API接口
JaD1ng Sep 28, 2025
4c7dab9
refactor(prometheus_adapter): 合并并扩展告警规则测试脚本
JaD1ng Sep 28, 2025
4555e06
fix(prometheus_adapter): 改进服务进程管理和告警表达式生成
JaD1ng Sep 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions cmd/prometheus_adapter/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package main

import (
"context"
"os"
"os/signal"
"syscall"
"time"

"github.com/fox-gonic/fox"
"github.com/qiniu/zeroops/internal/config"
prometheusadapter "github.com/qiniu/zeroops/internal/prometheus_adapter"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)

func main() {
// 配置日志
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})

log.Info().Msg("Starting Prometheus Adapter server")

// 加载 Prometheus Adapter 配置
adapter, err := prometheusadapter.NewPrometheusAdapterServer(&config.Config{})
if err != nil {
log.Fatal().Err(err).Msg("Failed to create Prometheus Adapter server")
}

// 获取 Prometheus Adapter 内部配置的绑定地址
bindAddr := ":9999" // 默认端口
if adapter.GetBindAddr() != "" {
bindAddr = adapter.GetBindAddr()
}

// 如果有环境变量,优先使用环境变量的端口
if port := os.Getenv("ADAPTER_PORT"); port != "" {
bindAddr = ":" + port
}

// 更新配置(虽然已经创建了 adapter,但需要端口信息用于启动服务器)
cfg := &config.Config{
Server: config.ServerConfig{
BindAddr: bindAddr,
},
}

// 创建路由
router := fox.New()

// 启动 API
if err := adapter.UseApi(router); err != nil {
log.Fatal().Err(err).Msg("Failed to setup API routes")
}

// 设置信号处理
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)

// 创建一个用于优雅关闭的context
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

// 在goroutine中启动服务器
serverErr := make(chan error, 1)
go func() {
log.Info().Msgf("Starting Prometheus Adapter on %s", cfg.Server.BindAddr)
if err := router.Run(cfg.Server.BindAddr); err != nil {
serverErr <- err
}
}()

// 等待信号或服务器错误
select {
case sig := <-sigChan:
log.Info().Msgf("Received signal %s, shutting down...", sig)

// 创建超时context
shutdownCtx, shutdownCancel := context.WithTimeout(ctx, 10*time.Second)
defer shutdownCancel()

// 调用adapter的Shutdown方法
if err := adapter.Close(shutdownCtx); err != nil {
log.Error().Err(err).Msg("Error during shutdown")
}

log.Info().Msg("Shutdown complete")

case err := <-serverErr:
log.Fatal().Err(err).Msg("Server error")
}
}
Loading