mongodb - Mongo::Error::NoServerAvailable: No Primary server is available in cluster -- 使用logstash到docker中的mongodb数据时出错
问题描述
这是我的 logstash.conf 配置
input{
stdin{
}
jdbc{
jdbc_connection_string => "jdbc:mysql://ip:3306/database"
jdbc_user => "root"
jdbc_password => ""
jdbc_driver_library => "/app/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
record_last_run => "true"
use_column_value => "false"
tracking_column => "id"
last_run_metadata_path => "/app/info/station_parameter.txt"
clean_run => "false"
jdbc_paging_enabled => "true"
jdbc_page_size => 100
statement => "select * from database where id>=1"
schedule => "* * * * *"
}
}
output{
mongodb{
uri => "mongodb://192.168.1.103:27017"
database => "mydata"
collection => "mycollection"
}
}
错误是
向 MongoDB 发送事件失败,3 秒后重试 {:event=>#, :exception=>#]> with timeout=30, LT=0.015>}
解决方案
不确定您是否觉得这很有用,但我们在两种不同的情况下遇到了相同的问题并解决了它,我想与您分享,
由于 docker 文件中的网络相关问题,客户端无法解析主服务器地址,这是导致此错误的原因,mongodb 服务器已启动并正在运行,但客户端无法解析地址,因此引发了错误。
mongodb 重新启动(或由于某种原因连接丢失),当 mongodb 重新上线时,mongoid 客户端(ruby)无法再次重新连接,解决方案是重新启动客户端,再次建立连接。经过调查,我会说很可能是驱动程序和mongodb服务器的版本不兼容。
一般来说,我们无法找到永久的解决方案,这似乎是 mongodb 驱动程序的问题,但可以肯定的是,请检查 mongodb 驱动程序和服务器的兼容性。
推荐阅读
- swift - Swift 如何处理协议是否有解决此错误的方法?
- python - PyDrive - 擦除文件的内容
- python - 根据用户的输入生成相似的短语
- mongodb - 如何过滤mongodb文档中的字符串数组?
- apache-royale - Apache Royale 中表单帖子的目标属性
- visualizer - 一种将 xstate 可视化器链接到反应应用程序的方法
- android - React Native Android App 崩溃:致命信号 11 (SIGSEGV),代码
- reactjs - 反应 | 材质-UI | 滑动抽屉无法通过滑动打开
- python - 无法使用 Python 从 AWS Glue 数据库/表中读取数据
- sql - 在具有完整客户记录的内部联接中选择不同