ruby-on-rails - 无法使用 logstash-logger gem 将日志发送到另一台服务器中的 logstash
问题描述
我正在使用 rails 5.2.1 和 ruby 2.5.0。我在环境文件中包含以下内容
config.logstash = [
{
type: :tcp,
port: 5044,
host: 'log server ip addrees',
verify_hostname: false
}
]
在 Gemfile
gem "lograge"
gem "logstash-event"
gem 'logstash-logger'
然后我打开了日志服务器的入站端口 5044 和应用服务器的出站端口。但是显示错误
[LogStashLogger::Device::TCP] Errno::EPIPE - Broken pipe
我已经在日志服务器中安装了 elk 堆栈来接收来自 stg 和 dev 服务器的日志。但目前正在收到上述错误。
我还有另一个疑问,如果它成功了,那么我如何识别日志来自哪个服务器(stg 或 prod)?
解决方案
我通过将日志写入文件解决了这个问题。然后使用应用程序firebeat将 Json 文件发送到 logstash 服务器。它将新的日志发送到服务器读取的logstash服务器的5044端口。在filebeat中,我将一个变量设置为prod,stg对应于每个服务器,以识别logstash配置中的服务器。
推荐阅读
- java - 如果我删除不管理此关联的实体,是否有办法让 Hibernate 处理删除 @ManyToMany 关联中的条目?
- lua - 错误 main.lua:98:尝试索引本地“e”(一个数值)
- c++ - Unix TCP socket send() 不能正确下载除 HTML 文件以外的任何其他文件?
- php - 如何从任何控制器 Laravel 5.7 访问模型内的变量?
- hive - 设置什么配置单元属性以避免交叉产品?
- unity3d - 在统一编辑器中,点光源没有亮度
- javascript - 使用 React 和 Node/express 服务器的 SendGrid 配置
- css - 如何在保持可维护性的同时避免移动/桌面 CSS 之间的重复?
- android - Mobilefirst 8 Cordova插件android构建失败
- node.js - 传递多个参数来表达