用ElasticSearch,LogStash,Kibana搭建实时日志收集系统
用ElasticSearch,LogStash,Kibana搭建实时日志收集系统
介绍
- 这套系统,logstash负责收集处理日志文件内容存储到elasticsearch搜索引擎数据库中。kibana负责查询elasticsearch并在web中展示。
- logstash收集进程收获日志文件内容后,先输出到redis中缓存,还有一logstash处理进程从redis中读出并转存到elasticsearch中,以解决读快写慢速度不一致问题。
- 官方在线文档:https://www.elastic.co/guide/index.html
一、安装jdk7
ElasticSearch,LogStash均是java程序。所以须要jdk环境。
须要注意的是。多节点通讯,必须保证JDK版本号一致。不然可能会导致连接失败。
下载:jdk-7u71-linux-x64.rpm
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.htmlrpm -ivh jdk-7u71-linux-x64.rpm
配置JDK
编辑/etc/profile文件,在开头添加:export JAVA_HOME=/usr/java/jdk1.7.0_71
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH检查JDK环境
使用source /etc/profile命令。使环境变量马上生效。
查看当前安装的JDK版本号。命令:java -version
检查环境变量,echo $PATH
二、安装elasticsearch
elasticsearch是一个搜索引擎。负责存储日志内容。
下载安装
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.4.4.tar.gz
tar zxvf elasticsearch-1.4.4.tar.gz改动config/elasticsearch.yml配置文件
bootstrap.mlockall: true
index.number_of_shards: 1
index.number_of_replicas: 0
#index.translog.flush_threshold_ops: 100000
#index.refresh_interval: -1
index.translog.flush_threshold_ops: 5000
index.refresh_interval: 1
network.bind_host: 172.16.18.114
#节点间通讯公布到其他节点的IP地址
#假设不设置由ES自己决定它可能会发现一个地址。可是其他节点可能訪问不了,这样节点间通讯将失败
network.publish_host: 172.16.18.114
# Security 同意全部http请求
http.cors.enabled: true
http.cors.allow-origin: "/.*/"
- 改动bin/elasticsearch文件
# 使jvm使用os。max-open-files
es_parms="-Delasticsearch -Des.max-open-files=ture"
# Start up the service
# 改动OS打开最大文件数
ulimit -n 1000000
ulimit -l unlimited
launch_service "$pidfile" "$daemonized" "$properties"
- 改动bin/elasticsearch.in.sh文件
......
if [ "x$ES_MIN_MEM" = "x" ]; then
ES_MIN_MEM=256m
fi
if [ "x$ES_MAX_MEM" = "x" ]; then
ES_MAX_MEM=1g
fi
if [ "x$ES_HEAP_SIZE" != "x" ]; then
ES_MIN_MEM=$ES_HEAP_SIZE
ES_MAX_MEM=$ES_HEAP_SIZE
fi
#set min memory as 2g
ES_MIN_MEM=2g
#set max memory as 2g
ES_MAX_MEM=2g
......
执行
./bin/elasticsearch -d
./logs下为日志文件检查节点状态
curl -XGET ‘os=true&process=true&pretty=true">http://localhost:9200/_nodes?os=true&process=true&pretty=true
’{
"cluster_name" : "elasticsearch",
"nodes" : {
"7PEaZbvxToCL2O2KuMGRYQ" : {
"name" : "Gertrude Yorkes",
"transport_address" : "inet[/172.16.18.116:9300]",
"host" : "casimbak",
"ip" : "172.16.18.116",
"version" : "1.4.4",
"build" : "c88f77f",
"http_address" : "inet[/172.16.18.116:9200]",
"settings" : {
"index": {
"number_of_replicas": "0",
"translog": {
"flush_threshold_ops": "5000"
},
"number_of_shards": "1",
"refresh_interval": "1"
},
"path" : {
"logs" : "/home/jfy/soft/elasticsearch-1.4.4/logs",
"home" : "/home/jfy/soft/elasticsearch-1.4.4"
},
"cluster" : {
"name" : "elasticsearch"
},
"bootstrap" : {
"mlockall" : "true"
},
"client" : {
"type" : "node"
},
"http" : {
"cors" : {
"enabled" : "true",
"allow-origin" : "/.*/"
}
},
"foreground" : "yes",
"name" : "Gertrude Yorkes",
"max-open-files" : "ture"
},
"process" : {
"refresh_interval_in_millis" : 1000,
"id" : 13896,
"max_file_descriptors" : 1000000,
"mlockall" : true
}, ... }
}
}表明ElasticSearch已执行。状态与配置相符
"index": {
"number_of_replicas": "0",
"translog": {
"flush_threshold_ops": "5000"
},
"number_of_shards": "1",
"refresh_interval": "1"
}, "process" : {
"refresh_interval_in_millis" : 1000,
"id" : 13896,
"max_file_descriptors" : 1000000,
"mlockall" : true
},安装head插件操作elasticsearch
elasticsearch/bin/plugin -install mobz/elasticsearch-head
http://172.16.18.116:9200/_plugin/head/安装marvel插件监控elasticsearch状态
elasticsearch/bin/plugin -i elasticsearch/marvel/latest
http://172.16.18.116:9200/_plugin/marvel/
三、安装logstash
logstash一个日志收集处理过滤程序。
LogStash分为日志收集端进程和日志处理端进程,收集端负责收集多个日志文件实时的将日志内容输出到redis队列缓存。处理端负责将redis队列缓存中的内容输出到ElasticSarch中存储。
收集端进程执行在产生日志文件的服务器上,处理端进程执行在redis,elasticsearch同一服务器上。
下载
wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gzredis安装配置
make
make PREFIX=/usr/local/redis install
要注意监控redis队列长度,假设长时间堆集说明elasticsearch出问题了
每2S检查一下redis中数据列表长度,100次
redis-cli -r 100 -i 2 llen logstash:redis配置Logstash日志收集进程
vi ./lib/logstash/config/shipper.conf
input {
#file {
# type => "mysql_log"
# path => "/usr/local/mysql/data/localhost.log"
# codec => plain{
# charset => "GBK"
# }
#}
file {
type => "hostapd_log"
path => "/root/hostapd/hostapd.log"
sincedb_path => "/home/jfy/soft/logstash-1.4.2/sincedb_hostapd.access"
#start_position => "beginning"
#http://logstash.net/docs/1.4.2/codecs/plain
codec => plain{
charset => "GBK"
}
}
file {
type => "hkt_log"
path => "/usr1/app/log/bsapp.tr"
sincedb_path => "/home/jfy/soft/logstash-1.4.2/sincedb_hkt.access"
start_position => "beginning"
codec => plain{
charset => "GBK"
}
}
# stdin {
# type => "hostapd_log"
# }
}
#filter {
# grep {
# match => [ "@message", "mysql|GET|error" ]
# }
#}
output {
redis {
host => '172.16.18.116'
data_type => 'list'
key => 'logstash:redis'
# codec => plain{
# charset => "UTF-8"
# }
}
# elasticsearch {
# #embedded => true
# host => "172.16.18.116"
# }
}
执行收集端进程
./bin/logstash agent -f ./lib/logstash/config/shipper.conf配置Logstash日志处理进程
vi ./lib/logstash/config/indexer.confinput {
redis {
host => '127.0.0.1'
data_type => 'list'
key => 'logstash:redis'
#threads => 10
#batch_count => 1000
}
} output {
elasticsearch {
#embedded => true
host => localhost
#workers => 10
}
}执行处理端进程
./bin/logstash agent -f ./lib/logstash/config/indexer.conf
处理端从redis读出缓存的日志内容,输出到ElasticSarch中存储
四、安装kibana
kibana是elasticsearch搜索引擎的web展示界面,一套在webserver下的js脚本,能够定制复杂的查询过滤条件检索elasticsearch,并以多种方式(表格,图表)展示。
下载
wget https://download.elasticsearch.org/kibana/kibana/kibana-3.1.2.tar.gz
解压后将kibana文件夹放到webserver能訪问到的地方配置
改动kibana/config.js:
假设kibana与elasticsearch不在同一机器则改动:
elasticsearch: "http://192.168.91.128:9200",
#这里实际上是浏览器直接訪问该地址连接elasticsearch
否则默认。一定不要改动
假设出现connection failed,则改动elasticsearch/config/elasticsearch.yml。添加:
http.cors.enabled: true
http.cors.allow-origin: "/.*/"
详细含义參见:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-http.html
訪问kibana
http://172.16.18.114:6090/kibana/index.html#/dashboard/file/logstash.json配置kibana界面
能够filtering中配置须要訪问的日志type,如_type=voip_log,相应着上面logstash中shipper.conf的type
也能够点击右上角的save将当前界面的配置保存到elasticsearch中,默认是保存在kibana-int索引中
用ElasticSearch,LogStash,Kibana搭建实时日志收集系统的更多相关文章
- 【转】ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
[转自]https://my.oschina.net/itblog/blog/547250 摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticS ...
- 【Big Data - ELK】ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticSearch,一款基于Apache Lucene的开源分布式搜索引擎)中便于查找和分析,在研究 ...
- ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台
一.简介 ELK 由三部分组成elasticsearch.logstash.kibana,elasticsearch是一个近似实时的搜索平台,它让你以前所未有的速度处理大数据成为可能. Elastic ...
- [Big Data - ELK] ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志. ...
- 13: ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台
参考博客:https://www.cnblogs.com/zclzhao/p/5749736.html 51cto课程:https://edu.51cto.com/center/course/less ...
- ELK6.0部署:Elasticsearch+Logstash+Kibana搭建分布式日志平台
一.前言 1.ELK简介 ELK是Elasticsearch+Logstash+Kibana的简称 ElasticSearch是一个基于Lucene的分布式全文搜索引擎,提供 RESTful API进 ...
- Elasticsearch+Logstash+Kibana搭建分布式日志平台
一.前言 编译安装 1.ELK简介 下载相关安装包地址:https://www.elastic.co/cn/downloads ELK是Elasticsearch+Logstash+Kibana的简称 ...
- 快速搭建应用服务日志收集系统(Filebeat + ElasticSearch + kibana)
快速搭建应用服务日志收集系统(Filebeat + ElasticSearch + kibana) 概要说明 需求场景,系统环境是CentOS,多个应用部署在多台服务器上,平时查看应用日志及排查问题十 ...
- Elasticsearch + Logstash + Kibana 搭建教程
# ELK:Elasticsearch + Logstash + Kibana 搭建教程 Shipper:日志收集者.负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来,输出到Redis暂存 ...
随机推荐
- hpuoj--校赛--与学妹滑雪(最短路+精度判断)
问题 G: 感恩节KK专场--与学妹滑雪 时间限制: 1 Sec 内存限制: 128 MB 提交: 284 解决: 25 [提交][状态][讨论版] 题目描述 这周下的雪好大好大,不过这正和KK学 ...
- windows下python3 使用cx_Oracle,xlrd插件进行excel数据清洗录入
我们在做数据分析,清洗的过程中,很多时候会面对各种各样的数据源,要针对不同的数据源进行清洗,入库的工作.当然python这个语言,我比较喜欢,开发效率高,基本上怎么写都能运行,而且安装配置简单,基本上 ...
- Adobe CC update (Windows/Mac OS) 独立升级包下载
Windows 版 xiaogezi.cn Photoshop CC 下载 Download 大小 Size 日期 Date 文档 Notes Adobe Photoshop 14.2.1 Updat ...
- AngularJs轻松入门(八)Cookies读写
虽然使用JavaScript创建和获取Cookie很简单,AngularJs还是把它作为一个单独的模块进行了封装,模块名为ngCookies,和前面的教程中做法一样,先引入angular-cookie ...
- PostgreSQL Replication之第四章 设置异步复制(4)
4.4 基于流和基于文件的恢复 生活并不总只是黑色或白色:有时也会有一些灰色色调.对于某些情况下,流复制可能恰到好处.在另一些情况下,基于文件复制和PITR是您所需要的.但是也有许多情况下,您既需要流 ...
- codeforces 495D Sonya and Matrix
Since Sonya has just learned the basics of matrices, she decided to play with them a little bit. Son ...
- Unix版权史
原文出处: 阮一峰 这几天,我在读<Unix编程艺术>. 书中介绍了Unix的发展历史.我发现,这是一个很好的例子,说明现行版权制度具有阻碍社会发展的负面作用. 2. Unix诞生于 ...
- js 异步加载的方式
js 异步加载的方式 渲染引擎遇到 script 标签会停下来,等到执行完脚本,继续向下渲染 defer 是“渲染完再执行”,async 是“下载完就执行”,defer 如果有多个脚本,会按照在页面中 ...
- 05-数据类型转换(bool类型)
- Map和Collection详解
Collection -----List -----LinkedList 非同步 ----ArrayList 非同 ...