搭建该平台的目的就是为了运维、研发很方便的进行日志的查询。Kibana一个免费的web壳;Logstash集成各种收集日志插件,还是一个比较优秀的正则切割日志工具;Elasticsearch一个开源的搜索引擎框架(支持群集架构方式)。
1 安装需求
1.1 理论拓扑
1.2 安装环境
ruby 运行Kibana 必须,
rubygems 安装ruby扩展必须
bundler 功能类似于yum
JDK 运行java程序必须
redis 用来处理日志队列
logstash 收集、过滤日志
ElasticSearch 全文搜索服务(logstash集成了一个)
kibana 页面展示
192.168.233.128 logstash index,kibana,JDK
192.168.233.129 logstash agent,JDK
192.168.233.130 redis
192.168.233.131 ElasticSearch,JDK
logstash分为 index和agent ,agent负责监控、过滤日志,index负责收集日志并将日志交给ElasticSearch 做搜索。 此外 logstash 的收集方式分为 standalone 和 centralized。
standalone 是所有功能都在一个服务器上面,自发自收,centralized 就是集中收集,一台服务器接收所有shipper(个人理解就是logstash agent)的日志。其实 logstash本身不分 什么 shipper 和 collector ,只不过就是配置文件不同而已,我们这次按照集中的方式来测试。
vi /etc/apt/sources.list
deb http://ftp.debian.org/debian/ squeeze main non-free
deb-src http://ftp.debian.org/debian/ squeeze main non-free
# apt-get update
# apt-cache search sun-java
# apt-get install sun-java6-jdk sun-java6-jre
# java -version
# apt-get install ruby rubygems
# gem install bundler
开始安装logstash
- 其实logstash 就是一个java脚本,不需要安装... 下载即用
- [192.168.233.128 root@nodec:/soft]
- # wget http://logstash.objects.dreamhost.com/release/logstash-1.1.0-monolithic.jar
- 现在看看 这个脚本应该怎么去执行
- [192.168.233.128 root@nodec:/soft]
- # java -jar /soft/logstash-1.1.0-monolithic.jar -h
- No such command "-h"
- Available commands:
- -v
- -V
- --version
- agent
- web
- test
- 显然没有 -h 参数,不过列出了能用的参数,但是logstash的参数可不止这些,
- java -jar /soft/logstash-1.1.0-monolithic.jar agent --help
- 这些是在agent模式下的命令参数
- -f, --config CONFIGFILE
- Load the logstash config from a specific file, directory, or a wildcard. If given a directory or wildcard, config files will be readinorder lexigraphically.
- -e CONFIGSTRING
- Use the given string as the configuration data. Same syntax as the config file. If not input is specified, 'stdin { type => stdin }'isdefault. If nooutputis specified, 'stdout { debug => true }}'isdefault.
- -w, --filterworks COUNT
- Run COUNT filter workers (default: 1)
- --watchdog-timeout TIMEOUT
- Set watchdog timeout value.
- -l, --log FILE
- Log to a given path. Defaultisto log to stdout
- -v
- Increase verbosity. There are multiple levels of verbosity available with'-vv' currently being the highest
- --pluginpath PLUGIN_PATH
- A colon-delimted path to find other logstash plugins in
- java -jar /soft/logstash-1.1.0-monolithic.jar web --help
- 下面的是在web界面的参数
- --log FILE
- Log to a given path. Defaultis stdout.
- --address ADDRESS
- Address on which to start webserver. Defaultis 0.0.0.0.
- --port PORT
- Port on which to start webserver. Defaultis 9292.
- -B, --elasticsearch-bind-host ADDRESS
- Address on which to bind elastic search node.
- -b, --backend URL
- The backend URL to use. Defaultis elasticsearch:/// (assumes multicast discovery). You can specify elasticsearch://[host][:port]/[clustername]
如果上面的这些命令都能执行正常的话就表示 logstash可以使用了,但要让他启动还需要一个配置文件
input {
redis {
host => '192.168.233.130'
data_type => 'list'
port => "6379"
key => 'logstash:redis'
type => 'redis-input'
}
}
output {
elasticsearch {
host => '192.168.233.131'
port => "9300"
}
}
解释一下 logstash的配置文件由 input filter output 等几个基本的部分组成,顾名思义 input 就是在那收集数据,output就是输出到哪,filter代表一个过滤规则意思是什么内容 会被收集。 上面这段是让 logstash 去192.168.233.130 这个redis服务器上去收集日志 redis端口为6379,key是 logstash:redis 类型为 redis-input ,(注意:这几个值必须跟logstash agent的 output 所对应),收集完成后输出到 elasticsearch ,embedded => true 的意思是使用logstash 内嵌的 elasticsearch。如果有独立的elasticsearch服务器,需要将 这条改为 host => 'elasticsearch的ip' port => 端口
安装redis
下载安装就比较简单了
下载安装就比较简单了
配置文件里的那几个路径要提前建好 mkdir -p /data/redis cd /data/redis/ mkdir {db,log,etc}
- [192.168.233.130 root@nodea:/soft]
- # wget http://redis.googlecode.com/files/redis-2.4.14.tar.gz
- [192.168.233.130 root@nodea:/data/redis/etc]
- # make –j24
- [192.168.233.130 root@nodea:/data/redis/etc]
- # make install
-
我用的是最简单的 配置, -
[192.168.233.130 root@nodea:/data/redis/etc] -
# vim redis.conf -
#this is the config file for redis -
pidfile /var/run/redis.pid -
port 6379 -
timeout 0 -
loglevel verbose -
logfile /data/redis/log/redis.log -
dbfilename dump.rdb -
dir /data/redis/db/ -
vm-swap-file /tmp/redis.swap -
activerehashing yes -
启动命令如下 -
[192.168.233.130 root@nodea:/data/redis/etc] -
# redis-server /data/redis/etc/redis.conf &
看看 redis服务的状态
- [192.168.233.130 root@nodea:/data/redis/etc]
- # lsof -i:6379
- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
- redis-ser 2732 root 4u IPv4 7946 TCP *:6379 (LISTEN)
- redis-ser 2732 root 5u IPv4 7963 TCP localhost.localdomain:6379->localhost.localdomain:19214 (ESTABLISHED)
- java 2733 root 9u IPv4 7959 TCP localhost.localdomain:19214->localhost.localdomain:6379 (ESTABLISHED)
安装elasticsearch
elasticsearch会依赖于JAVA_HOME环境变量,所以需要设置JAVA_HOME环境变量。首先查看你的Java的安装路径
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.18.7.zip
unzip elasticsearch-0.18.7.zip
mv elasticsearch-0.18.7 /usr/local/share/elasticsearch
cd /usr/local/share/elasticsearch/bin/
好了,可以让logstash index 开始启动了
好了,看到9292 端口启动就代表 启动成功了,检查一下
现在可以通过浏览器访问一下 http://192.168.233.128:9292 看看logstash是的页面是个什么样子
现在还不能搜索因为现在还没有数据,其实这个时候 http://192.168.233.128:9200 也是可以访问的,
很多开发自己写代码来调用elasticsearch 来实现他们自己的需要,这里就不多说了。
- [192.168.233.128 root@nodec:/soft]
- # lsof -i:9292
- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
- java 5205 root 465u IPv4 130805 TCP *:armtechdaemon (LISTEN)
- 其实logstash还启动了一个端口9200,因为启动了内嵌的 elasticsearch,这个9200是 elasticsearch在监听
- [192.168.233.128 root@nodec:/soft]
- # lsof -i:9200
- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
- java 5205 root 160u IPv4 130682 TCP *:wap-wsp (LISTEN)
[192.168.233.128 root@nodec:/soft]- # java -jar /soft/logstash-1.1.0-monolithic.jar agent -f /soft/redis.conf -- web &
- [1] 5205
- ...这里要等待约5秒钟... 为什么?去问开发者吧
- [192.168.233.128 root@nodec:/soft]
- # I, [2013-03-19T03:23:10.749000 #5205] INFO -- : Using beta plugin 'redis'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status {"timestamp":"2013-03-19T03:23:10.732000 -0700","message":"Using beta plugin 'redis'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status ","level":"info"}
- file:/soft/logstash-1.1.0-monolithic.jar!/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53 warning: already initialized constant WFKV_
- Mizuno 0.5.0 (Jetty 8.0.y.z-SNAPSHOT) listening on 0.0.0.0:9292
- 解释一下 上面的命令 agent 代理模式 -f 指定配置文件 --web 其实是个分隔符等于又启动了一个命令,后面的参数就是开启一个web页面默认端口是9292,这个命令如果拆成两个就是这个样子
- java -jar /soft/logstash-1.1.0-monolithic.jar agent -f /soft/redis.conf &
- java -jar /soft/logstash-1.1.0-monolithic.jar web &
登录到 服务器 192.168.233.129 安装基本软件包和logstash
- [192.168.233.129 root@noded:/soft]
- # atp-get install ruby
- 192.168.233.129 root@noded:/soft]
- # wget http://logstash.objects.dreamhost.com/release/logstash-1.1.0-monolithic.jar
- [192.168.233.129 root@noded:/soft]
- # vim redis.conf
- input {
- file {
- type => "producer"
- path => "/soft/apache.log"
- }
- file {
- type => "php-log"
- path => "/soft/php.log"
- }
- }
- filter {
- grep {
- match => [ "@message", "mysql|GET|error" ]
- }
- }
- output {
- redis {
- host => '192.168.233.130'
- data_type => 'list'
- key => 'logstash:redis'
- }
- }
大概说一下这个配置文件 input 里的file就是要监视的文件了 这里我监视了两个文件,如果这两个文件有追加的内容就会通过下面的output设置发给 redis服务器
filter 里的grep 意思就是 grep... 后面这段就是日志内容里面只要有匹配 mysql或GET或error的内容就会被过滤出来,发送到 logstash index
以上就是一个比较简单的配置文件了,让我们启动他
- [192.168.233.129 root@noded:/soft]
- # java -jar /soft/logstash-1.1.0-monolithic.jar agent -f /soft/redis.conf &
- I, [2013-03-19T19:45:35.762000 #2721] INFO -- : Using beta plugin 'file'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status {"timestamp":"2013-03-19T19:45:35.752000 -0700","message":"Using beta plugin 'file'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status ","level":"info"}
- I, [2013-03-19T19:45:35.778000 #2721] INFO -- : Using beta plugin 'file'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status {"timestamp":"2013-03-19T19:45:35.778000 -0700","message":"Using beta plugin 'file'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status ","level":"info"}
- I, [2013-03-19T19:45:35.804000 #2721] INFO -- : Using beta plugin 'grep'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status {"timestamp":"2013-03-19T19:45:35.803000 -0700","message":"Using beta plugin 'grep'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status ","level":"info"}
- I, [2013-03-19T19:45:35.854000 #2721] INFO -- : Using beta plugin 'redis'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status {"timestamp":"2013-03-19T19:45:35.853000 -0700","message":"Using beta plugin 'redis'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status ","level":"info"}
只要没有 warning 和 error就算是正常启动了
启动之前请确定 192.168.233.130的 redis服务器已经启动,不然会报错。
最后我们回到 logstash agent 上面测试一下
- [192.168.233.129 root@noded:/soft]
- # echo GET12313 >> apache.log
- [192.168.233.129 root@noded:/soft]
- # echo errorabcd >> apache.log
ok 到 http://192.168.233.128:9292 去搜索一下 刚才的两个内容
嗯,就是这样了,我现在找个php的错误日志给他追加到php.log文件里
[192.168.233.129 root@noded:/soft]
# cat php-error.log >> php.log
在看看 logstash的页面 搜索一下 error
OK,最后就是 Kibana了 ,我把Kibana装在了 logstash index上面
下载地址为 http://kibana.org/intro.html
- [192.168.233.128 root@nodec:/soft]
- # tar xf Kibana-0.2.0.tar.gz
- [192.168.233.128 root@nodec:/soft]
- # cd Kibana-0.2.0
- [192.168.233.128 root@nodec:/soft/Kibana-0.2.0]
- # bundle install
- ( /var/lib/gems/1.8/bin/bundle install )
- 直接安装就好了,非常简单,因为之前咱们已经安装好了 bundle
- 编辑配置文件,指定 elasticsearch 的位置
- [192.168.233.128 root@nodec:/soft/Kibana-0.2.0]
- # vim KibanaConfig.rb
- .....
- Elasticsearch = "192.168.18.131:9200"
- KibanaPort = 5601
- KibanaHost = '0.0.0.0'
- .....
- 主要是这几个参数
- 启动的话需要ruby
- [192.168.233.128 root@nodec:/soft/Kibana-0.2.0]
- # /usr/bin/ruby kibana.rb &
- [192.168.233.128 root@nodec:/soft/Kibana-0.2.0]
- # == Sinatra/1.3.5 has taken the stage on 5601 for development with backup from Thin
- >> Thin web server (v1.5.0 codename Knife)
- >> Maximum connections setto 1024
- >> Listening on 0.0.0.0:5601, CTRL+C to stop
- 如果ruby的东西都不缺的话,启动会很顺利,ok 现在看看5601端口的状态
- [192.168.233.128 root@nodec:/soft/Kibana-0.2.0]
- # lsof -i:5601
- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
- ruby 3116 root 5u IPv4 28947 TCP *:esmagent (LISTEN)
访问一下 试试看 http://192.168.233.128:5601 尝试搜索一下php的错误日志,比如mysql
呵呵,要的就是这个效果,日志会实时的汇总到 logstash index 上供我们查询,当然这只是开始使用logstash的第一步而已,更多的高级功能可以看看官方文档
http://logstash.net/docs/1.1.9/
相关推荐
将这三个组件一起部署,可以构建出一个完整的日志管理解决方案:Logstash 负责收集和预处理日志数据,Elasticsearch 存储和索引这些数据,而 Kibana 则提供直观的界面来展示和分析这些数据。这种组合被称为 "ELK ...
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后...
基于docker-compose构建filebeat + Logstash +Elasticsearch+ kibana日志系统 对nginx日志进行正则切割字段。 https://www.jianshu.com/p/f7927591d530
在日志管理和分析场景中,Logstash 常用来从不同的日志源(如文件、网络设备、应用服务器等)收集日志数据,然后对这些数据进行过滤和转换,最后将处理后的数据发送到Elasticsearch进行存储和分析。Logstash 的配置...
Logstash 负责收集和预处理数据,Elasticsearch 存储并提供快速检索,而 Kibana 则负责数据可视化和交互式分析。对于新手来说,理解并掌握 ELK Stack 的工作原理和配置,能够有效提升日志管理和监控能力。
总结起来,"elasticsearch+logstash+kibana+filebeat.7z (ELK 7.9.0)" 压缩包包含了一套完整的日志管理和分析工具链,适用于大数据环境,可以帮助企业实现高效的数据收集、处理、存储和可视化。通过使用这套工具,...
这个文档详细介绍了如何在CentOS 7环境下设置一套完整的监控解决方案,包括 Suricata 作为核心的威胁检测引擎,以及 ELK(Elasticsearch, Logstash, Kibana)堆栈用于数据收集、存储和可视化。 1. **Suricata 安装*...
1,什么是Logstash 2,日志平台架构及Logstash技术要点 3,Kibana界面查询过滤操作 4,Kibana一些实例介绍 5,导航界面介绍及如何接入
2019年elaticsearch6.6.0,kibana6.6.0,logstash6.6.0不再使用x-pack,替换为search guard安装教程。
2019年elaticsearch6.6.0的安装教程,kibana6.6.0安装教程,logstash6.6.0安装教程,ik分词器,head插件,bigdesk等插件安装教程,x-pack使用等。
《实战Elasticsearch、Logstash、Kibana++分布式大数据搜索与日志挖掘及可视化解决方案》这本书涵盖了在大数据环境中如何高效地实现数据搜索、处理、分析以及可视化的关键技术和工具。以下是该书所涉及的核心知识点...
kibana-7.5.2-linux-x86_64.tar.gz下载,另外还有同版本elasticsearch-7.5.2下载,logstash-7.5.2下载,打开TXT文本后使用百度网盘下载。
filebeat+logstash+ES集群+kibana实战.txt
大数据搜索与日志挖掘及可视化方案--ELK+Stack+Elasticsearch+Logstash+Kibana大数据搜索与日志挖掘及可视化方案--ELK+Stack+Elasticsearch+Logstash+Kibana
第一步是设置数据源,根据我们之前推送给elasticsearch的日志数据,使用management标签创建索引模式; 第二步根据第一步创建的索引模式,使用Visualize 标签页用来设计可视化图形; 第三步根据第二步做好的可视化...
Elasticsearch、Kibana 和 Logstash 是 ELK(Elasticsearch、Logstash、Kibana)堆栈的三大核心组件,它们共同构成了一个强大的日志管理和分析解决方案。ELK 堆栈在IT运维、故障排查、业务监控等领域有着广泛的应用...
Logstash, OSSEC + Logstash + Elasticsearch + Kibana OSSEC使用 LOGSTASH - ELASTICSEARCH - KIBANA 管理 OSSEC警报管理现在是Magento安装脚本的一部分。 https://github.com/magenx/Magento-Automat
《实战Elasticsearch、Logstash、Kibana++分布式大数据搜索与日志挖掘及可视化解决方案》这本书主要聚焦于使用Elasticsearch、Logstash和Kibana构建高效的大数据处理和可视化平台。以下是对这些关键组件及其在实际...
ELK堆栈是由Elasticsearch、Logstash和Kibana三个开源工具组成的,它们通常联合使用来实现日志数据的收集、分析和可视化。Elasticsearch是一个基于Lucene构建的开源搜索引擎,具有分布式、多租户的能力,提供搜索...
elasticsearch-7.6.1+kibana-7.6.1+logstash-7.6.1安装包