如何在多地点场景下配置Prometheus?

2024-03-22

我喜欢使用 Prometheus 进行监控和警报。到目前为止,我的所有目标(节点和容器)都与监控服务器位于同一网络上。

但现在我面临一个场景,我们将应用程序堆栈(作为一堆 Docker 容器)部署到网络中的多台客户端计算机。几乎所有客户端网络都位于防火墙或 NAT 后面。所以刮痧变得相当困难。

由于我们仍然对堆栈负责,因此我希望拥有一个中央监控服务器、更改和仪表板。

我想知道如果想用 Prometheus 实现它,最好的架构是什么,但我找不到任何令人信服的方法。到目前为止我的想法:

  1. 使用推送网关在我们这边并将所有数据推出客户端网络。正如文档所述,它并不是这样的:https://prometheus.io/docs/practices/pushing/ https://prometheus.io/docs/practices/pushing/
  2. 使用联合设置 (https://prometheus.io/docs/prometheus/latest/federation/ https://prometheus.io/docs/prometheus/latest/federation/):在反向代理后面的每个客户端网络中放置一个 Prometheus 服务器(以启用 SSL 和身份验证)并在那里聚合相关指标。仅打开/转发单个端口以进行联合抓取。
  3. 其他更具实验性的设置,例如 SSH 隧道(例如此处https://miek.nl/2016/february/24/monitoring-with-ssh-and-prometheus/ https://miek.nl/2016/february/24/monitoring-with-ssh-and-prometheus/)还是VPN!?

预先感谢您的帮助!


没有人发表答案,所以我会尝试对第二个选择发表我的意见,因为这就是我认为在你的情况下我会做的。

第二种设置似乎是最灵活的,您可以访问数据并且只需要为联合服务器打开一个端口,因此它仍然应该是安全的。

这种类型设置的另一个好处是,即使防火墙由于某种原因停止工作,您仍然会遇到普罗米修斯抓取,您将收到警报,因为您将无法访问服务器,但当连接再次出现时,您将获得所有数据。 grafana 仪表板上不会有漏洞,因为除了事件发生期间之外没有任何数据。

此设置的问题在于您需要维护与网络数量相当的服务器数量。解决方案是使用加壳器映像或可部署的 Ansible 剧本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在多地点场景下配置Prometheus? 的相关文章

随机推荐

  • 在 JavaScript 中是否有更好的方法来执行可选函数参数? [复制]

    这个问题在这里已经有答案了 我总是像这样处理 JavaScript 中的可选参数 function myFunc requiredArg optionalArg optionalArg optionalArg defaultValue Do
  • 检查应用程序是否已购买

    我只是想问是否有办法检查用户是否确实以编程方式购买了应用程序 我看到 无尽之剑 3 和其他游戏如何强迫用户登录他们的苹果帐户 并以某种方式向商店检查该应用程序是否已被购买 这怎么可能以编程方式创建 我在整个网络上进行了搜索 只是为了找到如何
  • 如何使用 C# 创建复杂的 JSON 对象

    我有这样的 JSON 结构 name flare children name analytics children name cluster children name AgglomerativeCluster size 3938 name
  • 如何在屏幕会话中执行命令

    我想知道如何在屏幕会话中执行命令 我搜索了一下 发现了这个 screen S nameofscreen X stuff command 当我输入此命令时 命令会在屏幕内输入 但不会执行 所以我的问题是如何使用此命令按 Enter 键 我会做
  • 应用程序在逻辑删除后再也不会成功启动。没有抛出异常

    我在逻辑删除后让我的应用程序从头开始恢复 加载时遇到问题 它在以下行失败 ServerCollection collection AppSettings GetSetting AppResources settings servercoll
  • 如何对 Reactor Flux 流中的值求和?

    假设我有一个存储库findAll 返回一个方法Iterable of State where State是一个代表美国州的类 有两个字段 带有 getter setter name and population 我想获得所有人口字段的总和S
  • 如何连接因子而不将它们转换为整数级别?

    我很惊讶地发现 R 在连接向量时会将因子强制转换为数字 即使级别相同 也会发生这种情况 例如 gt facs lt as factor c i want to be a factor not an integer gt facs 1 i w
  • mapboxgl.Marker如何去除

    我习惯了 参考https docs mapbox com mapbox gl js example drag a marker https docs mapbox com mapbox gl js example drag a marker
  • 使用 Gradle 和 Kotlin 构建自执行 JAR

    为了开始使用 我编写了一个简单的 Kotlin 源文件和一个 Gradle 脚本文件 但我不知道如何将 main 函数添加到清单中 以便 JAR 可以自行执行 这是我的 build gradle 脚本 buildscript reposit
  • 如何从 Python Spark 脚本进行日志记录

    我有一个运行的 Python Spark 程序spark submit 我想在其中放入日志语句 logging info This is an informative message logging debug This is a debu
  • 如何取消静音(并关闭自动播放)二十七岁的 YouTube 视频?

    I have YouTube 上的讲座 https www youtube com watch v 1dYAYBNU6qM我想用作标题电影我的二十七岁儿童主题网站 https cjshayward com我想要有声音但不自动播放 在 You
  • 如何在 Jenkins 中只执行最近排队的作业?

    我在 Jenkins 中有一个提交构建项目 它在完成时安排了一个验收构建项目 由于提交的速度比验收构建作业完成的速度要快 因此在很短的时间之后 现在有six排队接受构建作业 我希望验收构建项目像 轮询 SCM 功能一样工作 完成后 启动最近
  • 使用 AmazonServerlessApplicationRepositoryClient 部署 AWS 无服务器 lambda 应用程序不起作用?

    我想通过 C 控制台应用程序部署 ASP Net Core Web 应用程序项目 这意味着我正在尝试在 AWS 上创建无服务器 lambda 应用程序 而无需使用 AWS Toolkit 或 CLI 命令 我想使用 AWS SDK 来执行此
  • Titan-1.0.0+Hbase-0.98.20使用java远程模式连接错误

    我正在学习Titan数据库 我已经在本地模式下成功运行了它 现在 我尝试在 Titan 文档中介绍的 远程服务器模式 下使用 Titan 数据库 我的 Titan 版本是 Titan 1 0 0 hadoop1 我的 LAN 中有集群 包括
  • launchd plist 中无法识别 LaunchEvents 键(检测 USB 设备)

    我想在 USB 设备插入 Mac OS X 系统时启动特定的应用程序 我已经按照中给出的食谱进行了操作这个帖子 https stackoverflow com a 12259762 558639 但看来LaunchEvents无法识别密钥
  • sizeof如何知道操作数数组的大小?

    这可能是一个愚蠢的问题 但是当您不传入数组中的元素数量时 sizeof 运算符如何知道数组操作数的大小 我知道它不会返回数组中的总元素 而是返回字节大小 但为了得到它 它仍然必须知道数组何时结束 只是好奇这是如何工作的 sizeof在编译时
  • 从标准 cookie 格式转换为 LibCurl cookie jar 格式

    有没有方便的工具 代码可以转换标准 cookie 字符串格式 e g NAME1 VALUE1 NAME2 VALUE2 to the libCURL cookie jar 格式 e g netscape com TRUE FALSE 94
  • 二维宇宙飞船运动数学

    我正在尝试制作一款自上而下的太空飞船游戏 我希望动作更加真实 360度 有惯性 重力等 我的问题是我可以毫无问题地让船以惯性移动 360 但我需要做的是限制发动机的运行速度 同时不限制其他推 拉船的力 因此 如果发动机速度最大为 500 并
  • Java 哈希表与对象引用的问题

    我有一个哈希表 例如 HashTable ht 1 1 2 1 3 1 现在 我像 Integer foo Integer 1 一样实现它 并像这样声明哈希表 HashTable ht foo foo 2 foo 3 foo 现在 据我了解
  • 如何在多地点场景下配置Prometheus?

    我喜欢使用 Prometheus 进行监控和警报 到目前为止 我的所有目标 节点和容器 都与监控服务器位于同一网络上 但现在我面临一个场景 我们将应用程序堆栈 作为一堆 Docker 容器 部署到网络中的多台客户端计算机 几乎所有客户端网络