netmaker/servercfg/clickhouseconf.go
Vishal Dalwadi a4981ffd26
NM-168: Network Flow Logs (#3754)
* feat(go): define flow events;

* feat(go): improve structure;

* feat(go): improve structure;

* feat(go): remove old flow definitions;

* feat(sql): add clickhouse init scripts;

* feat(sql): add protobuf spec;

* fix(sql): store ip as string;

* feat(go): move proto def to grpc dir;

* feat(go): use node instead of host as type; optimize protobuf defs;

* feat(go): add clickhouse db support; add endpoint to query flows;

* fix(go): fix clickhouse config;

* fix(go): use error response structure to report error;

* feat(go): pass flow logging status to netclient;

* feat(go): add peer ip identity map to host peer info;

* feat(go): remove prefix from participant obj fields;

* feat(go): add flow logs enabled field to host;

* feat(go): add filtering to get flow api;

* feat(go): fix record struct;

* feat(go): add exporter url to server config;

* feat(go): add exporter url to server config;

* feat(go): enable flow logs by default;

* feat(go): update nm-quick.sh;

* feat(go): update nm-quick.sh;

* feat(go): update nm-quick.sh;

* feat(go): update nm-quick.sh;

* feat(go): add db initialization logic;

* feat(go): filter by network id;

* fix(go): connection issue;

* fix(go): connection issue;

* fix(go): golang builder version;

* feat(go): add server settings for flow logs;

* feat(go): initialize clickhouse in pro; check for retention;

* feat(go): add exporter feature flags;

* feat(go): add grpc behind caddy;

* feat(go): expose ports correctly;

* fix(go): grpc caddyfile config;

* fix(go): publish exporter feature flags on license validation;

* fix(go): set server name for netmaker exporter;

* fix(go): set server name for netmaker exporter;

* fix(go): check for nil cancel func;

* fix(go): add flow logs field to api host;

* fix(go): add flow logs field to api host;

* fix(go): remove port from grpc setting;

* chore(go): tabs;

* feat(go): introduce egress range participant type;.

* feat(go): rename egress range to egress route for uniform language;

* feat(go): rename egress range to egress route for uniform language;

* feat: add peer addr identity map to host peer update;

* feat: add address identity map to host peer update;

* feat: add address identity map to host peer update;

* feat: set correct from and to args;

* feat: add support for filtering by node;

* feat: use corresponding base image;

* feat: update dockerfile base image version;

* fix: disable flow logs for all host when global settings are changed;
2025-12-12 14:12:00 +04:00

69 lines
1.6 KiB
Go

package servercfg
import (
"os"
"strconv"
"github.com/gravitl/netmaker/config"
)
func GetClickHouseConfig() config.ClickHouseConfig {
return config.ClickHouseConfig{
Host: GetClickHouseHost(),
Port: GetClickHousePort(),
Database: GetClickHouseDB(),
Username: GetClickHouseUser(),
Password: GetClickHousePassword(),
}
}
func GetClickHouseHost() string {
host := "localhost"
if os.Getenv("CLICKHOUSE_HOST") != "" {
host = os.Getenv("CLICKHOUSE_HOST")
} else if config.Config.ClickHouse.Host != "" {
host = config.Config.ClickHouse.Host
}
return host
}
func GetClickHousePort() int32 {
port := int32(9000)
envport, err := strconv.Atoi(os.Getenv("CLICKHOUSE_PORT"))
if err == nil && envport != 0 {
port = int32(envport)
} else if config.Config.ClickHouse.Port != 0 {
port = config.Config.ClickHouse.Port
}
return port
}
func GetClickHouseDB() string {
db := "netmaker"
if os.Getenv("CLICKHOUSE_DB") != "" {
db = os.Getenv("CLICKHOUSE_DB")
} else if config.Config.ClickHouse.Database != "" {
db = config.Config.ClickHouse.Database
}
return db
}
func GetClickHouseUser() string {
user := "netmaker"
if os.Getenv("CLICKHOUSE_USER") != "" {
user = os.Getenv("CLICKHOUSE_USER")
} else if config.Config.ClickHouse.Username != "" {
user = config.Config.ClickHouse.Username
}
return user
}
func GetClickHousePassword() string {
password := "netmaker"
if os.Getenv("CLICKHOUSE_PASS") != "" {
password = os.Getenv("CLICKHOUSE_PASS")
} else if config.Config.ClickHouse.Password != "" {
password = config.Config.ClickHouse.Password
}
return password
}