我希望有一个图表,其中所有最近请求我的Web服务器的IP都显示为总请求计数.这样做可行吗?我可以添加一个查询并在via普罗米修斯之后删除它吗?
我希望有一个图表,其中所有最近请求我的Web服务器的IP都显示为总请求计数.这样做可行吗?我可以添加一个查询并在via普罗米修斯之后删除它吗?
Technically,是的.您需要:
requests_count
,带有标签;比如ip
inc
sum(your_prometheus_namespace_requests_count) by (ip)
Legend
设置为{{ ip }}
,以在其表示的IP地址后"命名"每一行However,度量值的每一个不同标签值都会导致普罗米修斯时间序列数据库中存在一个全新的度量值;您可以将requests_count{ip="192.168.0.1"}=1
这样的度量在消耗内存的方式上与requests_count_ip_192_168_0_1{}=1
类似.普罗米修斯TSDB头部当前持有的每个度量实例取something on the order of 3kB to exist.这意味着,如果你正在处理数百万个请求,仅从这一个指标,你就将用千兆字节的数据淹没普罗米修斯的内存.关于这个问题,另一个答案有更详细的解释:https://stackoverflow.com/a/69167162/511258
With that in mind,如果您知道需要连接少量IP地址(可能在内部intranet上,或分发给少数已知客户端的客户端上),那么这种方法是有意义的,但如果您计划部署到web上,这将允许人们(很可能在不知不觉中)以一种非常简单的方式 destruct 您的监控系统.
您可能需要研究另一种方法——例如,Grafana能够从一些常见的日志(log)聚合平台中摄取数据,因此您可能可以进行一些 struct 化(例如JSON)日志(log)记录,在Elasticsearch中保存,然后从其中保存的数据创建一个图.