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>

要注意版本号匹配