文章目录
- 一、安装Elasticsearch
- 1. 安装Elasticsearch
- 2. 安装IK分词器
- 3. elasticsearch-head 监控的插件
- 4. 配置跨域
- 二、安装LogStash
- 三、安装kibana
- 四、SpringBoot集成LogStash,将日志输出到ES中
- 五、 启动项目,监控项目运行
提示:以下是本篇文章正文内容,下面案例可供参考
一、安装Elasticsearch
1. 安装Elasticsearch
安装Elasticsearch参考文章
- 下载镜像
docker pull elasticsearch:7.10.1
- 创建挂载目录以及配置文件
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
#注意:http.host: 0.0.0.0 冒号后有一空格。
echo "http.host: 0.0.0.0" >>/mydata/elasticsearch/config/elasticsearch.yml
#文件夹赋权
chmod -R 777 /mydata/elasticsearch/
- 使用命令启动容器
docker run --name elasticsearch -p 9200:9200 \-p 9300:9300 \-e "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-d elasticsearch:7.10.1
-e “discovery.type=single-node”:单例模式
-e ES_JAVA_OPTS=“-Xms64m -Xmx128m”:配置内存大小
- 设置容器开机自启
docker update elasticsearch --restart=always
2. 安装IK分词器
- 进入容器
docker exec -it elasticsearch /bin/bash
- 进入插件目录
cd /usr/share/elasticsearch/plugins/
- 安装插件
提示:我用方法一报javax.net.ssl.SSLException异常了,所以采用方法二
提示:ik分词器版本要和elasticsearch版本一致
方法一:
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.1/elasticsearch-analysis-ik-7.10.1.zip
方法二:
- 先使用
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.1/elasticsearch-analysis-ik-7.10.1.zip
下载压缩包;- 上传到Liunx服务器,
/mydata/elasticsearch/ik
目录下;- 将Ik压缩包拷贝到docker容器内,语法:docker cp /Linux目录 容器名/ID:docker容器内部路径,执行以下命令:
docker cp /mydata/elasticsearch/ik/elasticsearch-analysis-ik-7.10.1.zip elasticsearch:/usr/share/elasticsearch
- 安装插件,执行下面命令
elasticsearch-plugin install file:/usr/share/elasticsearch/elasticsearch-analysis-ik-7.10.1.zip
- 退出容器,重启docker容器
exit
docker restart elasticsearch
3. elasticsearch-head 监控的插件
- 拉取镜像
docker pull mobz/elasticsearch-head:5
- 启动容器
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5
- 进行访问,如果访问失败,配置一下跨域。
4. 配置跨域
- 进入容器
docker exec -it elasticsearch /bin/bash
- 找到配置文件
vim ./config/elasticsearch.yml
- 添加跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
- 重启容器
docker restart elasticsearch
- 进行访问
二、安装LogStash
- 拉取镜像, LogStash需要和 elasticsearch的版本号一致
# 1. 查看elasticsearch版本docker images
# 2. 拉取kibana镜像docker pull logstash:7.10.1
- 启动LogStash容器
docker run -it -p 4560:4560 --name logstash --restart=always -d logstash:7.10.1
- 安装json_lines插件
- 进入容器
docker exec -it logstash /bin/bash
- 安装插件
logstash-plugin install logstash-codec-json_lines
- 修改输入配置,也可以通过挂在目录的方式来修改配置文件
- 继续在容器中–>打开配置文件
vi /usr/share/logstash/config/logstash.yml
- 把ip修改成elasticsearch 访问地址IP
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://esIP:9200" ]
- 修改输出配置
- 继续在容器中–>打开配置文件
vi /usr/share/logstash/pipeline/logstash.conf
- 修改配置,添加以下内容
input {tcp{mode => "server"port => 4560host => "0.0.0.0" # 允许任意主机发送日志codec => json_lines # 格式化数据}
}filter {date {# 格式化临时变量中的值赋予下面的target,这个时间字段可用于Kibana的时间查询字段match => ["logdate","yyyy-MM-dd HH:mm:ss.SSS"]target => "@timestamp"}
}output {elasticsearch{action => "index"hosts => "esIP:9200" # elasticsearch ipindex => "elk_log" # 索引名,数据保存到那个索引中}stdout {codec => json_lines # 格式化数据}
}
- 重启LogStash
docker restart logstash
三、安装kibana
- 拉取镜像, kibana需要和 elasticsearch的版本号一致
# 1. 查看elasticsearch版本docker images
# 2. 拉取kibana镜像docker pull kibana:7.10.1
- 启动kibana容器
# 1. 方法一
docker run -di --name kibana -p 5601:5601 --link elasticsearch:elasticsearch --restart=always kibana:7.10.1或# 2. 方法二
docker run -di --name kibana -p 5601:5601 -e ELASTICSEARCH_URL=http://XXX.XXX.XXX.XXX:9200 --restart=always kibana:7.10.1
- –restart=always: 开机启动
- –link:elasticsearch和kibana在同一docker下 --link 后面可以直接写elasticsearch:elasticsearch的容器名
- -e ELASTICSEARCH_URL=http://ES的IP:9200: 设置Kibana连接的Elasticsearch的地址
- 访问页面
四、SpringBoot集成LogStash,将日志输出到ES中
- maven坐标
<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.3</version>
- application.yml
server:port: 80 #tomcat端口servlet:context-path: /
- logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--该日志将日志级别不同的log信息保存到不同的文件中 -->
<configuration><include resource="org/springframework/boot/logging/logback/defaults.xml"/><springProperty scope="context" name="springAppName" source="spring.application.name"/><!-- 日志在工程中的输出位置 --><property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}"/><!-- 控制台的日志输出样式 --><property name="CONSOLE_LOG_PATTERN"value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><!-- 日志输出编码 --><encoder><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>utf8</charset></encoder></appender><!-- logstash远程日志配置--><appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>192.168.128.23:4560</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender><!-- 日志输出级别 --><root level="DEBUG"><appender-ref ref="console"/><appender-ref ref="logstash"/></root>
</configuration>
五、 启动项目,监控项目运行
提示:按照以下步骤进行设置
- 访问kibana,点击 Stack Management
- 点击 Index Patterns
- 点击 Create Index Patterns
- 设置索引模式名,关联索引,点击 Next step
- 选择时间字段, 点击 Create Index Patterns
- 设置好的索引模式如下
- 点击 Discover ,进行项目监控
- 监控项目运行情况