Logstash从http输出插件捕获http响应

时间:2016-10-06 13:22:02

标签: logstash logstash-configuration

我写了一个logstash程序,将一些消息发布到URL。 logstash没有错误,但我想知道有没有办法从url捕获我们使用http输出插件发布的内容?

    public static byte[] ConcatenatePdfs(IEnumerable<byte[]> documents)
    {
        using (var ms = new MemoryStream())
        {
            var outputDocument = new Document();
            var writer = new PdfCopy(outputDocument, ms);
            outputDocument.Open();

            foreach (var doc in documents)
            {
                var reader = new PdfReader(doc);
                for (var i = 1; i <= reader.NumberOfPages; i++)
                {
                    writer.AddPage(writer.GetImportedPage(reader, i));
                }
                writer.FreeReader(reader);
                reader.Close();
            }

            writer.Close();
            outputDocument.Close();
            var allPagesContent = ms.GetBuffer();
            ms.Flush();

            return allPagesContent;
        }
    }

我已经阅读了文档,但我没有发现任何事情。 如果这是一个愚蠢的问题,请原谅我。

1 个答案:

答案 0 :(得分:1)

没有愚蠢的问题; - )

不幸的是,没有办法从http输出插件中获得任何响应。如果您获得状态代码为<200>299的HTTP响应,或者在呼叫期间出现异常(例如因为远程服务器已关闭),它将仅记录错误。

之所以这样做是因为无论如何都无法使用响应,因为输出是任何Logstash管道中的最后一步,输出不会相互通信。

你需要的是一个HTTP过滤器插件,一个在输入之后和输出之前执行的插件。你很幸运,因为有一个这样的,并在https://github.com/elastic/logstash/issues/3489

中描述

弹性/ logstash人员已经认识到需要这个,并且正在开发generic lookup filter而不仅仅是HTTP。