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
62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package clickhousesystemtablesreceiver
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"go.opentelemetry.io/collector/consumer"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type mockClickhouseQuerrier struct {
|
|
tsNow uint32
|
|
|
|
nextScrapeResult []QueryLog
|
|
}
|
|
|
|
var _ clickhouseQuerier = (*mockClickhouseQuerrier)(nil)
|
|
|
|
func (t *mockClickhouseQuerrier) scrapeQueryLog(
|
|
ctx context.Context, minTs uint32, maxTs uint32,
|
|
) ([]QueryLog, error) {
|
|
return t.nextScrapeResult, nil
|
|
}
|
|
|
|
func (t *mockClickhouseQuerrier) unixTsNow(ctx context.Context) (
|
|
uint32, error,
|
|
) {
|
|
return t.tsNow, nil
|
|
}
|
|
|
|
func newTestReceiver(
|
|
ch clickhouseQuerier,
|
|
scrapeIntervalSeconds uint32,
|
|
scrapeDelaySeconds uint32,
|
|
nextConsumer consumer.Logs,
|
|
) (*systemTablesReceiver, error) {
|
|
config := zap.NewProductionConfig()
|
|
config.OutputPaths = []string{"stdout"}
|
|
logger, err := config.Build()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &systemTablesReceiver{
|
|
scrapeIntervalSeconds: scrapeIntervalSeconds,
|
|
scrapeDelaySeconds: scrapeDelaySeconds,
|
|
clickhouse: ch,
|
|
nextConsumer: nextConsumer,
|
|
logger: logger,
|
|
}, nil
|
|
}
|
|
|
|
func makeTestQueryLog(hostname string, eventTime time.Time, query string) QueryLog {
|
|
return QueryLog{
|
|
Hostname: hostname,
|
|
EventType: "QueryFinish",
|
|
EventTime: eventTime,
|
|
EventTimeMicroseconds: eventTime,
|
|
Query: query,
|
|
}
|
|
}
|