Logstash:使用curl发送日志

 weijun520 发布于 2022-12-04 01:30

我有一个ELK服务器来管理我的日志.通常他们会自动发送.一切正常.但出于某种原因,有时我们需要发送一个日志文件.

我想这样做:

curl -F "file=@" http://:5001

这个conf(在这里有用的部分)在服务器端:

input {
    ...
    tcp {
        port => 5001
        type => "curl"
        codec => line { charset => "UFT-8" }
    }
    .....
}

filter {
    .....
    if "curl" == [type] {
        multiline {
            pattern => "^%{TIMESTAMP_ISO8601}"
            negate => true
            what => previous
        }
        grok {.....}
        date {.....}
    }
    .....
}

output {
    stdout { codec => rubydebug }
    elasticsearch {
        host => localhost
    }
}

这项工作真的很好但是有两个小困难:

忽略文件的最后一行(非空)

卷曲命令永远不会停止.我必须用Ctrl + C杀死.

也许这两点是相关的,但有什么解决方案?也许多线过滤器有问题?

1 个回答
  • 第1部分:

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

    要在Windows中添加一个:

    echo. >> path\to\your_log_file
    

    第2部分:

    cURL用于与HTTP服务器通信.Logstash输入"tcp"不是HTTP服务器,并且不会在上载结束时发送cURL期望的HTTP响应.

    你最好使用像Netcat这样的工具来通过TCP发送数据.

    PS

    "UFT-8"看起来像一个错字.

    2022-12-11 02:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有