Skip to content

Commit f089e4a

Browse files
committed
Merge remote-tracking branch 'qiniu/develop'
2 parents 4d6b629 + 1a37c8a commit f089e4a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+5939
-384
lines changed

cmd/prometheus_adapter/main.go

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"os"
6+
"os/signal"
7+
"syscall"
8+
"time"
9+
10+
"github.com/fox-gonic/fox"
11+
"github.com/qiniu/zeroops/internal/config"
12+
prometheusadapter "github.com/qiniu/zeroops/internal/prometheus_adapter"
13+
"github.com/rs/zerolog"
14+
"github.com/rs/zerolog/log"
15+
)
16+
17+
func main() {
18+
// 配置日志
19+
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
20+
21+
log.Info().Msg("Starting Prometheus Adapter server")
22+
23+
// 加载 Prometheus Adapter 配置
24+
adapter, err := prometheusadapter.NewPrometheusAdapterServer(&config.Config{})
25+
if err != nil {
26+
log.Fatal().Err(err).Msg("Failed to create Prometheus Adapter server")
27+
}
28+
29+
// 获取 Prometheus Adapter 内部配置的绑定地址
30+
bindAddr := ":9999" // 默认端口
31+
if adapter.GetBindAddr() != "" {
32+
bindAddr = adapter.GetBindAddr()
33+
}
34+
35+
// 如果有环境变量,优先使用环境变量的端口
36+
if port := os.Getenv("ADAPTER_PORT"); port != "" {
37+
bindAddr = ":" + port
38+
}
39+
40+
// 更新配置(虽然已经创建了 adapter,但需要端口信息用于启动服务器)
41+
cfg := &config.Config{
42+
Server: config.ServerConfig{
43+
BindAddr: bindAddr,
44+
},
45+
}
46+
47+
// 创建路由
48+
router := fox.New()
49+
50+
// 启动 API
51+
if err := adapter.UseApi(router); err != nil {
52+
log.Fatal().Err(err).Msg("Failed to setup API routes")
53+
}
54+
55+
// 设置信号处理
56+
sigChan := make(chan os.Signal, 1)
57+
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
58+
59+
// 创建一个用于优雅关闭的context
60+
ctx, cancel := context.WithCancel(context.Background())
61+
defer cancel()
62+
63+
// 在goroutine中启动服务器
64+
serverErr := make(chan error, 1)
65+
go func() {
66+
log.Info().Msgf("Starting Prometheus Adapter on %s", cfg.Server.BindAddr)
67+
if err := router.Run(cfg.Server.BindAddr); err != nil {
68+
serverErr <- err
69+
}
70+
}()
71+
72+
// 等待信号或服务器错误
73+
select {
74+
case sig := <-sigChan:
75+
log.Info().Msgf("Received signal %s, shutting down...", sig)
76+
77+
// 创建超时context
78+
shutdownCtx, shutdownCancel := context.WithTimeout(ctx, 10*time.Second)
79+
defer shutdownCancel()
80+
81+
// 调用adapter的Shutdown方法
82+
if err := adapter.Close(shutdownCtx); err != nil {
83+
log.Error().Err(err).Msg("Error during shutdown")
84+
}
85+
86+
log.Info().Msg("Shutdown complete")
87+
88+
case err := <-serverErr:
89+
log.Fatal().Err(err).Msg("Server error")
90+
}
91+
}

docs/deploy/schema.sql

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
-- Deploy模块数据库架构
2+
-- 部署相关的主机、实例和版本历史表
3+
4+
-- 创建hosts表:主机信息
5+
CREATE TABLE hosts (
6+
id SERIAL PRIMARY KEY,
7+
name VARCHAR(255) UNIQUE,
8+
ip_address VARCHAR(45) UNIQUE,
9+
is_stopped BOOLEAN
10+
);
11+
12+
-- 创建instances表:服务实例信息
13+
CREATE TABLE instances (
14+
id VARCHAR(255) NOT NULL PRIMARY KEY, -- VARCHAR类型主键,非自增,不为空
15+
service_name VARCHAR(255),
16+
service_version VARCHAR(255),
17+
host_id VARCHAR(255),
18+
host_ip_address VARCHAR(45),
19+
ip_address VARCHAR(45),
20+
port INT,
21+
status VARCHAR(50),
22+
is_stopped BOOLEAN,
23+
-- 保留ip_address和port的组合唯一约束
24+
CONSTRAINT unique_ip_port UNIQUE (ip_address, port)
25+
);
26+
27+
-- 1. 创建service_name和service_version的联合索引
28+
CREATE INDEX idx_instances_service_name_version
29+
ON instances (service_name, service_version);
30+
31+
-- 2. 创建service_name和ip_address的联合索引
32+
CREATE INDEX idx_instances_service_name_ip
33+
ON instances (service_name, ip_address);
34+
35+
-- 3. 创建version_histories表:版本历史记录
36+
CREATE TABLE version_histories (
37+
id SERIAL PRIMARY KEY,
38+
instance_id VARCHAR(255),
39+
service_name VARCHAR(255),
40+
service_version VARCHAR(255),
41+
status VARCHAR(50)
42+
);
43+
44+
-- 初始化主机数据
45+
-- 插入 jfcs1021 主机数据
46+
INSERT INTO hosts (name, ip_address, is_stopped)
47+
VALUES ('jfcs1021', '10.210.10.33', false);
48+
49+
-- 插入 jfcs1022 主机数据
50+
INSERT INTO hosts (name, ip_address, is_stopped)
51+
VALUES ('jfcs1022', '10.210.10.30', false);
52+
53+
-- 插入 jfcs1023 主机数据
54+
INSERT INTO hosts (name, ip_address, is_stopped)
55+
VALUES ('jfcs1023', '10.210.10.31', false);

0 commit comments

Comments
 (0)