ELK之Logstash
Elasticsearch/Logstash/Kibana作为目前开源领域最为炙手可热的监控三剑客声名大噪。ELK三者各司其职,本文将极为简单地介绍一下如何使用Docker将Logstash跑起来收取数据。
·
Elasticsearch/Logstash/Kibana作为目前开源领域最为炙手可热的监控三剑客声名大噪。ELK三者各司其职,本文将极为简单地介绍一下如何使用Docker将Logstash跑起来收取数据。
docker pull
取得logstash的官方镜像
[root@host34 ~]# docker pull logstash
Using default tag: latest
latest: Pulling from library/logstash
357ea8c3d80b: Already exists
52befadefd24: Already exists
42f3df327392: Pull complete
3decae4e9763: Pull complete
0a60a7e0c31d: Pull complete
b42727ba883d: Pull complete
98299a24213c: Pull complete
bce15ff1cbf7: Pull complete
b9ded4ed7c99: Pull complete
3181c22f5a6b: Pull complete
bbfd3230c943: Pull complete
f505f3e96b8f: Pull complete
1061041d49b4: Pull complete
871b0ca55612: Pull complete
Digest: sha256:5c8bcc7785eedf69043ec758d72fc3edc3a6a965067c87084168fff0eb534644
Status: Downloaded newer image for logstash:latest
[root@host34 ~]#
logstash的设定文件
logstash的设定文件中标准有input/filter/ouptput三种,filter可以省略。如果不知道这个如何运转,我们可以使用一个不需要设定文件的方式,或者说inline的方式将docker运转起来。
docke run(inline设定文件)
启动
[root@host34 ~]# docker run -it --rm logstash logstash -e 'input { stdin { } } output { stdout { } }'
Settings: Default pipeline workers: 1
Pipeline main started
可以看到 logstash已经启动了,其以标准输入stdin作为stdin,标准输出stdout作为stdout。其接受标准输入,并将接受到的标准输入打到标准输出上。
分别输入hello world,可以从标准输出上看到结果
hello
2016-08-20T03:34:43.655Z 6f0a25618ecd hello
world
2016-08-20T03:34:48.692Z 6f0a25618ecd world
准备logstash的设定文件
通过一个极其简单的inline的设定方式,我们知道logstash确实能够收集到相关信息,至少标准输入的信息能够获取到。而通过使用logstash的设定文件能否正常做到这一点呢,下面通过一个简单的试验来看一下。
[root@host34 config-dir]# pwd
/root/config-dir
[root@host34 config-dir]# ll
total 4
-rw-r--r--. 1 root root 168 Aug 19 23:38 logstash.conf
[root@host34 config-dir]# cat logstash.conf
input {
file { path =>"/tmp/test_for_input.log" type =>"test_input"}
}
filter {
}
output {
stdout {}
}
[root@host34 config-dir]#
logstash的
docker run(logstash.conf)
启动了一个名为logstash的container,并将做成的logstash.conf映射到容器内。
命令:docker run -it --name logstash --rm -v "$PWD":/config-dir logstash logstash -f /config-dir/logstash.conf
[root@host34 config-dir]# docker run -it --name logstash --rm -v "$PWD":/config-dir logstash logstash -f /config-dir/logstash.conf
Settings: Default pipeline workers: 1
Pipeline main started
进入到容器logstash中,生成input对象文件test_for_input.log并向其输入数据。
[root@host34 ~]# docker exec -it logstash /bin/bash
root@1ca6e11b5f61:/# echo "hello, this is the message from liumiao" >/tmp/test_for_input.log
root@1ca6e11b5f61:/# echo "how are you" >> /tmp/test_for_input.log
root@1ca6e11b5f61:/# echo "fine , thank you, and you" >>/tmp/test_for_input.log
root@1ca6e11b5f61:/# echo "I am fine too" >> /tmp/test_for_input.log
root@1ca6e11b5f61:/#
logstash的标准输出上及时地得到了搜集的信息
2016-08-20T04:02:06.441Z 1ca6e11b5f61 hello, this is the message from liumiao
2016-08-20T04:02:21.511Z 1ca6e11b5f61 how are you
2016-08-20T04:02:37.569Z 1ca6e11b5f61 fine , thank you, and you
2016-08-20T04:02:46.593Z 1ca6e11b5f61 I am fine too
更多推荐
已为社区贡献51条内容
所有评论(0)