数据流
Elastic Stack
Elastic Agent 使用数据流跨多个索引存储仅追加的时间序列数据。 数据流非常适合日志、指标、跟踪和其他持续生成的数据,并且比其他索引策略具有许多优势
- 每个索引的字段数量减少
- 更精细的数据控制
- 灵活的命名方案
- 所需的摄取权限更少
请参阅Fleet 和 Elastic Agent 指南以了解更多信息。
APM 数据遵循 <type>-<dataset>-<namespace>
命名方案。 type
和 dataset
由 Elasticsearch apm-data 插件预定义,但 namespace
让您有机会自定义不同类型的数据在 Elasticsearch 中的存储方式。 对于用作命名空间的内容没有建议——它有意地具有灵活性。 例如,您可以为每个环境创建命名空间,例如 dev
、prod
、production
等。或者,您可以创建与组织内战略业务部门相对应的命名空间。
按类型划分,APM 数据流为
- 跟踪
-
跟踪由 span 和事务组成。 跟踪存储在以下数据流中
- 应用程序跟踪:
traces-apm-<namespace>
- RUM 和 iOS 代理应用程序跟踪:
traces-apm.rum-<namespace>
- 应用程序跟踪:
- 指标
-
指标包括基于应用程序的指标、聚合指标和基本系统指标。 指标存储在以下数据流中
- APM 内部指标:
metrics-apm.internal-<namespace>
- APM 事务指标:
metrics-apm.transaction.<metricset.interval>-<namespace>
- APM 服务目标指标:
metrics-apm.service_destination.<metricset.interval>-<namespace>
- APM 服务事务指标:
metrics-apm.service_transaction.<metricset.interval>-<namespace>
- APM 服务摘要指标:
metrics-apm.service_summary.<metricset.interval>-<namespace>
- 应用程序指标:
metrics-apm.app.<service.name>-<namespace>
应用程序指标包括在数据流名称中工具化的服务名称——在每个 APM 代理的配置中定义。 因此,服务名称必须遵循某些索引命名规则。
服务名称规则
- 服务名称不区分大小写,并且必须是唯一的。 例如,您不能有一个名为
Foo
的服务,也不能有另一个名为foo
的服务。 - 特殊字符将从服务名称中删除,并替换为下划线 (
_
)。 特殊字符包括'\\', '/', '*', '?', '"', '<', '>', '|', ' ', ',', '#', ':', '-'
重要提示拥有适当许可的用户可以使用Synthetic
_source
提供的额外存储效率。 - APM 内部指标:
- 日志
-
日志包括应用程序错误事件和应用程序日志。 日志存储在以下数据流中
- APM 错误/异常日志记录:
logs-apm.error-<namespace>
- 应用程序 UI 日志记录:
logs-apm.app.<service.name>-<namespace>
- APM 错误/异常日志记录:
APM 支持将 APM 数据重定向到用户定义的 APM 数据流名称,而不是默认名称。 这可以通过在摄取管道中使用reroute
处理器来设置数据流数据集或命名空间来实现。 分离 APM 数据流的好处是可以使用自定义保留和安全策略。
例如,考虑最初索引到 traces-apm-default
的跟踪。 要从跟踪的 service.environment
设置数据流命名空间,并回退到静态字符串 "default"
,请创建一个名为 traces-apm@custom
的摄取管道,它将自动使用
[
{
"reroute": {
"namespace": [
"{{service.environment}}",
"default"
]
}
}
]
要查找默认调用的 Elasticsearch apm-data 插件中的其他摄取管道,请转到 Stack management → Ingest pipelines 在 Kibana 中并搜索 apm
。 默认 APM 摄取管道将遵循 *-apm*@default-pipeline
模式。
有关更多自定义 APM 摄取管道指南,请参阅使用摄取管道解析数据。