mirror of
https://github.com/hanzoai/otel-collector.git
synced 2026-11-03 02:20:04 +00:00
* feat: get signozclickhousesystemlogsreceiver started * chore: put together receiver scaffolding for clickhousesystemtablesreceiver * chore: add clickhousesystemstablereceiver to list of available otel collector receivers * feat: add impl for unixTsNowAtClickhouse * feat: get query_log querying logic started * feat: flesh out query_log scraping loop * feat: finish up with e2e tracer for query log receiver * chore: add example config for clickhousesystemtablesreceiver * chore: get receiver_test started * chore: refactor clickhouse calls behind an interface for easier mocking in tests * chore: flesh out receiver happy path test * chore: wrap up receiver lifecycle test * chore: add test for receiver start and shutdown * chore: add config validation tests * chore: some cleanup * chore: hook log emitted telemetry on receiver * chore: some more cleanup * chore: some more cleanup * chore: some more cleanup * chore: some more cleanup * chore: some more cleanup * chore: some more cleanup * chore: some more cleanup * chore: some more cleanup * chore: address some review feedback * chore: address some more review feedback * feat: add support for specifying a cluster name when scraping clustered deployments * chore: some more cleanup
38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
package clickhousesystemtablesreceiver
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"go.uber.org/multierr"
|
|
)
|
|
|
|
type QueryLogScrapeConfig struct {
|
|
ScrapeIntervalSeconds uint32 `mapstructure:"scrape_interval_seconds"`
|
|
|
|
// Must be configured to a value greater than flush_interval_milliseconds setting for query_log
|
|
// For details see https://clickhouse.com/docs/en/operations/server-configuration-parameters/settings#query-log
|
|
MinScrapeDelaySeconds uint32 `mapstructure:"min_scrape_delay_seconds"`
|
|
}
|
|
|
|
type Config struct {
|
|
DSN string `mapstructure:"dsn"`
|
|
|
|
// Cluster name to use for scraping query log from clustered deployments.
|
|
// If ClusterName is specified, the scrape will target `clusterAllReplicas(cluster_name, system.query_log)`
|
|
ClusterName string `mapstructure:"cluster_name"`
|
|
|
|
QueryLogScrapeConfig QueryLogScrapeConfig `mapstructure:"query_log_scrape_config"`
|
|
}
|
|
|
|
func (cfg *Config) Validate() (err error) {
|
|
if cfg.DSN == "" {
|
|
err = multierr.Append(err, errors.New("dsn must be specified"))
|
|
}
|
|
|
|
if cfg.QueryLogScrapeConfig.MinScrapeDelaySeconds == 0 {
|
|
err = multierr.Append(err, errors.New("query_log_scrape_config.scrape_delay_seconds must be set to a value greater than flush_interval_milliseconds setting for clickhouse query_log table"))
|
|
}
|
|
|
|
return err
|
|
}
|