1、安装elastic search
(1)下载ealastic search和kibana
要求版本必须一致
docker pull elasticsearch:7.6.2
docker pull kibana:7.6.2
(2)配置
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
chmod -R 777 /mydata/elasticsearch/
(3)启动Elastic search
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-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.6.2
问题:发现192.168.43.125:9200不可访问 服务不断地退出
解决:保证权限
chmod -R 777 /mydata/elasticsearch/
**(4)设置开机启动elasticsearch **
docker update elasticsearch --restart=always
2安装kabana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.31.40:9200 -p 5601:5601 -d kibana:7.6.2
2.1设置开机启动kabana
docker update kibana --restart=always
访问Kibana:http://192.168.31.40:5601/app/kibana
3配置ik分词器
(1)进入es容器内部plugin目录
docker exec -it elasticsearch /bin/bash
#移动到plugins目录下
mkdir ik
cd ik
上传并解压
unzip elasticsearch-analysis-ik-7.4.2.zip
重启es
docker restart elasticsearch
在elasticsearch-analysis-ik-7.4.2 config 目录下
touch my.dic
可以在my.dic 自定义一些 词语例如
我爱你中国
新奥新智
叶问
刘备
分词器
EDG牛逼
将分词加入到 配置文件中 并重启ES
vi IKAnalyzer.cfg.xml
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">my.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://192.168.56.10/es/fenci.txt</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
3 基于Docker安装Logstash
3.1 启动容器
docker pull logstash:7.4.2
docker run -it -p 4560:4560 --name logstash -d logstash:7.4.2
3.2 修改配置
docker exec -it logstash /bin/bash
vi /usr/share/logstash/config/logstash.yml
3.3把ip修改成elasticsearch访问地址IP
3.4 修改输入输出配置
vi /usr/share/logstash/pipeline/logstash.conf
配置解释说明:
input:接收日志输入配置
tcp: 协议
mode: logstash服务
port:端口,自己指定。默认4560
output:日志处理输出
elasticsearch: 交给es处理
action:es中index命令。也就是新增命令。
hosts:es的主机
index:存储日志的索引。如果不存在可以自动创建。默认的type名称为doc
一定要先启动编辑状态(点击键盘i键)在粘贴,如果没启用第一行是nput{少个i。
input {
tcp {
mode => "server"
port => 4560
}
}
filter {
}
output {
elasticsearch {
action => "index"
hosts => "192.168.56.10:9200"
index => "test_log"
}
}
docker restart logstash
JAVA演示
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.56.10: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>
pom 依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>