ELK 学习笔记 一、学习ELK之前,先了解一下什么是ELK; ELK是由 Elasticsearch、Logstash和Kibana 三部分组件组成。 Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash 是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用 Kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。 Filebeat 是用于单用途数据托运人的平台。它们以轻量级代理的形式安装,并将来自成百上千台机器的数据发送到 Logstash 或 Elasticsearch,可以替换Logstash的客户端搜集日志信息,降低Logstash客户端搜集日志的性能消耗问题。 二、环境安装 注意安装时必须保证版本的一致性,避免出现兼容问题(我选择的是7.1.1),同时采用docker的形式搭建环境; 安装之前先通过docker创建一个ELK环境的自定义网络,方便后期通信 docker network create mynetwork 1.安装ES # 下载镜像 查看镜像 docker pull elasticsearch:7.1.1 docker images #docker run 启动 docker run -d --name es --net mynetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.1.1
# 配置挂载启动方式
sudo docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e ES_JAVA_OPS="-Xms256m -Xmx256m" \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.1.1
注意:
chmod -R 777 /data/elasticsearch
要有访问权限
https://segmentfault.com/a/1190000023605284?utm_source=tag-newest
#docker ps查看容器状态 # 检测 elasticsearch 是否启动成功 curl 127.0.0.1:9200
设置配置文件x-pck登陆验证:
修改elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
xpack.security.enabled: true #这一步是开启x-pack插件
在bin文件夹下
elasticsearch-setup-passwords interactive #此步为手动设置密码
然后设置密码即可
2.安装Kibana # 下载镜像 查看镜像 docker pull kibana:7.1.1 docker images # 运行 Kibana docker run -d --name es_kibana --net mynetwork -p 5601:5601 kibana:7.1.1 # 查看容器启动状态 docker ps 修改kibana配置kibana.yml设置连接es的密码:
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://es:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
修改 hosts 为es的container 名字
3.安装Logstash # 下载镜像 查看镜像 docker pull logstash:7.1.1 docker images docker run -it -d -p 5044:5044 --name logstash --net mynetwork -v {自定义主机挂载目录}/logstash.yml:/usr/share/logstash/config/logstash.yml -v {自定义主机挂载目录}/conf.d/:/usr/share/logstash/conf.d/ logstash:7.1.1 #通过docker exec修改配置 docker exec -it es_logstash /bin/bash
#logstash.yml http.host: "0.0.0.0"
找到"/usr/share/logstash/pipeline"的logstash.conf 修改redis输入源配置: input { redis { host => "ip" port => "6379" db => "0" password => "***" key => "logstash-***" data_type => "list" } } filter { #定义数据的格式 } output { elasticsearch{ hosts=> "http://es:9200" # es文件名不要带_ index => "logstash-***-%{+yyyy.MM}"
user =>
"elastic"
password =>
"123456"
} } 到此ELK环境基本搭建完毕(采用的redis输入源代替filebeat) 三、项目使用 引入pom依赖 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> <!-- <classifier>jr</classifier>--> </dependency> <!-- ELK日志系统需要的包 --> <!-- ELK日志系统需要的包 里面包含redis.clients--> <dependency> <groupId>com.cwbase</groupId> <artifactId>logback-redis-appender</artifactId> <version>1.1.5</version> </dependency> 添加logback-spring.xml日志配置: <appender name="LOG_STASH" class="com.cwbase.logback.RedisAppender"> <source>***</source> <type>online</type> <host>127.0.0.1</host> <port>6379</port> <password>***</password> <key>logstash-***</key> <tags>online</tags> <mdc>true</mdc> <location>true</location> <callerStackIndex>0</callerStackIndex> </appender>