用Kibana和logstash快速搭建实时日志查询、收集与分析系统

  Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。
kibana 也是一个开源和免费的工具,他可以帮助您汇总、分析和搜索重要数据日志并提供友好的web界面。他可以为 Logstash 和 ElasticSearch 提供的日志分析的 Web 界面
说到这里,我们看看 kibana 和 logstash到底能为我们做些什么呢?下面是kibana的界面

  简单来讲他具体的工作流程就是 logstash agent 监控并过滤日志,将过滤后的日志内容发给redis(这里的redis只处理队列不做存储),logstash index将日志收集在一起交给
全文搜索服务ElasticSearch 可以用ElasticSearch进行自定义搜索 通过Kibana来结合 自定义搜索进行页面展示,下图是 Kibana上的流程图


好了 让我们一步步的把这套环境搭建起来吧,先看看都需要安装什么软件包
ruby 运行Kibana 必须,
rubygems 安装ruby扩展必须
bundler 功能类似于yum
JDK 运行java程序必须
redis 用来处理日志队列
logstash 收集、过滤日志
ElasticSearch 全文搜索服务(logstash集成了一个)
kibana 页面展示
这里有三台服务器
192.168.233.128 logstash index,ElasticSearch,kibana,JDK
192.168.233.129 logstash agent,JDK
192.168.233.130 redis


首先到 logstash index服务器上面,logstash分为 index和aget ,agent负责监控、过滤日志,index负责收集日志并将日志交给ElasticSearch 做搜索
此外 logstash 的收集方式分为 standalone 和 centralized。
standalone 是所有功能都在一个服务器上面,自发自收,centralized 就是集中收集,一台服务器接收所有shipper(个人理解就是logstash agent)的日志。
其实 logstash本身不分 什么 shipper 和 collector ,只不过就是配置文件不同而已,我们这次按照集中的方式来测试

在 logstash index上安装基础的软件环境
1. [192.168.233.128 root@nodec:~] 
2. # cd /soft/ 
3. [192.168.233.128 root@nodec:/soft] 
4. # wget down1.chinaunix/distfiles/jdk-6u13-dlj-linux-i586.bin 
5. 从oracle下载实在是太慢了,从CU下载会快一些,如果需要最新版本请访问这里 
6. acle/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 
7. [192.168.233.128 root@nodec:/soft] 
8. # sh jdk-6u13-dlj-linux-i586.bin 
9. 输入yes 便开始安装了 
10. 安装完成后设置一下 JAVA_HOME 
11. [192.168.233.128 root@nodec:/soft/Kibana-0.2.0] 
12. # vim /etc/profile 
13. export JAVA_HOME=/usr/java 
14. export PATH=$JAVA_HOME/bin:$PATH 
15. export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH 
16.  
17. 安装ruby 就比较简单了(Kibana需要ruby 1.8.7以上版本) 
18. [192.168.233.128 root@nodec:/soft] 
19. # yum install ruby rubygems 
20. ..... 安装内容省略 
21. 安装完成后用 rubygems 来安undler 
22. [192.168.233.128 root@nodec:/soft] 
23. # /usr/bin/gem install bundler 
24. ..... 
25.  
26. ok 这样基本的环境就已经有了,下面就是安装kibana 和 logstash 
27. 其实logstash 就是一个java脚本,不需要安装... 下载即用 
28. [192.168.233.128 root@nodec:/soft] 
29. # wget logstash.objects.dreamhost/release/logstash-1.1.0-monolithic.jar 
30. 现在看看 这个脚本应该怎么去执行 
31. [192.168.233.128 root@nodec:/soft] 
32. # java -jar /soft/logstash-1.1.0-monolithic.jar -h 
33. No such command "-h" 
34. Available commands: 
35.   -v 
36.   -V 
37.   --version 
38.   agent 
39.   web 
40.   test 
41. 显然没有 -h 参数,不过列出了能用的参数,但是logstash的参数可不止这些, 
42. java -jar /soft/logstash-1.1.0-monolithic.jar agent --help 
43. 这些是在agent模式下的命令参数 
44. -f, --config CONFIGFILE 
45.     Load the logstash config from a specific file, directory, or a wildcard. If given a directory or wildcard, config files will be read in order lexigraphically. 
46. -e CONFIGSTRING 
47.     Use the given string as the configuration data. Same syntax as the config file. If not input is specified, 'stdin { type => stdin }' is default. If no output is specified, 'stdout { debug => true }}' is default. 
48. -w, --filterworks COUNT 
49.     Run COUNT filter workers (default: 1) 
50. --watchdog-timeout TIMEOUT 
51.     Set watchdog timeout value. 
52. -l, --log FILE 
53.     Log to a given path. Default is to log to stdout 
54. -v 
55.     Increase verbosity. There are multiple levels of verbosity available with '-vv' currently being the highest 
56. --pluginpath PLUGIN_PATH 
57.     A colon-delimted path to find other logstash plugins in 
58. java -jar /soft/logstash-1.1.0-monolithic.jar web --help 
59. 下面的是在web界面的参数 
60. --log FILE 
61.     Log to a given path. Default is stdout. 
62. jdk怎么使用--address ADDRESS 
63.     Address on which to start webserver. Default is 0.0.0.0. 
64. --port PORT 
65.     Port on which to start webserver. Default is 9292. 
66. -B, --elasticsearch-bind-host ADDRESS 
67.     Address on which to bind elastic search node. 
68. -b, --backend URL 
69.     The backend URL to use. Default is elasticsearch:/// (assumes multicast discovery). You can specify elasticsearch://[host][:port]/[clustername] 
如果上面的这些命令都能执行正常的话就表示logstash可以使用了,但要让他启动还需要一个配置文件
1. [192.168.233.128 root@nodec:/soft] 
2.  
3. # vim&f 
4.  
5. input {
6. redis { 
7.   host => '192.168.233.130' 
8.   data_type => 'list' 
9.   port => "6379" 
10.   key => 'logstash:redis' 
11.   type => 'redis-input' 
12.        } 
13.        }
14.  
15. output { 
16.     elasticsearch { 
17.     embedded => true 
18.                   } 
19.        } 
解释一下logstash的配置文件由 input filter output 等几个基本的部分组成,顾名思义 input 就是在那收集数据,output就是输出到哪,filter代表一个过滤规则意思是什么内容
会被收集。
上面这段是让logstash去192.168.233.130 这个redis服务器上去收集日志redis端口为6379,key是logstash:redis类型为redis-input ,(注意:这几个值必须跟logstash agent的

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。