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