docker安装ES、LogStash、Kibana

文章目录


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装Elasticsearch

1. 安装Elasticsearch

安装Elasticsearch参考文章

  1. 下载镜像
java 复制代码
docker pull elasticsearch:7.10.1
  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/
  1. 使用命令启动容器
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":配置内存大小

  1. 设置容器开机自启
java 复制代码
docker update elasticsearch --restart=always

2. 安装IK分词器

  1. 进入容器
java 复制代码
docker exec -it elasticsearch /bin/bash
  1. 进入插件目录
java 复制代码
cd /usr/share/elasticsearch/plugins/
  1. 安装插件
    提示:我用方法一报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

方法二:

  1. 先使用https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.1/elasticsearch-analysis-ik-7.10.1.zip下载压缩包;
  2. 上传到Liunx服务器,/mydata/elasticsearch/ik目录下;
  3. 将Ik压缩包拷贝到docker容器内,语法:docker cp /Linux目录 容器名/ID:docker容器内部路径,执行以下命令:
    docker cp /mydata/elasticsearch/ik/elasticsearch-analysis-ik-7.10.1.zip elasticsearch:/usr/share/elasticsearch
  4. 安装插件,执行下面命令
    elasticsearch-plugin install file:/usr/share/elasticsearch/elasticsearch-analysis-ik-7.10.1.zip
  1. 退出容器,重启docker容器
java 复制代码
exit 
docker restart elasticsearch 

3. elasticsearch-head 监控的插件

  1. 拉取镜像
java 复制代码
docker pull mobz/elasticsearch-head:5
  1. 启动容器
java 复制代码
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5
  1. 进行访问,如果访问失败,配置一下跨域。

4. 配置跨域

  1. 进入容器
java 复制代码
docker exec -it elasticsearch  /bin/bash
  1. 找到配置文件
java 复制代码
vim ./config/elasticsearch.yml
  1. 添加跨域
java 复制代码
http.cors.enabled: true
http.cors.allow-origin: "*"
  1. 重启容器
java 复制代码
docker restart elasticsearch 
  1. 进行访问

二、安装LogStash

  1. 拉取镜像, LogStash需要和 elasticsearch的版本号一致
java 复制代码
# 1. 查看elasticsearch版本
 docker images
# 2. 拉取kibana镜像
 docker pull logstash:7.10.1
  1. 启动LogStash容器
java 复制代码
docker run -it -p 4560:4560 --name logstash --restart=always -d logstash:7.10.1
  1. 安装json_lines插件
  • 进入容器
java 复制代码
docker exec -it logstash /bin/bash
  • 安装插件
java 复制代码
logstash-plugin install logstash-codec-json_lines
  1. 修改输入配置,也可以通过挂在目录的方式来修改配置文件
  • 继续在容器中-->打开配置文件
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" ]
  1. 修改输出配置
  • 继续在容器中-->打开配置文件
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			 # 格式化数据
    }
}
  1. 重启LogStash
java 复制代码
docker restart logstash 

三、安装kibana

  1. 拉取镜像, kibana需要和 elasticsearch的版本号一致
java 复制代码
# 1. 查看elasticsearch版本
 docker images
# 2. 拉取kibana镜像
 docker pull kibana:7.10.1
  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
  1. --restart=always: 开机启动
  2. --link:elasticsearch和kibana在同一docker下 --link 后面可以直接写elasticsearch:elasticsearch的容器名
  3. -e ELASTICSEARCH_URL=http://ES的IP:9200: 设置Kibana连接的Elasticsearch的地址
  1. 访问页面

四、SpringBoot集成LogStash,将日志输出到ES中

  1. maven坐标
java 复制代码
        <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
         <version>6.3</version>
  1. application.yml
java 复制代码
server:
  port: 80  #tomcat端口
  servlet:
    context-path: /
  1. 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>

五、 启动项目,监控项目运行

提示:按照以下步骤进行设置

  1. 访问kibana,点击 Stack Management
  2. 点击 Index Patterns
  3. 点击 Create Index Patterns
  4. 设置索引模式名,关联索引,点击 Next step
  5. 选择时间字段, 点击 Create Index Patterns
  6. 设置好的索引模式如下
  7. 点击 Discover ,进行项目监控
  8. 监控项目运行情况
相关推荐
雁于飞2 小时前
vscode中使用git、githup的基操
笔记·git·vscode·学习·elasticsearch·gitee·github
鳄鱼杆3 小时前
服务器 | Docker应用开发与部署的实践以及阿里云镜像加速配置
服务器·阿里云·docker
逍遥浪子~3 小时前
docker实践(一)
运维·docker·容器
AI云原生4 小时前
如何使用Docker快速运行Firefox并实现远程访问本地火狐浏览器的教程
运维·docker·云原生·容器·serverless·firefox·kubeless
今生相伴9914 小时前
ELFK:企业级日志管理的完整解决方案——从入门到精通
运维·elk·elasticsearch
❀͜͡傀儡师6 小时前
Docker部署搜索引擎SearXNG
运维·docker·容器·searxng
虎头金猫6 小时前
如何在Linux上使用Docker在本地部署开源PDF工具Stirling PDF:StirlingPDF+cpolar让专业操作像在线文档一样简单
linux·运维·ubuntu·docker·pdf·开源·centos
janthinasnail9 小时前
使用Docker搭建MaxKB智能体平台
docker·maxkb
计算机小手10 小时前
高效 P2P 文件传输工具:FileSync 利用 WebRTC 技术实现极速安全传输
经验分享·docker·webrtc·开源软件
笨鸟贤妃11 小时前
Ubuntu 22.04 安装 Docker & Compose 最新最简单完整指南
ubuntu·docker·compose