登录
首页 >  Golang >  Go问答

将多个 IP 显示为查询的 Grafana/Prometheus 可视化

来源:stackoverflow

时间:2024-02-07 21:18:25 228浏览 收藏

golang学习网今天将给大家带来《将多个 IP 显示为查询的 Grafana/Prometheus 可视化》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我想要一个图表,其中请求我的网络服务器的所有最近 IP 都显示为总请求计数。这样的事情可行吗?我可以添加查询并随后通过 Prometheus 删除它吗?


正确答案


技术上,是的。您将需要:

  1. 在服务器中公开一些指标(可能是计数器) - 例如,带有标签的 requests_count;比如说,ip
  2. 每当您收到请求时,inc 都会将标签设置为请求者 IP 的指标
  3. 在 Grafana 中,绘制指标图,可能通过 IP 地址对其求和,以处理您有多个水平扩展的服务器通过 (ip) 处理请求 sum(your_prometheus_namespace_requests_count) 的情况
  4. 将 Grafana 中图表的 Legend 设置为 {{ ip }},在每行代表的 IP 地址之后“命名”

但是,指标具有的每个不同标签值都会导致 Prometheus 时间序列数据库中存在一个全新的指标;您可以认为像 requests_count{ip="192.168.0.1"}=1 这样的指标在消耗内存的方式方面与 requests_count_ip_192_168_0_1{}=1 有点相似。当前保存在 Prometheus TSDB 头中的每个指标实例都需要 something on the order of 3kB to exist。这意味着,如果您要处理数百万个请求,仅此一个指标就会用千兆字节的数据淹没 Prometheus 的内存。关于此问题的更详细解释存在于另一个答案中:https://stackoverflow.com/a/69167162/511258

考虑到这一点,如果您确实知道希望连接少量 IP 地址(可能在内部 Intranet 上,或者在您分发给某个客户端的客户端上),那么这种方法就有意义。少量已知客户端),但如果您计划部署到网络,这将允许人们(很可能在不知不觉中)使您的监控系统崩溃。

您可能想研究一种替代方案 - 例如,Grafana 能够从一些常见的日志聚合平台获取数据,因此也许您可以执行一些结构化(例如 JSON)日志记录,例如将其保存在Elasticsearch,然后根据其中保存的数据创建一个图表。

理论要掌握,实操不能落!以上关于《将多个 IP 显示为查询的 Grafana/Prometheus 可视化》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>