如何监控本地网络中的连接

How to monitor connection in local network

我有大量服务:Node(s)、MySQL(s)、Redis(s)、Elastic(s)...
我想监控它们如何相互连接:连接率、活动连接数...(Node1 每秒创建 30 个到 Node2/MySQL/Redis 的连接...)就像下面附上的 Haproxy 统计图像。

目前我有两个选择:

如何做到这一点?这种情况下日志中心好不好?

使用 ELK - elasticsearch logstash 和 kibana 堆栈与 filebeat。 Filebeat - 将与 logstash 共享日志文件内容 Logstash-将需要的内容扫描、过滤并分享到elasticsearch Elasticsearch- 将用作数据库,将来自 logstash 的内容以 json 格式存储为文档。 Kibana- 您可以使用 kibana 搜索所需的信息。您还可以使用相关数据绘制图表和其他视觉效果。

问题

我认为您的问题不在于收集统计数据并将其通过管道传输到 Elasticsearch,而是从您的服务中提取指标的大量工作,因为它们中的大多数都没有指标 files/logs。

然后您需要使用一些自定义脚本导出它们,记录它们并使用 filebeat 捕获它们,流式传输到 logstash 以进行文本处理和指标提取,以便它们以您可以进行某种分析的方式编入索引, 然后发送到elasticsearch.

我的回答

至少对于您引用的 3 项服务,有 Prometheus exporters readily available and you can find them here。出口商是简单的过程,将查询您的服务本机统计信息 APIs 并公开普罗米修斯指标 API 以供普罗米修斯抓取(轮询)。

让 Prometheus 抓取指标后,您可以通过 Grafana(这是 Prometheus 实际上的可视化层)在仪表板中显示它们,或者将指标批量导出到您想要的任何位置(Elasticsearch 等)。 .) 用于可视化和探索。

结论

这种方法的好处:

  1. Prometheus 可以自动发现您添加到网络中的新节点
  2. 来自 haproxy、redis 和 mysql 的现成出口商 普罗米修斯
  3. 不需要代码,每个出口商需要最少的 配置特定于每个被监控的技术,它可以很容易地 如果您的环境是容器,则进行容器化和部署 导向的,否则你只需要 运行 中的每个出口商 正确的机器
  4. Prometheus 非常非常容易部署