Logstash:使用curl发送日志

Logstash:使用curl发送日志,curl,logstash,Curl,Logstash,我有一个麋鹿服务器来管理我的日志。通常情况下,它们会自动发送到automaticaly。一切正常。 但由于某些原因,有时我们需要发送一个日志文件 我试着这样做: curl -F "file=@<my_file_path>" http://<ELK_server_host>:5001 这项工作确实很好,但是有两个小困难: 忽略文件的最后一行(非空) Curl命令永不停止。我必须用Ctrl+C组合键杀人 也许这两点是相互联系的,但有什么解决办法呢?也许多行过滤器有问题?

我有一个麋鹿服务器来管理我的日志。通常情况下,它们会自动发送到automaticaly。一切正常。 但由于某些原因,有时我们需要发送一个日志文件

我试着这样做:

curl -F "file=@<my_file_path>" http://<ELK_server_host>:5001
这项工作确实很好,但是有两个小困难:

  • 忽略文件的最后一行(非空)
  • Curl命令永不停止。我必须用Ctrl+C组合键杀人

也许这两点是相互联系的,但有什么解决办法呢?也许多行过滤器有问题?

我想如果您使用logger命令,它会更好,因为它可以让您更好地控制发送的内容:

logger  -t your_tag -p "local1.info" --file /path/to/file --server <ELK_server_host> --tcp --port 5001 
logger-t您的_标记-p“local1.info”--file/path/to/file--server--tcp--port 5001

第1部分:

没有更多的信息很难回答这个问题。但我希望日志文件的最后一行不会以换行符结尾?logstash输入编解码器“line”正在每行末尾寻找换行符

要在Windows中添加一个:

echo. >> path\to\your_log_file
第二部分:

cURL用于与HTTP服务器进行通信。Logstash输入“tcp”不是HTTP服务器,并且不发送在上载结束时所期望的HTTP响应

最好使用这样的工具通过TCP发送数据

p.S


“UFT-8”看起来像一个输入错误。

要正确支持HTTP,您需要在
输入{…}
部分添加以下过滤器:

http {
    port => "5050"
    codec => "json"
}
然后,您可以像tomcat访问日志中的一行一样将JSON文档发布到端口5050

{
    "message": "[20/Feb/2019:14:31:22 +0100] 10.3.249.128 - 200 \"GET /my/path/foo/bar HTTP/1.1\" 0 0 -",
    "fields": {
        "source": "access",
        "system": "dev"
    }
}

我应该说我想从Windows(客户端)发送日志。这个命令在Linux上可用,对吗?
{
    "message": "[20/Feb/2019:14:31:22 +0100] 10.3.249.128 - 200 \"GET /my/path/foo/bar HTTP/1.1\" 0 0 -",
    "fields": {
        "source": "access",
        "system": "dev"
    }
}