文章目录
- 一、安装Elasticsearch
-
- [1. 安装Elasticsearch](#1. 安装Elasticsearch)
- [2. 安装IK分词器](#2. 安装IK分词器)
- [3. elasticsearch-head 监控的插件](#3. elasticsearch-head 监控的插件)
- [4. 配置跨域](#4. 配置跨域)
- 二、安装LogStash
- 三、安装kibana
- 四、SpringBoot集成LogStash,将日志输出到ES中
- [五、 启动项目,监控项目运行](#五、 启动项目,监控项目运行)
提示:以下是本篇文章正文内容,下面案例可供参考
一、安装Elasticsearch
1. 安装Elasticsearch
- 下载镜像
java
docker pull elasticsearch:7.10.1
- 创建挂载目录以及配置文件
java
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/
- 使用命令启动容器
java
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":配置内存大小
- 设置容器开机自启
java
docker update elasticsearch --restart=always
2. 安装IK分词器
- 进入容器
java
docker exec -it elasticsearch /bin/bash
- 进入插件目录
java
cd /usr/share/elasticsearch/plugins/
- 安装插件
提示:我用方法一报javax.net.ssl.SSLException异常了,所以采用方法二
提示:ik分词器版本要和elasticsearch版本一致
方法一:
java
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容器
java
exit
docker restart elasticsearch
3. elasticsearch-head 监控的插件
- 拉取镜像
java
docker pull mobz/elasticsearch-head:5
- 启动容器
java
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5
- 进行访问,如果访问失败,配置一下跨域。
4. 配置跨域
- 进入容器
java
docker exec -it elasticsearch /bin/bash
- 找到配置文件
java
vim ./config/elasticsearch.yml
- 添加跨域
java
http.cors.enabled: true
http.cors.allow-origin: "*"
- 重启容器
java
docker restart elasticsearch
- 进行访问
二、安装LogStash
- 拉取镜像, LogStash需要和 elasticsearch的版本号一致
java
# 1. 查看elasticsearch版本
docker images
# 2. 拉取kibana镜像
docker pull logstash:7.10.1
- 启动LogStash容器
java
docker run -it -p 4560:4560 --name logstash --restart=always -d logstash:7.10.1
- 安装json_lines插件
- 进入容器
java
docker exec -it logstash /bin/bash
- 安装插件
java
logstash-plugin install logstash-codec-json_lines
- 修改输入配置,也可以通过挂在目录的方式来修改配置文件
- 继续在容器中-->打开配置文件
java
vi /usr/share/logstash/config/logstash.yml
- 把ip修改成elasticsearch 访问地址IP
java
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://esIP:9200" ]
- 修改输出配置
- 继续在容器中-->打开配置文件
java
vi /usr/share/logstash/pipeline/logstash.conf
- 修改配置,添加以下内容
java
input {
tcp{
mode => "server"
port => 4560
host => "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 ip
index => "elk_log" # 索引名,数据保存到那个索引中
}
stdout {
codec => json_lines # 格式化数据
}
}
- 重启LogStash
java
docker restart logstash
三、安装kibana
- 拉取镜像, kibana需要和 elasticsearch的版本号一致
java
# 1. 查看elasticsearch版本
docker images
# 2. 拉取kibana镜像
docker pull kibana:7.10.1
- 启动kibana容器
java
# 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坐标
java
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.3</version>
- application.yml
java
server:
port: 80 #tomcat端口
servlet:
context-path: /
- logback.xml
java
<?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 ,进行项目监控
- 监控项目运行情况