返回介绍

扩展方案 - Message::Passing

发布于 2020-06-28 10:03:43 字数 3273 浏览 879 评论 0 收藏 0

Message::Passing 是一个仿造 Logstash 写的 Perl5 项目。项目早期甚至就直接照原样也叫 “Logstash” 的名字。

但实际上,Message::Passing 内部原理设计还是有所偏差的。这个项目整个基于 AnyEvent 事件驱动开发框架(即著名的 libev 库)完成,也要求所有插件不要采取阻塞式编程。所以,虽然项目开发不太活跃,插件接口不甚完善,但是性能方面却非常棒。这也是我从多个 Perl 日志处理框架中选择介绍这个的原因。

Message::Passing 有比较全的 input 和 output 插件,这意味着它可以通过多种协议跟 logstash 混跑,不过 filter 插件比较缺乏。对等于 grok 的插件叫 Message::Passing::Regexp( 我写的,嘿嘿)。下面是一个完整的配置示例:

  1. use Message::Passing::DSL;
  2. run_message_server message_chain {
  3. output stdout => (
  4. class => 'STDOUT',
  5. );
  6. output elasticsearch => (
  7. class => 'ElasticSearch',
  8. elasticsearch_servers => ['127.0.0.1:9200'],
  9. );
  10. encoder("encoder",
  11. class => 'JSON',
  12. output_to => 'stdout',
  13. output_to => 'es',
  14. );
  15. filter regexp => (
  16. class => 'Regexp',
  17. format => ':nginxaccesslog',
  18. capture => [qw( ts status remotehost url oh responsetime upstreamtime bytes )]
  19. output_to => 'encoder',
  20. );
  21. filter logstash => (
  22. class => 'ToLogstash',
  23. output_to => 'regexp',
  24. );
  25. decoder decoder => (
  26. class => 'JSON',
  27. output_to => 'logstash',
  28. );
  29. input file => (
  30. class => 'FileTail',
  31. output_to => 'decoder',
  32. );
  33. };

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文