Skip to content

Commit 9dae10e

Browse files
committed
Adding limit for query samples collection
1 parent 14fef66 commit 9dae10e

File tree

5 files changed

+24
-4
lines changed

5 files changed

+24
-4
lines changed

receiver/oracledbreceiver/config.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ type TopQueryCollection struct {
3535
QueryCacheSize int `mapstructure:"query_cache_size"`
3636
}
3737

38+
type QuerySample struct {
39+
MaxRowsPerQuery uint64 `mapstructure:"max_rows_per_query"`
40+
41+
// prevent unkeyed literal initialization
42+
_ struct{}
43+
}
44+
3845
type Config struct {
3946
DataSource string `mapstructure:"datasource"`
4047
Endpoint string `mapstructure:"endpoint"`
@@ -46,6 +53,7 @@ type Config struct {
4653
metadata.LogsBuilderConfig `mapstructure:",squash"`
4754

4855
TopQueryCollection `mapstructure:"top_query_collection"`
56+
QuerySample `mapstructure:"query_sample_collection"`
4957
}
5058

5159
func (c Config) Validate() error {

receiver/oracledbreceiver/factory.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ func createDefaultConfig() component.Config {
4444
ControllerConfig: cfg,
4545
MetricsBuilderConfig: metadata.DefaultMetricsBuilderConfig(),
4646
LogsBuilderConfig: metadata.DefaultLogsBuilderConfig(),
47+
QuerySample: QuerySample{
48+
MaxRowsPerQuery: 100,
49+
},
4750
TopQueryCollection: TopQueryCollection{
4851
MaxQuerySampleCount: 1000,
4952
TopQueryCount: 200,
@@ -120,7 +123,7 @@ func createLogsReceiverFunc(sqlOpenerFunc sqlOpenerFunc, clientProviderFunc clie
120123

121124
mp, err := newLogsScraper(logsBuilder, sqlCfg.LogsBuilderConfig, sqlCfg.ControllerConfig, settings.Logger, func() (*sql.DB, error) {
122125
return sqlOpenerFunc(getDataSource(*sqlCfg))
123-
}, clientProviderFunc, instanceName, metricCache, sqlCfg.TopQueryCollection, hostName)
126+
}, clientProviderFunc, instanceName, metricCache, sqlCfg.TopQueryCollection, sqlCfg.QuerySample, hostName)
124127
if err != nil {
125128
return nil, err
126129
}

receiver/oracledbreceiver/scraper.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ type oracleScraper struct {
128128
logsBuilderConfig metadata.LogsBuilderConfig
129129
metricCache *lru.Cache[string, map[string]int64]
130130
topQueryCollectCfg TopQueryCollection
131+
querySampleCfg QuerySample
131132
}
132133

133134
func newScraper(metricsBuilder *metadata.MetricsBuilder, metricsBuilderConfig metadata.MetricsBuilderConfig, scrapeCfg scraperhelper.ControllerConfig, logger *zap.Logger, providerFunc dbProviderFunc, clientProviderFunc clientProviderFunc, instanceName string, hostName string) (scraper.Metrics, error) {
@@ -146,7 +147,7 @@ func newScraper(metricsBuilder *metadata.MetricsBuilder, metricsBuilderConfig me
146147

147148
func newLogsScraper(logsBuilder *metadata.LogsBuilder, logsBuilderConfig metadata.LogsBuilderConfig, scrapeCfg scraperhelper.ControllerConfig,
148149
logger *zap.Logger, providerFunc dbProviderFunc, clientProviderFunc clientProviderFunc, instanceName string, metricCache *lru.Cache[string, map[string]int64],
149-
topQueryCollectCfg TopQueryCollection, hostName string,
150+
topQueryCollectCfg TopQueryCollection, querySampleCfg QuerySample, hostName string,
150151
) (scraper.Logs, error) {
151152
s := &oracleScraper{
152153
lb: logsBuilder,
@@ -158,6 +159,7 @@ func newLogsScraper(logsBuilder *metadata.LogsBuilder, logsBuilderConfig metadat
158159
instanceName: instanceName,
159160
metricCache: metricCache,
160161
topQueryCollectCfg: topQueryCollectCfg,
162+
querySampleCfg: querySampleCfg,
161163
hostName: hostName,
162164
}
163165
return scraper.NewLogs(s.scrapeLogs, scraper.WithShutdown(s.shutdown), scraper.WithStart(s.start))
@@ -562,7 +564,7 @@ func (s *oracleScraper) collectQuerySamples(ctx context.Context) (plog.Logs, err
562564
dbClients := s.samplesQueryClient
563565
timestamp := pcommon.NewTimestampFromTime(time.Now())
564566

565-
rows, err := dbClients.metricRows(ctx)
567+
rows, err := dbClients.metricRows(ctx, s.querySampleCfg.MaxRowsPerQuery)
566568
if err != nil {
567569
scrapeErrors = append(scrapeErrors, fmt.Errorf("error executing %s: %w", samplesQuery, err))
568570
}

receiver/oracledbreceiver/templates/oracleQuerySampleSql.tmpl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,5 @@ CASE WHEN S.PLSQL_ENTRY_OBJECT_ID IS NOT NULL
2727
FROM V$SESSION S LEFT JOIN DBA_PROCEDURES P ON S.PLSQL_ENTRY_OBJECT_ID = P.OBJECT_ID
2828
AND S.PLSQL_ENTRY_SUBPROGRAM_ID = P.SUBPROGRAM_ID
2929
LEFT JOIN V$SQL Q ON S.SQL_ID = Q.SQL_ID
30-
WHERE S.SQL_ID IS NOT NULL AND S.STATUS = 'ACTIVE'
30+
WHERE S.SQL_ID IS NOT NULL AND S.STATUS = 'ACTIVE'
31+
FETCH FIRST :1 ROWS ONLY

receiver/oracledbreceiver/testdata/config.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ oracledb:
66
username: otel
77
# Refer to Oracle Go Driver go_ora documentation for full connection string options
88
datasource: "oracle://otel:password@localhost:51521/XE"
9+
top_query_collection:
10+
max_query_sample_count: 222
11+
top_query_count: 200
12+
query_cache_size: 1000
13+
query_sample_collection:
14+
max_rows_per_query: 200
915
metrics:
1016
oracledb.exchange_deadlocks:
1117
enabled: false

0 commit comments

Comments
 (0)