OTel: support unknown languages (#110905)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { LOG_LINE_BODY_FIELD_NAME } from '../LogDetailsBody';
|
||||
import { createLogLine } from '../mocks/logRow';
|
||||
|
||||
import { getDisplayedFieldsForLogs, getOtelFormattedBody } from './formats';
|
||||
import { getDisplayedFieldsForLogs, getOtelFormattedBody, OTEL_PROBE_FIELD } from './formats';
|
||||
|
||||
describe('getDisplayedFieldsForLogs', () => {
|
||||
test('Does not return displayed fields if not an OTel log line', () => {
|
||||
@@ -10,19 +10,30 @@ describe('getDisplayedFieldsForLogs', () => {
|
||||
expect(getDisplayedFieldsForLogs([log])).toEqual([]);
|
||||
});
|
||||
|
||||
test('Does not return displayed fields if telemetry_sdk_language is empty', () => {
|
||||
const log = createLogLine({ labels: { severity_number: '1' }, entry: `place="luna" 1ms 3 KB` });
|
||||
test('Does not return displayed fields if the OTel probe field is not present', () => {
|
||||
const log = createLogLine({ labels: { severity_level: '1' }, entry: `place="luna" 1ms 3 KB` });
|
||||
|
||||
expect(getDisplayedFieldsForLogs([log])).toEqual([]);
|
||||
});
|
||||
|
||||
test('Does not return displayed fields if telemetry_sdk_language is empty', () => {
|
||||
test('Returns displayed fields if the OTel probe field is present', () => {
|
||||
const log = createLogLine({
|
||||
labels: { severity_number: '1', telemetry_sdk_language: 'php', scope_name: 'scope' },
|
||||
labels: { [OTEL_PROBE_FIELD]: '1', telemetry_sdk_language: 'php', scope_name: 'scope' },
|
||||
entry: `place="luna" 1ms 3 KB`,
|
||||
});
|
||||
|
||||
expect(getDisplayedFieldsForLogs([log])).toEqual(['scope_name', LOG_LINE_BODY_FIELD_NAME]);
|
||||
expect(log.otelLanguage).toBe('php');
|
||||
});
|
||||
|
||||
test('Returns displayed fields if the OTel probe field is present and the language unknown', () => {
|
||||
const log = createLogLine({
|
||||
labels: { [OTEL_PROBE_FIELD]: '1', scope_name: 'scope' },
|
||||
entry: `place="luna" 1ms 3 KB`,
|
||||
});
|
||||
|
||||
expect(getDisplayedFieldsForLogs([log])).toEqual(['scope_name', LOG_LINE_BODY_FIELD_NAME]);
|
||||
expect(log.otelLanguage).toBe('unknown');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@ import { LogListModel } from '../panel/processing';
|
||||
/**
|
||||
* The presence of this field along log fields determines OTel origin.
|
||||
*/
|
||||
const OTEL_PROBE_FIELD = 'severity_number';
|
||||
export const OTEL_PROBE_FIELD = 'severity_number';
|
||||
const OTEL_LANGUAGE_UNKNOWN = 'unknown';
|
||||
export function identifyOTelLanguages(logs: LogListModel[] | LogRowModel[]): string[] {
|
||||
const languagesSet = new Set<string>();
|
||||
logs.forEach((log) => {
|
||||
@@ -22,8 +23,8 @@ export function identifyOTelLanguage(log: LogListModel | LogRowModel): string |
|
||||
if ('otelLanguage' in log && log.otelLanguage) {
|
||||
return log.otelLanguage;
|
||||
}
|
||||
return log.labels[OTEL_PROBE_FIELD] !== undefined && log.labels.telemetry_sdk_language
|
||||
? log.labels.telemetry_sdk_language
|
||||
return log.labels[OTEL_PROBE_FIELD] !== undefined
|
||||
? (log.labels.telemetry_sdk_language ?? OTEL_LANGUAGE_UNKNOWN)
|
||||
: undefined;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user