成都极客联盟网站建设公司,珠海网站建设制作怎么收费,如何运营一个行业网站,中关村电脑网官方文章目录 一、介绍监控插件两个插件的区别一、 官方插件 rabbitmq_prometheus1 配置 RabbitMQ 集群名称2 授权使用插件2.1 配置文件方式2.2 命令行方式3 监听地址和端口4 RabbitMQ 插件获取指标的频率5 配置到 Prometheus6 关于聚合指标和每个对象指标6.1 获取聚合指标 `/metri… 文章目录 一、介绍监控插件两个插件的区别 一、 官方插件 rabbitmq_prometheus1 配置 RabbitMQ 集群名称2 授权使用插件2.1 配置文件方式2.2 命令行方式 3 监听地址和端口4 RabbitMQ 插件获取指标的频率5 配置到 Prometheus6 关于聚合指标和每个对象指标6.1 获取聚合指标 `/metrics`6.2 每次请求获取到每个监控指标的监控数据 `/metrics/per-object`6.3 请求获取指定某个监控指标的监控数据 `/metrics/detailed` 7 部分通用指标 二、rabbitmq_exporter1 部署1.1 二进制方式:1.2 docker-compose 方式 2 配置2.1 使用变量可用的环境变量 2.2 使用 JSON 配置文件 3 Metrics3.1 GlobalOverviewQueuesQueues - GaugeQueues - Counter Exchanges - CounterNode - CounterConnections - GaugeShovelMemory 三、dashboard1 健康指标2 指标和图表3 许多指标没有“正确”的阈值关于官方测试用例 四、kubernetes 的 rabbitmq-server operrator五、使用 TLS 保护 exporter 一、介绍
监控插件
有两种:
rabbitmq-server(3.8版本以上) rabbitmq 官方自带的插件 rabbitmq_prometheusPrometheus 官方推荐的非 rabbitmq官方插件 rabbitmq_exporter两个插件的区别
官方插件
具有 runtime/erlang 的监控指标有聚合的或每个对象的度量缺少过滤器(filter),就是可以禁用某些不需要的监控指标非 Rabbitmq 官方插件
适用于 Rabbitmq 的新旧版本具有更多配置选项/筛选对象可能最好的解决方案是同时使用两个: 官方的普罗米修斯插件不能跳过收集一些指标的能力。在官方插件中,您可以选择聚合度量或每个对象,但是不能跳过不需要的监控指标。 另一方面,官方插件提供erlang 虚拟机的监控指标,这也很重要。 所以建议两者这样用。在官方插件中,禁用每个对象的度量,并且只使用它来收集与erlang相关的度量,使用非官方插件收集其他所有监控指标。 对于以上建议,仅仅是个人建议。如果想简单实现,使用官方的插件即可。 一、 官方插件 rabbitmq_prometheus
1 配置 RabbitMQ 集群名称
检查每个节点的机群名称是否一致
rabbitmq-diagnostics -q cluster_status
如果不一致,修改为一致,并且这样也可以和其他被监控的集群区别开来.
rabbitmqctl -q set_cluster_name your-cluster-name
2 授权使用插件
2.1 配置文件方式
重启 RabbitMQ 服务生效 /etc/rabbitmq/enabled_plugins 文件中添加如下内容
[rabbitmq_prometheus]2.2 命令行方式
立即生效
rabbitmq-plugins enable rabbitmq_prometheus如果非首次部署后开启监控插件,可以同时使用两者结合,这样无需重启服务,并且在下次服务重启后,插件也是永久生效可用的。 3 监听地址和端口
此插件开启成功后,默认监听 TCP 端口 15692,监听地址是服务器上的所有地址。
此端口可以使用如下配置方式覆盖修改:
prometheus.tcp.port = 15692可以使用如下方式覆盖修改监听的地址:
prometheus.tcp.ip = 0.0.0.0可以使用如下命令检查每个节点监听的端口
rabbitmq-diagnostics -s listeners确认是否成功开启
curl -s localhost:15692/metrics | head -n 34 RabbitMQ 插件获取指标的频率
默认情况下,rabbitmq_prometheus 插件每隔 5000 毫秒(5 秒)抓取一次监控指标数据。 生产环境,建议修改为 10000(10秒),并且将 Prometheus 的抓取间隔设置为 15秒。
查询获取指标的频率(是一个环境变量)
rabbitmq-diagnostics environment | grep collect_statistics_interval当使用RabbitMQ的管理UI默认5秒自动刷新时,保持默认的 collect_statistics_interval 设置是最佳的。由于这个原因,两个时间间隔默认都是 5000 毫秒(5秒)。
5 配置到 Prometheus
添加如下内容到 prometheus.yml 文件中
scrape_configs:- job_name: 'rabbitmq-exporter'static_configs:- targets:- rabbitmq1-host:15692- rabbitmq2-host:15692- rabbitmq3-host:156926 关于聚合指标和每个对象指标
RabbitMQ 可以通过两种模式返回 Prometheus 指标: 聚合:指标按名称聚合。在输出大小不变的情况下,即使对象数量(例如连接和队列)增加,这种模式的性能开销也较低。 每个对象:每个对象度量对的单个度量。由于有大量的统计数据发射实体,例如大量的连接和队列,这可能会导致非常大的有效载荷和大量的CPU资源用于串行数据输出。 对于大型部署,指标聚合是一种更可预测且更实用的选项。 它相对于系统中发出度量的对象的数量进行了很好的扩展 (连接、通道、队列、使用者等),保持较小的响应大小和时间。 可以预见的是,它也很容易可视化。
度量聚合的缺点是它会丢失数据保真度。聚合不可能实现每个对象的度量和警报。个别对象度量虽然在某些情况下非常有用,但也很难可视化。考虑一下一张有20万个连接的图表会是什么样子,以及运营商是否能够理解它,以及运维是否能够理解它。
6.1 获取聚合指标 /metrics
默认情况下,RabbitMQ返回此端点上的聚合度量。
如果您希望在/metrics端点上返回每个对象(未聚合)的度量,请将prometheus.return_per_object_metrics设置为true:
# 可能导致产生非常过量的输出,
# 仅适用于具有相对较少的度量发射对象(如连接和队列)的环境
prometheus.return_per_object_metrics = true6.2 每次请求获取到每个监控指标的监控数据 /metrics/per-object
GET /metrics/per-object它总是返回所有每个对象的度量,而不管 prometheus.return_per_object_metrics 的值是多少。 因此,您可以保留 prometheus_return_pr_object_metris 的默认值,该值为 false,并在必要时仍然抓取每个对象的指标,通过在Prometheus目标配置中设置metrics_path=/metrics/per-object(有关其他信息,请查看PrometheusDocumentation)。
6.3 请求获取指定某个监控指标的监控数据 /metrics/detailed
如前所述,在具有大量实体的环境中使用每对象度量在计算上非常昂贵。例如,/metrics/per-object返回系统中所有实体的所有度量,即使大多数客户端(如监控工具)没有使用其中的许多度量。
这就是为什么每个对象指标都有一个单独的端点,允许调用者只查询他们需要的指标:
GET /metrics/detailed?vhost=/vhost=