开源实时日志分析 ELK 平台

编程入门 行业动态 更新时间:2024-10-27 08:26:15

<a href=https://www.elefans.com/category/jswz/34/1770131.html style=开源实时日志分析 ELK 平台"/>

开源实时日志分析 ELK 平台

开源实时日志分析 ELK 平台由 ElasticSearch 、 Logstash 和 Kibana 三个开源工具组成。
Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多数据源,自动搜索负载等。
Logstash 是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
Kibana 也是一个开源和免费的工具,他 Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据。

一、Logstash

安装:tar zxvf logstash-1.5.2.tar.gz
运行:./logstash -e 'input { stdin { } } output { stdout {} }'
结果:
Logstash startup completed
Hello World!
2015-07-15T03:28:56.938Z noc.vfast Hello World!
退出:Ctrl+C
编辑:vim logstash-simple.conf
input { stdin { } }
output {stdout { codec=> rubydebug }
}
运行:./logstash agent -f logstash-simple.conf
结果:
Logstash startup completed
hello cpit
{"message" => "hello cpit","@version" => "1","@timestamp" => "2017-03-27T08:10:19.586Z","host" => "mcs-slave-2"
}

二、Elasticsearch

安装:tar zxvf elasticsearch-1.7.1.tar.gz
启动:./elasticsearch
确认elasticsearch的9200端口已监听:netstat -anp |grep :9200
结果:tcp6  0   0 :::9200      :::*     LISTEN     7169/java    

三、测试logstash使用elasticsearch作为logstash的后端

编辑:vim logstash-es-simple.conf
input { stdin { } }
output {elasticsearch {host => "localhost" }stdout { codec=> rubydebug }
}
执行:./logstash agent -f logstash-es-simple.conf
后台启动:nohup . /elasticsearch &
结果:
Logstash startup completed
hello logstash
{"message" => "hello logstash","@version" => "1","@timestamp" => "2015-07-15T18:12:00.450Z","host" => "noc.vfast"
}
使用curl来查看ES是否接收到了数据:curl 'http://localhost:9200/_search?pretty'
结果:
{"took" : 47,"timed_out" : false,"_shards" : {"total" : 5,"successful" : 5,"failed" : 0},"hits" : {"total" : 1,"max_score" : 1.0,"hits" : [ {"_index" : "logstash-2017.03.27","_type" : "logs","_id" : "AVsO1xmUL1RJegwzT5T5","_score" : 1.0,"_source":{"message":"hello logstash","@version":"1","@timestamp":"2017-03-27T08:17:08.889Z","host":"mcs-slave-2"}} ]}
}

四、Elasticsearch-kopf插件可以查询Elasticsearch中的数据

安装进入Elasticsearch的安装目录执行:./plugin -install lmenezes/elasticsearch-kopf
安装完成后在plugins目录下可以看到kopf.
#在配置文件elasticsearch.yml里设置script.disable_dynamic: true
在浏览器访问:9200/_plugin/kopf/#!/cluster浏览可以查询保存在Elasticsearch中的数据



五、Kibana

netstat -apn | grep 5601
安装: tar zxvf rashidkpc-kibana-b83dedf.tar.gz
启动:./kibana
使用:5601访问Kibana, 登录后,配置一个索引.



六、配置logstash作为Indexer

编写配置文件:vim logstash-indexer.conf
input {file {type =>"syslog"path => ["/var/log/messages", "/var/log/syslog" ]}syslog {type =>"syslog"port =>"5544"}
}
output {stdout { codec=> rubydebug }elasticsearch {host => "10.3.17.237" }
}
运行:./logstash agent -f logstash-indexer.conf
使用echo命令模拟写入日志:echo "`date` cpit " >>/var/log/messages


七、elasticsearch集群安装

安装head插件:./plugin install mobz/elasticsearch-head
配置config
cluster.name: es-cluster
node.name: node-1 #不同
network.host: #你的服务器ip地址
http.port: #9211  #不同
transport.tcp.port: #9311  #不同
index.cache.field.expire: 1d #过期时间
index.cache.field.type: soft
#默认类型为resident, 字面意思是常驻(居民), 一直增加,直到内存耗尽。改为soft就是当内存不足的时候,先clear掉占用的,然后再往内存中放。设置为soft后,相当于设置成了相对的内存大小。resident的话,除非内存够大。 
discovery.zen.ping.unicast.hosts: ["你的服务器列表(TCP端口)", "你的服务器列表(TCP端口)","你的服务器列表(TCP端口)"]
修改配置文件:log4j_to_es.conf
input {file {type => "infolog"path => "你的日志路径*.log"  #监听文件的路径}file {type => "errorlog"  path => "你的日志路径*.log"}
}
filter {multiline {  pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}"negate => truewhat => "previous"}
}
output {if [type] == "infolog" {elasticsearch {action => "index"          #The operation on EShosts  => ["elasticsearch的IP地址:9211", "elasticsearch的IP地址:9212","elasticsearch的IP地址:9213"]              
index  => "apilog_%{+YYYY.MM.dd}"        }}else{elasticsearch {action => "index"          #The operation on EShosts  => ["elasticsearch的IP地址:9211", "elasticsearch的IP地址:9212","elasticsearch的IP地址:9213"]               
index  => "apierrorlog_%{+YYYY.MM.dd}"                 }}
}
直接与log4j配合使用,直接将日志输出到logstash中
log4j.logger.包名=debug, socket
# appender socket
log4j.appender.socket=org.apache.log4j.SocketAppender
log4j.appender.socket.Port=${elk_port}
log4j.appender.socket.RemoteHost=${elk_ip}
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d [%-5p] [%l] %m%n
log4j.appender.socket.ReconnectionDelay=10000   

八、定时清理ES索引数据

编写清理脚本:es-index-clear.sh
LAST_DATA=`date -d '-3 day' +%Y.%m.%d`
echo ”${LAST_DATA}  开始执行删除操作“
curl -XDELETE 'http://10.104.29.19:9211/*'${LAST_DATA}''
echo "${LAST_DATA}  执行完毕。
设置定时任务
输入crontab -e,出现vi编辑页面 
输入以下命令,每天两点10分执行sh文件:
10 2 */1 * * /letv/soft/elk/logstash-2.4.1/bin/es-index-clear.sh

更多推荐

开源实时日志分析 ELK 平台

本文发布于:2024-03-23 14:53:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1739475.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:开源   实时   平台   日志   ELK

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!