ELK介绍: Elasticsearch , Logstash, Kibana
Elasticsearch:开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。
它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash : 用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。
一般部署方式为c/s模式,client收集,server消费消息。
Kibana:提供可视化web页面
步骤(基于docker)
docker pull sebp/elk:740 (740:集成镜像版本号)
echo "vm.max_map_count=262144" > /etc/sysctl.conf (配置虚拟内存最大值 es需要)
sysctl –p
docker run -dit --name elk --net=host -p 5601:5601 -p 9200:9200 -p 5044:5044 -v /opt/elk-data:/var/lib/elasticsearch -v /etc/localtime:/etc/localtime sebp/elk:740 (映射了es数据存储目录,时间同步)
配置(本步骤进入容器内 docker exec –it elk /bin/bash)
配置logstash
vim /etc/logstash/conf.d/02-beats-input.conf
#数据输入配置:port -> 端口号;codec -> 输入格式。以logback为例。
input {
tcp {
port => 5044
codec=>json_lines
}
}
#数据输出配置:hosts -> 主机集合;index -> 你将要创建的索引名称。这里es为例。
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "%{[appName]} "
}
}
配置kibana
vim /opt/kibana/config/kibana.yml
文末添加 i18n.locale: "zh-CN"
服务操作命令
service logstash start/restart/stop/status
service elasticsearch start/restart/stop/status
service kibana start/restart/stop/status
spring-boot(logback配置)
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>xxx.xxx.xxx.xxx:xxx</destination>
<includeCallerData>true</includeCallerData>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<includeCallerData>true</includeCallerData>
<!-- 根据应用名称创建索引-->
<customFields>{"appName":"appName"}</customFields>
</encoder>
</appender>
要注意版本号匹配