Sensu TCP连接问题解决方案

91次阅读
没有评论

问题描述

在一个虚拟机上运行着一个新的Sensu/Uchiwa堆栈,这是一个“独立”安装 – redis、rabbitmq、sensu-server、sensu-api、sensu-client和uchiwa都安装在同一台机器上。用户有一个单一的检查,客户端通过client.json订阅它。然而,一些问题出现了。当用户登录到Uchiwa仪表板时,出现了一个警告消息:“数据中心sensu-81返回:500 INTERNAL SERVER ERROR”。sensu-client、sensu-api和sensu-server的日志中充满了以下消息:

==> /var/log/sensu/sensu-api.log <=={"timestamp":"2017-05-11T21:00:34.758243+0000","level":"warn","message":"transport connection error","reason":"tcp connection lost"}{"timestamp":"2017-05-11T21:00:34.758784+0000","level":"warn","message":"transport connection error","reason":"possible authentication failure. wrong credentials?","user":"sensu"}==> /var/log/sensu/sensu-client.log <=={"timestamp":"2017-05-11T21:00:35.973060+0000","level":"warn","message":"transport connection error","reason":"tcp connection lost"}{"timestamp":"2017-05-11T21:00:35.974858+0000","level":"warn","message":"transport connection error","reason":"possible authentication failure. wrong credentials?","user":"sensu"}==> /var/log/sensu/sensu-server.log <=={"timestamp":"2017-05-11T21:00:37.489540+0000","level":"warn","message":"transport connection error","reason":"tcp connection lost"}{"timestamp":"2017-05-11T21:00:37.489704+0000","level":"warn","message":"transport connection error","reason":"possible authentication failure. wrong credentials?","user":"sensu"}

这些消息表明存在与传输层连接的错误,因此用户检查了transport.json,确保其配置如预期一样。同时,用户还检查了sensu的rabbitmq.json,确认其配置也符合预期。用户还确认了rabbitmq本身的配置,确保SSL打开。用户注意到错误消息中提到了TCP连接丢失和可能的身份验证失败。

解决方案

以下是解决问题的方法,建议在实施前备份关键配置文件。

更新Erlang版本

问题的解决涉及到Erlang版本的更新。在Sensu与RabbitMQ之间的通信过程中,使用了Erlang。用户在查看RabbitMQ连接问题的日志时,注意到了一个与amqp相关的问题。通过查阅该问题,用户了解到这可能与Erlang的版本有关,而且需要Erlang版本在17.5及以上。

步骤

  1. 首先,查看当前的Erlang版本,以确定是否需要升级。
  2. 如果当前版本低于17.5,那么需要升级Erlang至17.5或更高版本。
  3. 在升级Erlang之后,重新启动Sensu和RabbitMQ服务。

示例脚本

以下是一个简单的示例脚本,用于在Ubuntu 14.04上升级Erlang至17.5版本:

# 添加Erlang Solutions存储库
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb

# 更新软件包列表
sudo apt-get update

# 安装Erlang
sudo apt-get install -y erlang

# 验证安装
erl

请注意,脚本仅为示例,实际操作可能因操作系统版本或其他因素而有所不同。确保在操作之前备份重要数据和配置文件。

结论

通过升级Erlang版本,用户可以解决Sensu与RabbitMQ之间的连接问题。当通信问题涉及底层依赖组件时,如Erlang,时,理解这些依赖的版本要求非常重要。通过仔细阅读错误日志,查找相关问题并寻找解决方法,用户成功地解决了这个问题。

提示:在进行任何操作之前,请确保对关键配置文件和数据进行备份,以防意外情况发生。

注意:本示例中的操作适用于特定情况。具体操作可能因操作系统版本、软件版本和配置差异而有所不同。在进行操作时,请参考官方文档和指南,以确保正确性和安全性。

来源链接

正文完