我想使用石墨从不同的服务器收集度量。默认情况下,carbon会在2003年在所有接口上监听,这对我来说是很好的。
现在,理论上任何人都可以在那里发送公制数据。是否有一种标准的方法来防止这种情况发生(类似于http ),还是我需要处理物理接口上基于IP的限制?
发布于 2018-04-03 12:40:14
这取决于您想要“硬化”任何Graphite节点("Graphite“是碳中继、碳缓存、存储后端以及潜在的石墨-web/api的混合拓扑)。
如果您知道网络中的哪些主机应该向Graphite (通常是中继)发送度量标准,则可以修改您的Graphite主机防火墙规则,以便从主机IP的显式列表或适用端口的范围中获得期望。或者你也可以通过防火墙或路由器在边缘网络上做一些类似的事情--我没有什么建议,因为你的问题并没有给出你的拓扑结构的更全面的范围。
另一种方法是使用AMQP支持,让节点以经过身份验证的用户身份将其指标发布给代理,然后让您的Graphite主机(S)修改主机防火墙,使其只接受来自代理度量的TCP 2003。这里的好处是您的Graphite节点(S)只需要知道来自什么代理度量,这极大地简化了任何主机防火墙规则。让节点通过轻量级服务发布度量可以更好地确保事情的安全,因为您所关心的“信任”问题是在流程的顶部处理的,而不是度量结果是否合法到达您的Graphite主机(S)。RabbitMQ是开放源码软件( OSS ),如果你插入了Management,就可以很简单地站起来,不需要在配置上乱搞太多。它的大部分配置都是为操作打开必要的端口。
然而,这使得任务的简单度量发布服务器到Graphite拓扑变得更加复杂,并且坚定地为度量如何到达Graphite建立了一个发布/子模型(但是它有一个很好的好处,即允许传输中的度量不会丢失)。它还增加了另一个主机,以确保在操作上的理由。
为了更进一步,您可以实现一个日志监视系统来监视碳中继的listener.log文件,因为它将为接收和处理的每一个度量编写一行。在较高的级别上,您可以查看日志,查找您期望的指标的异常。就像如果您有一个server.cpu.load度量一样,您可能会看到这些数据正在被处理,但是发布的一个名为foo.bar.value的度量是无效的。作为对这种事件的响应,您可以简单地删除Whisper为无效命名空间创建的相应目录(如果您使用Whisper存储)。
强化Graphite的碳中继和碳缓存是很好的,也是一件明智的事情,但不要忘记,这与谁可以访问您的graphite who应用程序或石墨-api来获取这些指标一样重要。
https://serverfault.com/questions/900883
复制