使用查询字符串 url 的响应时间石墨监控?
Response time graphite monitoring for url with query string?
我需要使用 Graphite 测量 API 端点的响应时间,但我不确定命名空间。
假设我要测量一个端点
/results/
/results/?organization_id=100&limit=100
假设我有大量结果,第一个端点响应时间将比第二个慢得多(我需要测量两个端点)。
那么我应该如何在 Graphite 中为此创建名称空间?在命名空间中包含查询参数是否很常见(例如 project.results.get.organization_id=100&limit=100
和 project.results.get.all
)?我担心包含查询参数的问题之一是,如果查询参数不断变化(不同的组织、不同的限制、不同的字段等),命名空间将会爆炸
我认为最好的指标命名方案(命名空间)取决于您要将这些指标用于什么目的。
例如,假设在您的情况下,无论查询参数是什么,您要检查的是 /results/
端点的平均时间、最小时间和最大时间,您将使用单个指标名称,如 stats.results.timer
。这对于监控请求花费的时间并确保它们足够快很有用。
另一方面,如果您认为使用和不使用查询字符串参数查询 /results/
有两个非常不同的时间,并且您想分别考虑它们,您可以为包含的不同类型的参数创建单独的指标,如 stats.results.organization_id__limit
、stats.results.organization_id
等。我从来没有想过在指标名称中包含参数值,因为它确实有可能破坏指标命名空间。
我肯定会选择第一个选项,但这在很大程度上取决于您的具体用例。
我需要使用 Graphite 测量 API 端点的响应时间,但我不确定命名空间。
假设我要测量一个端点
/results/
/results/?organization_id=100&limit=100
假设我有大量结果,第一个端点响应时间将比第二个慢得多(我需要测量两个端点)。
那么我应该如何在 Graphite 中为此创建名称空间?在命名空间中包含查询参数是否很常见(例如 project.results.get.organization_id=100&limit=100
和 project.results.get.all
)?我担心包含查询参数的问题之一是,如果查询参数不断变化(不同的组织、不同的限制、不同的字段等),命名空间将会爆炸
我认为最好的指标命名方案(命名空间)取决于您要将这些指标用于什么目的。
例如,假设在您的情况下,无论查询参数是什么,您要检查的是 /results/
端点的平均时间、最小时间和最大时间,您将使用单个指标名称,如 stats.results.timer
。这对于监控请求花费的时间并确保它们足够快很有用。
另一方面,如果您认为使用和不使用查询字符串参数查询 /results/
有两个非常不同的时间,并且您想分别考虑它们,您可以为包含的不同类型的参数创建单独的指标,如 stats.results.organization_id__limit
、stats.results.organization_id
等。我从来没有想过在指标名称中包含参数值,因为它确实有可能破坏指标命名空间。
我肯定会选择第一个选项,但这在很大程度上取决于您的具体用例。