OpenSearch Index Templates
To support Jaeger traces using OpenSearch, you must configure required index templates. This template defines the mapping and settings for your Jaeger indices in OpenSearch. This document describes the index template for OpenSearch when it functions as a log server for Jaeger traces.
To manage index, the OpenSearch uses plugin Index State Management (ISM). The following section provides index templates for both the cases where ISM is installed or if it is not installed.
Jaeger Service Trace Index Template without Index State Management
{
"priority": 5,
"index_patterns":
[
"*jaeger-service-*"
],
"template":
{
"aliases":
{
"jaeger-service-read":
{}
},
"settings":
{
"index.number_of_shards": 6,
"index.number_of_replicas": 1,
"index.mapping.nested_fields.limit": 50,
"index.requests.cache.enable": true
},
"mappings":
{
"dynamic_templates":
[
{
"span_tags_map":
{
"mapping":
{
"type": "keyword",
"ignore_above": 256
},
"path_match": "tag.*"
}
},
{
"process_tags_map":
{
"mapping":
{
"type": "keyword",
"ignore_above": 256
},
"path_match": "process.tag.*"
}
}
],
"properties":
{
"serviceName":
{
"type": "keyword",
"ignore_above": 256
},
"operationName":
{
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
Jaeger Span Trace Index Template without Index State Management
{
"priority": 3,
"index_patterns":
[
"*jaeger-span-*"
],
"template":
{
"aliases":
{
"jaeger-span-read":
{}
},
"settings":
{
"index.number_of_shards": 6,
"index.number_of_replicas": 1,
"index.mapping.nested_fields.limit": 50,
"index.requests.cache.enable": true
},
"mappings":
{
"dynamic_templates":
[
{
"span_tags_map":
{
"mapping":
{
"type": "keyword",
"ignore_above": 256
},
"path_match": "tag.*"
}
},
{
"process_tags_map":
{
"mapping":
{
"type": "keyword",
"ignore_above": 256
},
"path_match": "process.tag.*"
}
}
],
"properties":
{
"traceID":
{
"type": "keyword",
"ignore_above": 256
},
"parentSpanID":
{
"type": "keyword",
"ignore_above": 256
},
"spanID":
{
"type": "keyword",
"ignore_above": 256
},
"operationName":
{
"type": "keyword",
"ignore_above": 256
},
"startTime":
{
"type": "long"
},
"startTimeMillis":
{
"type": "date",
"format": "epoch_millis"
},
"duration":
{
"type": "long"
},
"flags":
{
"type": "integer"
},
"logs":
{
"type": "nested",
"dynamic": false,
"properties":
{
"timestamp":
{
"type": "long"
},
"fields":
{
"type": "nested",
"dynamic": false,
"properties":
{
"key":
{
"type": "keyword",
"ignore_above": 256
},
"value":
{
"type": "keyword",
"ignore_above": 256
},
"tagType":
{
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"process":
{
"properties":
{
"serviceName":
{
"type": "keyword",
"ignore_above": 256
},
"tag":
{
"type": "object"
},
"tags":
{
"type": "nested",
"dynamic": false,
"properties":
{
"key":
{
"type": "keyword",
"ignore_above": 256
},
"value":
{
"type": "keyword",
"ignore_above": 256
},
"tagType":
{
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"references":
{
"type": "nested",
"dynamic": false,
"properties":
{
"refType":
{
"type": "keyword",
"ignore_above": 256
},
"traceID":
{
"type": "keyword",
"ignore_above": 256
},
"spanID":
{
"type": "keyword",
"ignore_above": 256
}
}
},
"tag":
{
"type": "object"
},
"tags":
{
"type": "nested",
"dynamic": false,
"properties":
{
"key":
{
"type": "keyword",
"ignore_above": 256
},
"value":
{
"type": "keyword",
"ignore_above": 256
},
"tagType":
{
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
Lifecycle Policy for Jaeger Index Template
You must have ISM installed to use this policy.
{
"policy":
{
"description": "this will be used for traces",
"default_state": "hot",
"states":
[
{
"name": "hot",
"actions":
[
{
"rollover":
{
"min_size": "2gb",
"min_index_age": "7d"
}
}
],
"transitions":
[
{
"state_name": "warm",
"conditions":
{
"min_index_age": "10d"
}
}
]
},
{
"name": "warm",
"actions":
[
{
"force_merge": {
"max_num_segments": 1
}
}
],
"transitions":
[
{
"state_name": "delete",
"conditions":
{
"min_index_age": "30d"
}
}
]
},
{
"name": "delete",
"actions":
[
{
"delete":
{}
}
]
}
],
"ism_template":
{
"index_patterns":
[
"*jaeger-service-*",
"*jaeger-span-*"
],
"priority": 100
}
}
}
Jaeger Service Trace Index Template with Index State Management
In this template, jaeger-policy is the policy name created using above Lifecycle Policy template.
{
"priority": 5,
"index_patterns":
[
"*jaeger-service-*"
],
"template":
{
"aliases":
{
"jaeger-service-read":
{}
},
"settings":
{
"index.number_of_shards": 6,
"index.number_of_replicas": 1,
"index.mapping.nested_fields.limit": 50,
"index.requests.cache.enable": true,
"opendistro.index_state_management.policy_id": "jaeger-policy"
},
"mappings":
{
"dynamic_templates":
[
{
"span_tags_map":
{
"mapping":
{
"type": "keyword",
"ignore_above": 256
},
"path_match": "tag.*"
}
},
{
"process_tags_map":
{
"mapping":
{
"type": "keyword",
"ignore_above": 256
},
"path_match": "process.tag.*"
}
}
],
"properties":
{
"serviceName":
{
"type": "keyword",
"ignore_above": 256
},
"operationName":
{
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
Jaeger Span Trace Index Template with Index State Management
{
"priority": 3,
"index_patterns":
[
"*jaeger-span-*"
],
"template":
{
"aliases":
{
"jaeger-span-read":
{}
},
"settings":
{
"index.number_of_shards": 6,
"index.number_of_replicas": 1,
"index.mapping.nested_fields.limit": 50,
"index.requests.cache.enable": true,
"opendistro.index_state_management.policy_id": "jaeger-policy"
},
"mappings":
{
"dynamic_templates":
[
{
"span_tags_map":
{
"mapping":
{
"type": "keyword",
"ignore_above": 256
},
"path_match": "tag.*"
}
},
{
"process_tags_map":
{
"mapping":
{
"type": "keyword",
"ignore_above": 256
},
"path_match": "process.tag.*"
}
}
],
"properties":
{
"traceID":
{
"type": "keyword",
"ignore_above": 256
},
"parentSpanID":
{
"type": "keyword",
"ignore_above": 256
},
"spanID":
{
"type": "keyword",
"ignore_above": 256
},
"operationName":
{
"type": "keyword",
"ignore_above": 256
},
"startTime":
{
"type": "long"
},
"startTimeMillis":
{
"type": "date",
"format": "epoch_millis"
},
"duration":
{
"type": "long"
},
"flags":
{
"type": "integer"
},
"logs":
{
"type": "nested",
"dynamic": false,
"properties":
{
"timestamp":
{
"type": "long"
},
"fields":
{
"type": "nested",
"dynamic": false,
"properties":
{
"key":
{
"type": "keyword",
"ignore_above": 256
},
"value":
{
"type": "keyword",
"ignore_above": 256
},
"tagType":
{
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"process":
{
"properties":
{
"serviceName":
{
"type": "keyword",
"ignore_above": 256
},
"tag":
{
"type": "object"
},
"tags":
{
"type": "nested",
"dynamic": false,
"properties":
{
"key":
{
"type": "keyword",
"ignore_above": 256
},
"value":
{
"type": "keyword",
"ignore_above": 256
},
"tagType":
{
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"references":
{
"type": "nested",
"dynamic": false,
"properties":
{
"refType":
{
"type": "keyword",
"ignore_above": 256
},
"traceID":
{
"type": "keyword",
"ignore_above": 256
},
"spanID":
{
"type": "keyword",
"ignore_above": 256
}
}
},
"tag":
{
"type": "object"
},
"tags":
{
"type": "nested",
"dynamic": false,
"properties":
{
"key":
{
"type": "keyword",
"ignore_above": 256
},
"value":
{
"type": "keyword",
"ignore_above": 256
},
"tagType":
{
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}