This commit is contained in:
Egor Matveev 2025-06-14 03:25:03 +03:00
parent 5ba0be8e30
commit d55f63ae79
4 changed files with 17 additions and 14 deletions

View File

@ -1,23 +1,20 @@
version: "3.4" version: "3.4"
services: services:
queues: monitoring:
image: mathwave/sprint-repo:monitoring image: mathwave/sprint-repo:monitoring
networks: networks:
- monitoring - clickhouse
environment: environment:
MONGO_HOST: "mongo.sprinthub.ru" CLICKHOUSE_PASSWORD: $CLICKHOUSE_PASSWORD_PROD
MONGO_PASSWORD: $MONGO_PASSWORD_PROD
deploy: deploy:
mode: replicated mode: replicated
restart_policy: restart_policy:
condition: any condition: any
placement:
constraints: [node.labels.stage == production]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first order: start-first
networks: networks:
queues: clickhouse:
external: true external: true

View File

@ -57,15 +57,16 @@ func Migrate() error {
context.TODO(), context.TODO(),
`CREATE TABLE IF NOT EXISTS endpoints ( `CREATE TABLE IF NOT EXISTS endpoints (
timestamp DateTime, timestamp DateTime,
service_name LowCardinality(String), service LowCardinality(String),
environment LowCardinality(String),
endpoint LowCardinality(String), endpoint LowCardinality(String),
status_code UInt16, status_code UInt16,
response_time_ms UInt32, response_time_ms UInt32,
request_method LowCardinality(String) method LowCardinality(String)
) )
ENGINE = MergeTree ENGINE = MergeTree
PARTITION BY toYYYYMM(timestamp) PARTITION BY toYYYYMM(timestamp)
ORDER BY (service_name, endpoint, request_method, timestamp);`, ORDER BY (service, environment, endpoint, request_method, timestamp);`,
) )
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
@ -76,14 +77,15 @@ func Migrate() error {
context.TODO(), context.TODO(),
`CREATE TABLE IF NOT EXISTS tasks ( `CREATE TABLE IF NOT EXISTS tasks (
timestamp DateTime, timestamp DateTime,
service_name LowCardinality(String), service LowCardinality(String),
queue_name LowCardinality(String), environment LowCardinality(String),
queue LowCardinality(String),
success Bool, success Bool,
execution_time_ms UInt32 execution_time_ms UInt32
) )
ENGINE = MergeTree ENGINE = MergeTree
PARTITION BY toYYYYMM(timestamp) PARTITION BY toYYYYMM(timestamp)
ORDER BY (service_name, queue_name, timestamp);`, ORDER BY (service, environment, queue, timestamp);`,
) )
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)

View File

@ -11,6 +11,7 @@ import (
type EndpointMetric struct { type EndpointMetric struct {
Timestamp time.Time `json:"timestamp"` Timestamp time.Time `json:"timestamp"`
Service string `json:"service"` Service string `json:"service"`
Environment string `json:"environment"`
Endpoint string `json:"endpoint"` Endpoint string `json:"endpoint"`
StatusCode int `json:"status_code"` StatusCode int `json:"status_code"`
ResponseTime int `json:"response_time"` ResponseTime int `json:"response_time"`
@ -26,6 +27,7 @@ func AddEndpointMetric(metric EndpointMetric) error {
err = batch.Append( err = batch.Append(
metric.Timestamp, metric.Timestamp,
metric.Service, metric.Service,
metric.Environment,
metric.Endpoint, metric.Endpoint,
metric.StatusCode, metric.StatusCode,
metric.ResponseTime, metric.ResponseTime,

View File

@ -8,6 +8,7 @@ import (
type TaskMetric struct { type TaskMetric struct {
Timestamp time.Time `json:"timestamp"` Timestamp time.Time `json:"timestamp"`
Service string `json:"service"` Service string `json:"service"`
Environment string `json:"environment"`
Queue string `json:"queue"` Queue string `json:"queue"`
Success bool `json:"success"` Success bool `json:"success"`
ExecutionTimeMs int `json:"execution_time_ms"` ExecutionTimeMs int `json:"execution_time_ms"`
@ -22,6 +23,7 @@ func AddTaskMetric(metric TaskMetric) error {
err = batch.Append( err = batch.Append(
metric.Timestamp, metric.Timestamp,
metric.Service, metric.Service,
metric.Environment,
metric.Queue, metric.Queue,
metric.Success, metric.Success,
metric.ExecutionTimeMs, metric.ExecutionTimeMs,