标准输入(Stdin)

我们已经见过好几个示例使用 stdin 了。这也应该是 logstash 里最简单和基础的插件了。

所以,在这段中,我们可以学到一些未来每个插件都会有的一些方法。

配置示例

  1. input {
  2. stdin {
  3. add_field => {"key" => "value"}
  4. codec => "plain"
  5. tags => ["add"]
  6. type => "std"
  7. }
  8. }

运行结果

用上面的新 stdin 设置重新运行一次最开始的 hello world 示例。我建议大家把整段配置都写入一个文本文件,然后运行命令:bin/logstash -f stdin.conf。输入 “hello world” 并回车后,你会在终端看到如下输出:

  1. {
  2. "message" => "hello world",
  3. "@version" => "1",
  4. "@timestamp" => "2014-08-08T06:48:47.789Z",
  5. "type" => "std",
  6. "tags" => [
  7. [0] "add"
  8. ],
  9. "key" => "value",
  10. "host" => "raochenlindeMacBook-Air.local"
  11. }

解释

typetags 是 logstash 事件中两个特殊的字段。通常来说我们会在输入区段中通过 type 来标记事件类型 —— 我们肯定是提前能知道这个事件属于什么类型的。而 tags 则是在数据处理过程中,由具体的插件来添加或者删除的。

最常见的用法是像下面这样:

  1. input {
  2. stdin {
  3. type => "web"
  4. }
  5. }
  6. filter {
  7. if [type] == "web" {
  8. grok {
  9. match => ["message", %{COMBINEDAPACHELOG}]
  10. }
  11. }
  12. }
  13. output {
  14. if "_grokparsefailure" in [tags] {
  15. nagios_nsca {
  16. nagios_status => "1"
  17. }
  18. } else {
  19. elasticsearch {
  20. }
  21. }
  22. }

看起来蛮复杂的,对吧?

继续学习,你也可以写出来的。