ELK日志管理系统主要功能:应用系统日志的分析和监控 。
ELK组成:ElasticSearch,LogStash,Kibana,Redis
ELK各组件数据流向:App(应用系统将日志写入Redis)→Redis(缓存)→LogStash(从Redis中收集日志,分析完存入ElasticSearch)→ElasticSearch(日志存储)→Kibana(从ElasticSearch获取日志进行分析,展现)
序号 | 组件名称 | 版本 | 备注 |
1 | jdk | 1.7+ | 必选 |
注:以下组件均为linux版本的
elasticSearch 1.5.0(最低支持1.4.4),
下载地址:http://tech.iflytek.com:8900/SPP/ELK/elasticsearch-1.4.4.zip
logstash (1.4.2),
下载地址:http://tech.iflytek.com:8900/SPP/ELK/logstash-1.4.2.tar.gz
redis (2.8.19),
下载地址:http://tech.iflytek.com:8900/SPP/ELK/redis-2.8.19.tar.gz
kibana (最新版本)
下载地址:http://tech.iflytek.com:8900/SPP/ELK/kibana-4.0.1-linux-x64.tar.gz
#tar -zxvf redis-2.8.19.tar.gz
#cd redis
#make
#make install
make install命令执行完成后,会在/usr/local/bin目录下生成本个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump,它们的作用如下:
可执行文件 | 说明 |
redis-server | Redis服务器的daemon启动程序 |
redis-cli | Redis命令行操作工具。也可以用telnet根据其纯文本协议来操作 |
redis-benchmark | Redis性能测试工具,测试Redis在当前系统下的读写性能 |
redis-check-aof | 数据修复 |
redis-check-dump | 检查导出工具 |
修改配置文件:
cd /etc
vi redis.conf
修改daemonize yes 目的使进程在后台运行
启动Redis:
#cd /usr/loacl/bin
#nohup ./redis-server /etc/redis.conf &
启动后输入以下命令:ps-ef | grep redis,如果能看到以下进程则表示Redis启动成功
1.解压安装包:unzipelasticSearch-1.4.4.zip
2.修改集群名称和节点名称:vi /ELK/elasticsearch-1.4.4/config/elasticsearch.yml
文件打开后,找到: cluster.name,去掉前面的#,修改为cluster.name:youname(名字随意).
注:集群名字必须修改,因为如果不修改集群名字的话,elasticSearch会自动添加同个网段内所有的没有改名字的节点
找到node.name,修改该名称
3.修改ES跨越支持:在elasticsearch.yml末尾添加如下内容
ES跨域支持
http.json.enable:true
http.cors.allow-origin:“/.*/”
http.cors.enabled:true
4.设置ES缓存类型(防止数据量大时出现问题),在elasticsearch.yml末尾添加如下内容
index.cache.field.type: soft
说明:默认类型为resident,字面意思是常驻(居民),一直增加,直到内存耗尽。改为soft就是当内存不足的时候,先clear掉占用的,然后再往内存中放。设置为soft后,相当于设置成了相对的内存大小。 resident的话,除非内存够大。
5.设置ES内存:vimelasticsearch-1.4.4/bin/elasticsearch,添加下面的配置,内存大小根据机器来定,尽量设大一点,kibana查询缓存很大,如果内存太小会出异常
ES_HEAP_SIZE=15g
6.启动ES
#./bin nohup ./elasticsearch &
访问http://127.0.0.1:9200/_plugin/head,如果出现下列界面,则表示启动成功
7.设置ES不分词(此步骤不能忘记,否则kibana查询时会出问题)
启动ES后,在shell命令行输入以下命令(IP和端口号需与第6步启动的ES的IP和端口号一致,template为日志的索引名称),以单引号(“ ’ ” )结束,回车执行不分词设置。
设置ES不分词命令 Expand source
curl -XPUT "http://192.168.84.175:9200/_template/not_analyzed_template" -d‘
{
"template": "skynet-ant-log",
"mappings": {
"_default_": {
"dynamic_templates": [
{
"template_1": {
"mapping": {
"index": "not_analyzed",
"type": "string"
},
"match_mapping_type": "string",
"match": "*"
}
}
]
}
}
}
(此处一大坑:必须安装在/usr/local/下,如果安装在home目录下启动时会出错)
# tar -xzvf logstash-1.4.2.tar.gz
#vim logstash-1.4.2/bin index.conf //创建启动配置文件,添加以下内容,此配置文件刚开始没有,需自己创建,名字随意,启动时指定到该配置文件即可
LogStash配置文件 Expand source
input {
redis{
data_type => "pattern_channel"
key => "skynet-ant-logstash-*"
host => "127.0.0.1"
port => 6379
}
}
filter {
json {
source => "message"
}
mutate {
convert => ["start" , "integer"]
convert => ["end" , "integer"]
convert => ["duration" , "integer"]
convert => ["originalDuration" , "integer"]
convert => ["timefrugal" , "integer"]
convert => ["wavePoint" , "integer"]
convert => ["silenceDuration" , "integer"]
}
}
output{
elasticsearch {
host => "127.0.0.1"
port => 9450
protocol => http
index => "skynet-ant-log"
}
}
参数说明
参数名称 | 说明 |
Input | 指redis的相关配置 |
data_type | 数据类型,主要有三种类型(pattern_channel,list,channel),此类型根据redis来定 |
key | 关键词 |
host | 存放的地址 |
port | 端口号 |
filter | 数据过滤的条件 |
mutate | 数据格式转换,主要将字符类型转换成数值类型 |
output | 输出的elasticSearch的相关配置,如果是集群的话需将host,port改为cluster=>"name"集群的名称即可 |
启动 logstash
# nohup ./logstash -f index.conf &
如果使用jps命令看到如下进程则表示logstash启动成功
# tar -xzvf kibana-4.0.1-linux-x64.tar.gz
#vim ./kibana-4.0.1-linux-x64/config/kibana.yml
修改elasticsearch_url: "http://192.168.84.167:9200"
运行kibana:
#./ kibana-4.0.1-linux-x64 nohup ./kibana &
在浏览器器访问:http://127.0.0.1:5601,如果出现以下界面则表示部署成功
至此,ELK管理系统全部部署完毕。只需将应用系统的日志导入该系统中,然后学习kibana的使用即可对应用系统的日志进行分析和监控
注意:启动各个组件时有一定的顺序要求,Redis和ElasticSearch必须在Logstash和Kibana启动之前启动,一般的启动顺序为:Redis,ElasticSearch,LogStash,Kibana。具体原因可参考简介中的数据流向。
配置好skynet引擎服务,启动引擎服务:访问:http://ip:9200/_plugin/head,如果ES中有数据进入则表示部署成功,而且日志数据已接入到ES中。如下图所示:
接着访问kibana地址:http://ip:5601,如下图所示,kibana中已有日志数据了(注意右上角时间范围的选择)
使用已定义好的报表:如下图所示,点击DashBoard,打开已定义好的面板
例如选择skynet-log-vspp:会出现下图所示的报表
此时就可以根据这些报表进行分析了。
原文地址:http://lz710.blog.51cto.com/8184961/1695926