Skip to content

Commit 4e2be2d

Browse files
authored
Merge pull request #2 from sv-splunk/oracle_draft_attrs
Oracle additional attributes
2 parents 7e5b5b4 + 74e948b commit 4e2be2d

File tree

8 files changed

+72
-13
lines changed

8 files changed

+72
-13
lines changed

receiver/oracledbreceiver/documentation.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,11 @@ sample query
400400
| db.query.text | The text of the database query being executed. | Any Str |
401401
| db.system.name | The database management system (DBMS) product as identified by the client instrumentation. | Any Str |
402402
| user.name | Database user name under which a session is connected to | Any Str |
403-
| client.address | Identifies the name of the machine (host) from which the database client is connecting to the Oracle database. | Any Str |
403+
| db.namespace | The database name. | Any Str |
404+
| client.address | Hostname or address of the client. | Any Str |
405+
| client.port | TCP port used by the client. | Any Int |
406+
| network.peer.address | IP address of the peer client. | Any Str |
407+
| network.peer.port | TCP port used by the peer client. | Any Int |
404408
| oracledb.plan_hash_value | Binary hash value calculated on the query execution plan and used to identify similar query execution plans, reported in the HEX format. | Any Str |
405409
| oracledb.sql_id | The SQL ID of the query. | Any Str |
406410
| oracledb.child_number | The child number of the query. | Any Str |

receiver/oracledbreceiver/internal/metadata/generated_logs.go

Lines changed: 7 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

receiver/oracledbreceiver/internal/metadata/generated_logs_test.go

Lines changed: 13 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

receiver/oracledbreceiver/metadata.yaml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,20 @@ attributes:
101101
description: Binary hash value calculated on the query execution plan and used to identify similar query execution plans, reported in the HEX format.
102102
type: string
103103
client.address:
104-
description: Identifies the name of the machine (host) from which the database client is connecting to the Oracle database.
104+
description: Hostname or address of the client.
105105
type: string
106+
client.port:
107+
description: TCP port used by the client.
108+
type: int
109+
db.namespace:
110+
description: The database name.
111+
type: string
112+
network.peer.address:
113+
description: IP address of the peer client.
114+
type: string
115+
network.peer.port:
116+
description: TCP port used by the peer client.
117+
type: int
106118
oracledb.sid:
107119
description: ID of the Oracle Server session.
108120
type: string
@@ -183,7 +195,11 @@ events:
183195
- db.query.text
184196
- db.system.name
185197
- user.name
198+
- db.namespace
186199
- client.address
200+
- client.port
201+
- network.peer.address
202+
- network.peer.port
187203
- oracledb.plan_hash_value
188204
- oracledb.sql_id
189205
- oracledb.child_number

receiver/oracledbreceiver/scraper.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,8 @@ func (s *oracleScraper) collectQuerySamples(ctx context.Context) (plog.Logs, err
558558
const sqlText = "SQL_FULLTEXT"
559559
const username = "USERNAME"
560560
const waitclass = "WAIT_CLASS"
561+
const port = "PORT"
562+
const serviceName = "SERVICE_NAME"
561563

562564
var scrapeErrors []error
563565

@@ -591,9 +593,15 @@ func (s *oracleScraper) collectQuerySamples(ctx context.Context) (plog.Logs, err
591593
scrapeErrors = append(scrapeErrors, fmt.Errorf("failed to parse int64 for Duration, value was %s: %w", row[duration], err))
592594
}
593595

594-
s.lb.RecordDbServerQuerySampleEvent(ctx, timestamp, obfuscatedSQL, dbSystemNameVal, row[username], row[hostName], queryPlanHashVal, row[sqlID], row[sqlChildNumber],
595-
row[sid], row[serialNumber], row[process], row[schemaName], row[program], row[module], row[status], row[state], row[waitclass],
596-
row[event], row[objectName], row[objectType], row[osUser], queryDuration)
596+
clientPort, err := strconv.ParseInt(row[port], 10, 64)
597+
if err != nil {
598+
clientPort = 0
599+
}
600+
601+
s.lb.RecordDbServerQuerySampleEvent(ctx, timestamp, obfuscatedSQL, dbSystemNameVal, row[username], row[serviceName], row[hostName],
602+
clientPort, row[hostName], clientPort, queryPlanHashVal, row[sqlID], row[sqlChildNumber], row[sid], row[serialNumber], row[process],
603+
row[schemaName], row[program], row[module], row[status], row[state], row[waitclass], row[event], row[objectName], row[objectType],
604+
row[osUser], queryDuration)
597605
}
598606

599607
out := s.lb.Emit(metadata.WithLogsResource(rb.Emit()))

receiver/oracledbreceiver/scraper_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ import (
1616
"testing"
1717

1818
lru "github.com/hashicorp/golang-lru/v2"
19-
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden"
20-
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/plogtest"
21-
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver/internal/metadata"
2219
"github.com/stretchr/testify/assert"
2320
"github.com/stretchr/testify/require"
2421
"go.opentelemetry.io/collector/component"
@@ -27,6 +24,10 @@ import (
2724
"go.opentelemetry.io/collector/receiver/receivertest"
2825
"go.opentelemetry.io/collector/scraper/scrapererror"
2926
"go.uber.org/zap"
27+
28+
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden"
29+
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/plogtest"
30+
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver/internal/metadata"
3031
)
3132

3233
func TestScraper_ErrorOnStart(t *testing.T) {

receiver/oracledbreceiver/templates/oracleQuerySampleSql.tmpl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ S.PROGRAM,
1414
S.MODULE,
1515
S.STATUS,
1616
S.STATE,
17+
S.PORT,
18+
S.SERVICE_NAME,
1719
Q.PLAN_HASH_VALUE,
1820
NVL((SYSDATE - SQL_EXEC_START) * 86400,0) AS DURATION_SEC,
1921
CASE WHEN S.TIME_REMAINING_MICRO IS NOT NULL

receiver/oracledbreceiver/testdata/expectedSamplesFile.yaml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,21 @@ resourceLogs:
1919
- key: user.name
2020
value:
2121
stringValue: ""
22+
- key: db.namespace
23+
value:
24+
stringValue: ""
2225
- key: client.address
2326
value:
2427
stringValue: ""
28+
- key: client.port
29+
value:
30+
intValue: "0"
31+
- key: network.peer.address
32+
value:
33+
stringValue: ""
34+
- key: network.peer.port
35+
value:
36+
intValue: "0"
2537
- key: oracledb.plan_hash_value
2638
value:
2739
stringValue: ""
@@ -76,7 +88,7 @@ resourceLogs:
7688
body: {}
7789
eventName: db.server.query_sample
7890
spanId: ""
79-
timeUnixNano: "1750964071570576000"
91+
timeUnixNano: "1751324007889535000"
8092
traceId: ""
8193
scope:
8294
name: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver

0 commit comments

Comments
 (0)