本文整理匯總了TypeScript中@kbn/elastic-idx.idx函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript idx函數的具體用法?TypeScript idx怎麽用?TypeScript idx使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了idx函數的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: getService
export async function getService(serviceName: string, setup: Setup) {
const { start, end, uiFiltersES, client, config } = setup;
const params = {
index: [
config.get<string>('apm_oss.errorIndices'),
config.get<string>('apm_oss.transactionIndices')
],
body: {
size: 0,
query: {
bool: {
filter: [
{ term: { [SERVICE_NAME]: serviceName } },
{ terms: { [PROCESSOR_EVENT]: ['error', 'transaction'] } },
{ range: rangeFilter(start, end) },
...uiFiltersES
]
}
},
aggs: {
types: {
terms: { field: TRANSACTION_TYPE, size: 100 }
},
agents: {
terms: { field: SERVICE_AGENT_NAME, size: 1 }
}
}
}
};
interface Aggs {
types: {
buckets: BucketAgg[];
};
agents: {
buckets: BucketAgg[];
};
}
const { aggregations } = await client<void, Aggs>('search', params);
const buckets = idx(aggregations, _ => _.types.buckets) || [];
const types = buckets.map(bucket => bucket.key);
const agentName = idx(aggregations, _ => _.agents.buckets[0].key) || '';
return {
serviceName,
types,
agentName
};
}
示例2: getErrorGroup
export async function getErrorGroup({
serviceName,
groupId,
setup
}: {
serviceName: string;
groupId: string;
setup: Setup;
}) {
const { start, end, uiFiltersES, client, config } = setup;
const params = {
index: config.get<string>('apm_oss.errorIndices'),
body: {
size: 1,
query: {
bool: {
filter: [
{ term: { [SERVICE_NAME]: serviceName } },
{ term: { [PROCESSOR_EVENT]: 'error' } },
{ term: { [ERROR_GROUP_ID]: groupId } },
{ range: rangeFilter(start, end) },
...uiFiltersES
],
should: [{ term: { [TRANSACTION_SAMPLED]: true } }]
}
},
sort: [
{ _score: 'desc' }, // sort by _score first to ensure that errors with transaction.sampled:true ends up on top
{ '@timestamp': { order: 'desc' } } // sort by timestamp to get the most recent error
]
}
};
const resp = await client<APMError>('search', params);
const error = idx(resp, _ => _.hits.hits[0]._source);
const transactionId = idx(error, _ => _.transaction.id);
const traceId = idx(error, _ => _.trace.id);
let transaction;
if (transactionId && traceId) {
transaction = await getTransaction(transactionId, traceId, setup);
}
return {
transaction,
error,
occurrencesCount: resp.hits.total
};
}
示例3: idx
const hits = buckets.map(bucket => {
const source = bucket.sample.hits.hits[0]._source;
const message =
idx(source, _ => _.error.log.message) ||
idx(source, _ => _.error.exception[0].message);
return {
message,
occurrenceCount: bucket.doc_count,
culprit: idx(source, _ => _.error.culprit),
groupId: idx(source, _ => _.error.grouping_key),
latestOccurrenceAt: source['@timestamp'],
handled: idx(source, _ => _.error.exception[0].handled)
};
});
示例4: getTransaction
export async function getTransaction(
transactionId: string,
traceId: string,
setup: Setup
) {
const { start, end, uiFiltersES, client, config } = setup;
const params = {
index: config.get<string>('apm_oss.transactionIndices'),
body: {
size: 1,
query: {
bool: {
filter: [
{ term: { [PROCESSOR_EVENT]: 'transaction' } },
{ term: { [TRANSACTION_ID]: transactionId } },
{ term: { [TRACE_ID]: traceId } },
{ range: rangeFilter(start, end) },
...uiFiltersES
]
}
}
}
};
const resp = await client<Transaction>('search', params);
return idx(resp, _ => _.hits.hits[0]._source);
}
示例5: getBucket
function getBucket(
bucket: ESResponse['aggregations']['distribution']['buckets'][0]
) {
const sampleSource = idx(bucket, _ => _.sample.hits.hits[0]._source);
const isSampled = idx(sampleSource, _ => _.transaction.sampled);
const sample = {
traceId: idx(sampleSource, _ => _.trace.id),
transactionId: idx(sampleSource, _ => _.transaction.id)
};
return {
key: bucket.key,
count: bucket.doc_count,
sample: isSampled ? sample : undefined
};
}
示例6: anomalySeriesTransform
export function anomalySeriesTransform(
response: ESResponse,
mlBucketSize: number,
bucketSize: number,
timeSeriesDates: number[]
) {
if (!response) {
return;
}
const buckets = (
idx(response, _ => _.aggregations.ml_avg_response_times.buckets) || []
).map(getBucket);
const bucketSizeInMillis = Math.max(bucketSize, mlBucketSize) * 1000;
return {
anomalyScore: getAnomalyScoreDataPoints(
buckets,
timeSeriesDates,
bucketSizeInMillis
),
anomalyBoundaries: getAnomalyBoundaryDataPoints(buckets, timeSeriesDates)
};
}
示例7: return
return (id?: IWaterfallItem['id']) => {
if (!id) {
return undefined;
}
const item = itemsById[id];
if (idx(item, _ => _.docType) === 'transaction') {
return (item as IWaterfallItemTransaction).transaction;
}
};
示例8: getEnvironments
export async function getEnvironments(setup: Setup, serviceName?: string) {
const { start, end, client, config } = setup;
const filter: ESFilter[] = [
{ terms: { [PROCESSOR_EVENT]: ['transaction', 'error', 'metric'] } },
{ range: rangeFilter(start, end) }
];
if (serviceName) {
filter.push({
term: { [SERVICE_NAME]: serviceName }
});
}
const params = {
index: [
config.get<string>('apm_oss.metricsIndices'),
config.get<string>('apm_oss.errorIndices'),
config.get<string>('apm_oss.transactionIndices')
],
body: {
size: 0,
query: {
bool: {
filter
}
},
aggs: {
environments: {
terms: {
field: SERVICE_ENVIRONMENT,
missing: ENVIRONMENT_NOT_DEFINED
}
}
}
}
};
interface Aggs extends BucketAgg {
environments: {
buckets: BucketAgg[];
};
}
const resp = await client<void, Aggs>('search', params);
const aggs = resp.aggregations;
const environmentsBuckets = idx(aggs, _ => _.environments.buckets) || [];
const environments = environmentsBuckets.map(
environmentBucket => environmentBucket.key
);
return environments;
}
示例9: transactionGroupsTransformer
export function transactionGroupsTransformer({
response,
start,
end
}: {
response: ESResponse;
start: number;
end: number;
}): ITransactionGroup[] {
const buckets = idx(response, _ => _.aggregations.transactions.buckets) || [];
const duration = moment.duration(end - start);
const minutes = duration.asMinutes();
const transactionGroups = buckets.map(bucket =>
getTransactionGroup(bucket, minutes)
);
return calculateRelativeImpacts(transactionGroups);
}
示例10: getMlBucketSize
export async function getMlBucketSize({
serviceName,
transactionType,
setup
}: IOptions): Promise<number> {
const { client, start, end } = setup;
const params = {
index: getMlIndex(serviceName, transactionType),
body: {
_source: 'bucket_span',
size: 1,
query: {
bool: {
filter: [
{ exists: { field: 'bucket_span' } },
{
range: {
timestamp: {
gte: start,
lte: end,
format: 'epoch_millis'
}
}
}
]
}
}
}
};
try {
const resp = await client<ESResponse>('search', params);
return idx(resp, _ => _.hits.hits[0]._source.bucket_span) || 0;
} catch (err) {
const isHttpError = 'statusCode' in err;
if (isHttpError) {
return 0;
}
throw err;
}
}