Metadata (元数据)
元数据可以丰富您的事件,并使应用性能监控更加有用。让我们来探讨一下 Elastic APM 提供的不同类型的元数据。
注意
如果您使用的是 OpenTelemetry SDK,请参考 OpenTelemetry 属性了解如何向遥测数据添加属性。
标签向事务、跨度和错误添加已索引的信息。已索引意味着数据可以在 Elasticsearch 中进行搜索和聚合。添加额外的键值对以定义多个标签。
标签值可以是字符串、布尔值或数字,尽管目前某些代理仅支持字符串值。由于给定键的标签(无论使用哪种代理)都存储在 Elasticsearch 中的同一个位置,因此给定键的所有标签值必须具有相同的数据类型。每个键有多个数据类型将抛出异常,例如:不允许同时使用 {foo: bar} 和 {foo: 42}。
重要提示
避免定义过多用户指定的标签。在索引中定义过多唯一字段可能会导致映射爆炸。
- Go:
SetLabel - Java:
setLabel - .NET:
SetLabel - Node.js:
setLabel - PHP:
TransactionsetLabel|SpansetLabel - Python:
elasticapm.label() - Ruby:
set_label - RUM:
addLabels
自定义上下文向事务和错误添加未索引的自定义上下文信息。未索引意味着数据无法在 Elasticsearch 中进行搜索或聚合,并且您无法基于该数据构建仪表板。这也意味着您不必担心映射爆炸,因为这些字段不会被添加到映射中。
未索引的信息对于提供上下文信息以帮助您快速调试性能问题或错误非常有用。
重要提示
设置循环对象、大型对象或无法进行 JSON 序列化的对象可能会导致错误。
- Go:
SetCustom - iOS:即将推出
- Java:
addCustomContext - .NET:即将推出
- Node.js:
setCustomContext - PHP:即将推出
- Python:
set_custom_context - Ruby:
set_custom_context - RUM:
setCustomContext
用户上下文向事务和错误添加已索引的用户信息。已索引意味着数据可以在 Elasticsearch 中进行搜索和聚合。
- Go:
SetUsername - iOS:即将推出
- Java:
setUser - .NET 即将推出
- Node.js:
setUserContext - PHP:即将推出
- Python:
set_user_context - Ruby:
set_user - RUM:
setUserContext