如何监控本地网络中的连接
How to monitor connection in local network
我有大量服务:Node(s)、MySQL(s)、Redis(s)、Elastic(s)...
我想监控它们如何相互连接:连接率、活动连接数...(Node1 每秒创建 30 个到 Node2/MySQL/Redis 的连接...)就像下面附上的 Haproxy 统计图像。
目前我有两个选择:
- Haproxy(代理):我想使用单一服务 Haproxy 来存档这个,但似乎很难使用 ALC 检测什么连接需要转发到什么服务。
- ELK(日志中心):我需要在每个服务(Node、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 等)。 .) 用于可视化和探索。
结论
这种方法的好处:
- Prometheus 可以自动发现您添加到网络中的新节点
- 来自 haproxy、redis 和 mysql 的现成出口商
普罗米修斯
- 不需要代码,每个出口商需要最少的
配置特定于每个被监控的技术,它可以很容易地
如果您的环境是容器,则进行容器化和部署
导向的,否则你只需要 运行 中的每个出口商
正确的机器
- Prometheus 非常非常容易部署
我有大量服务:Node(s)、MySQL(s)、Redis(s)、Elastic(s)...
我想监控它们如何相互连接:连接率、活动连接数...(Node1 每秒创建 30 个到 Node2/MySQL/Redis 的连接...)就像下面附上的 Haproxy 统计图像。
目前我有两个选择:
- Haproxy(代理):我想使用单一服务 Haproxy 来存档这个,但似乎很难使用 ALC 检测什么连接需要转发到什么服务。
- ELK(日志中心):我需要在每个服务(Node、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 等)。 .) 用于可视化和探索。
结论
这种方法的好处:
- Prometheus 可以自动发现您添加到网络中的新节点
- 来自 haproxy、redis 和 mysql 的现成出口商 普罗米修斯
- 不需要代码,每个出口商需要最少的 配置特定于每个被监控的技术,它可以很容易地 如果您的环境是容器,则进行容器化和部署 导向的,否则你只需要 运行 中的每个出口商 正确的机器
- Prometheus 非常非常容易部署