【问题标题】:How to configure logstash 2.3.3 websocket如何配置logstash 2.3.3 websocket
【发布时间】:2016-07-05 21:30:53
【问题描述】:

我正在尝试让 logstash 2.3.3 websocket 输入工作。

Logstash:https://download.elastic.co/logstash/logstash/logstash-2.3.3.tar.gz

用于 Logstash 的 Websocket 输入插件:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-websocket.html

Websocket 服务器:https://github.com/joewalnes/websocketd/releases/download/v0.2.11/websocketd-0.2.11-linux_amd64.zip

Websocket 客户端:Chrome 插件“简单的 Web Socket 客户端”

我知道去年 logstash 1.5.0 和 websocket 输入插件提交的一个错误。 https://github.com/logstash-plugins/logstash-input-websocket/issues/3 我也收到了同样的错误信息,虽然我不能再重现它们了。以下是我目前的程序和结果。我希望这个错误已经得到修复,我只是找不到正确的配置。

首先我安装了插件并确认它被列为已安装。

/app/bin/logstash-plugin list | grep "websocket"

接下来,我检查了 logstash 是否正在使用以下配置

input {
  stdin { }
}

output {
  file {
    path => "/app/logstash-2.3.3/logstash-log.txt"
  }
}

Logstash 有效。

/app/logstash-2.3.3/bin/logstash agent --config /app/logstash-2.3.3/logstash.conf
Hello World

包含的文件logstash-log.txt:

{"message":"Hello World","@version":"1","@timestamp":"2016-07-05T20:04:14.850Z","host":"server-name.domain.com"}

接下来我打开了9300端口

我写了一个简单的 bash 脚本来返回一些数字

#!/bin/bash

case $1 in
  -t|--to)
  COUNTTO=$2
  shift
  ;;
esac
shift
printf 'Count to %i\n' $COUNTTO

for COUNT in $(seq 1 $COUNTTO); do
  echo $COUNT
  sleep 0.1
done

我启动了指向我的 bash 脚本的 websocketd

/app/websocketd --port=9300 /app/count.sh --to 7

我在 Chrome 中打开 Simple Web Socket Client 并连接

ws://server-name.domain.com:9300

成功!它返回以下内容。

Count to 7
1
2
3
4
5
6
7

此时我知道 websocketd 有效,logstash 有效。现在是麻烦开始的时候了。

Logstash websocket 输入配置文件

input {
  websocket {
    codec => "plain"
    url => "ws://127.0.0.1:9300/"
  }
}

output {
  file {
    path => "/app/logstash-2.3.3/logstash-log.txt"
  }
}

运行配置测试

/app/logstash-2.3.3/bin/logstash agent --config /app/logstash-2.3.3/logstash.conf --configtest

收到“配置OK”

启动 websocketd

/app/websocketd --port=9300 /app/logstash-2.3.3/bin/logstash agent --config /app/logstash-2.3.3/logstash.conf

回到 Simple Web Socket Client,我连接到 ws://server-name.domain.com:9300。我看到一条消息弹出我开始了一个会话。

Tue, 05 Jul 2016 20:07:13 -0400 | ACCESS | session    | url:'http://server-name.domain.com:9300/' id:'1467732248361139010' remote:'192.168.0.1' command:'/app/logstash-2.3.3/bin/logstash' origin:'chrome-extension://pfdhoblngbopfeibdeiidpjgfnlcodoo' | CONNECT

我尝试发送“hello world”。服务器上没有任何明显的事情发生。大约 15 秒后,我在控制台窗口中看到了断开连接的消息。永远不会创建 logstash-log.txt。

有什么想法可以尝试吗?谢谢!

更新 1:

我尝试将以下内容放入名为“launch_logstash.sh”的 bash 脚本中:

#!/bin/bash

exec /app/logstash-2.3.3/bin/logstash agent --config /app/logstash-2.3.3/logstash.conf

然后我就这样启动了 websocketd:

/app/websocketd --port=9300 /app/logstash-2.3.3/bin/launch_logstash.sh

同样的结果;没有成功。

【问题讨论】:

    标签: sockets websocket logstash


    【解决方案1】:

    在仔细阅读 websocketd 文档后,它会将在套接字上接收到的数据发送到程序的标准输入。我试图在我的 logstash 配置中监听一个套接字,但数据实际上是进入该应用程序的标准输入。我将我的配置更改为:

    input {
      stdin { }
    }
    
    output {
      file {
        path => "/app/logstash-2.3.3/logstash-log.txt"
      }
    }
    

    然后像这样启动 websocketd:

    /app/websocketd --port=9300 /app/logstash-2.3.3/bin/logstash agent --config /app/logstash-2.3.3/logstash.conf
    

    简而言之,在 logstash-websocket-input 实现其服务器选项之前,如果使用 websocketd 作为 Web 服务器,则 stdin{} 和 stdout{} 是输入和输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      相关资源
      最近更新 更多