OTel: support unknown languages (#110905)

This commit is contained in:
Matias Chomicki
2025-09-10 13:31:17 -07:00
committed by GitHub
parent 8dd72408b2
commit de331407fe
2 changed files with 20 additions and 8 deletions
@@ -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;
} }