docker搭建EFK

目录

  • elasticsearch
    • 1.创建网络
    • 2.拉取镜像
    • 3.创建容器
      • 如果出现启动失败,提示目录挂载失败,可以考虑如下措施
    • 开放防火墙端口
    • 4.验证安装成功
    • 重置es密码
    • 关闭https连接
    • 创建kibana用户
      • 创建新账户
      • 给账户授权
  • kibana
    • 1.创建容器
    • 2.验证安装成功
    • 3.es为kibana创建用户
    • 4.修改中文以及配置登陆es的账号和密码
    • 常见问题
      • 没有自动连接ES
      • Chrome,提示请升级浏览器
    • 创建filebeat用户
      • 1.创建filebeat用户
    • 配置文件异常导致docker无法启动之后如何修改配置文件
      • 方法一
      • 方法二
  • filebeat
    • filebeat启动
      • windows
      • linux
    • filebeat配置
      • 日志采集
      • filebeat控制台打印
      • 2.修改filebeat输出到es的配置
    • kibana数据展示
  • 注意
  • 参考文章:

elasticsearch

1.创建网络

因需要与kibana互联,所以将kibana和elasticsearch创建在共同网络中

docker network create elastic

2.拉取镜像

docker pull elasticsearch:8.13.0
docker pull kibana:8.13.0

如果不带版本号,则默认拉取lasted,docker下载完后如果留意下镜像的修改日期,如果docker版本太低可能拉取的lasted不是最新版,先remove该镜像,卸载docker,升级docker,然后重新拉取lasted

yum erase docker
yum install docker-ce

如果不先remove老镜像直接升级docker,可能会存在无法删除老镜像的问题,可以通过rm -rf /var/lib/docker
解决,注意,注意,注意:该命令会删除所有的镜像,在删除前,要先备份好需要保存的镜像。

3.创建容器

docker run --name elasticsearch --network elastic -p 19200:9200 -p 19300:9300 -v /home/docker/elasticsearch/data:/usr/share/elasticsearch/data --privileged -e "discovery.type=single-node" -d elasticsearch:8.13.0

命令解释:

–network elastic :加入一个名为elastic的网络中
-p 19200:9200:端口映射配置(物理机:容器)
-e 表示额外参数
“discovery.type=single-node” 表示 指定 Elasticsearch 节点在单节点模式下运行,即启动一个独立的 Elasticsearch 实例而不是一个多节点集群
-d 表示后台运行
-v 命令的意思是将Docker内部创建的名为data 的数据卷挂载到容器内的 /usr/share/elasticsearch/data 目录。这样,Elasticsearch的数据就会被存储在 es-data 这个数据卷中,而不是容器内部的存储层,从而实现了数据的持久化。

如果出现启动失败,提示目录挂载失败,可以考虑如下措施

1.(我试着没用) CentOS7中的安全模块selinux把权限禁掉了,无法使用-v命令进行挂载需要,添加selinux规则,将要挂载的目录添加到白名单

chcon -Rt svirt_sandbox_file_t /home/dockerfile/tomcat/logs

2.用chmod 777命

开放防火墙端口

#开放19200端口用于http通信
firewall-cmd --zone=public --add-port=19200/tcp --permanent
#开放19300端口用于ES集群间通信
firewall-cmd --zone=public --add-port=19300/tcp --permanent
#重新加载防火墙使开放的端口即时生效
firewall-cmd --reload

4.验证安装成功

浏览器访问https://ip:19200,如果出现如下这种信息,则es安装成功
es默认开启了ssl验证,所以需要使用https

重置es密码

Elasticsearch8默认用户名为elastic, 密码可以使用以下命令进行重置
进入docker容器

docker exec -it elasticsearch /bin/bash

执行

elasticsearch-reset-password -u elastic

如果启动报错:received plaintext http traffic on an https channel, closing connection Netty4 Http Channel

关闭https连接

1.默认是没有vi命令的,所以需要先安装vim,需要root权限

docker exec -u 0 -it some-kibana bash #(使用root用户的命令-u 0 )

先更新apt,执行

apt-get update

,然后再执行安装vim命令

apt-get install vim
cd  /usr/share/elasticsearch/config

打开 elasticsearch.yml 文件 找到

 xpack.security.http.ssl: //启用https 
enabled: true 
keystore.path: certs/http.p12

这样就可以直接 使用http访问

重新启动es

docker restart elasticsearch

创建kibana用户

无法使用elastic用户登陆kibana,所以需要为kibana创建用户

[FATAL][root] Error: [config validation of [elasticsearch].username]: value of “elastic” is forbidden. This is a superuser account that cannot write to system indices that Kibana needs to function. Use a service account token instead.

创建新账户

elasticsearch-users useradd 用户名

给账户授权

elasticsearch-users roles -a superuser 用户名
elasticsearch-users roles -a kibana_system 用户名

kibana

1.创建容器

docker run -d --name kibana --network elastic -p 15601:5601  kibana:8.13.0

容器创建完成后,会自动连接同一网络中的es

2.验证安装成功

浏览器访问http://ip:15601,如果出现如下这种信息,则kibana安装成功

在这里插入图片描述

3.es为kibana创建用户

4.修改中文以及配置登陆es的账号和密码

cd  /usr/share/kibana/config

打开 kibana.yml 文件 增加i18n.locale: “zh-CN” 配置中文
将elasticsearch.hosts: [ “http://elasticsearch:9200” ] 改为 具体 Elasticsearch 通信地址
增加

elasticsearch.username: "elastic" elasticsearch.password: "elastic" # 和这行

常见问题

没有自动连接ES

如果没有自动连接,可以使用 elasticsearch-create-enrollment-token 工具。 Kibana 生成一个新的注册令牌:
进入docker容器

docker exec -it elasticsearch /bin/bash

执行

elasticsearch-create-enrollment-token -s kibana

在15601管理界面输入后开始连接es,如下图
在这里插入图片描述

如果可以访问但是提示kibana未成功运行,则意味着kibana虽启动成功,但是连接es失败,可以通过docker logs kibana查看容器日志,

Chrome,提示请升级浏览器

.如果使用Chrome,提示请升级浏览器,则可以尝试关闭所有插件,查看能否访问,(后期可以逐个开启插件来排除问题插件)

创建filebeat用户

1.创建filebeat用户

1.1 首先创建个角色,名为"beats_write",集群权限为:monitor,manage_index_templates;
1.2 此角色对索引的操作权限为:write、delete、create_index monitor;

在这里插入图片描述

1.3 新建一个用户拥有此权限
在这里插入图片描述

配置文件异常导致docker无法启动之后如何修改配置文件

方法一

把docker容器中的配置文件复制到主机中,然后在主机中修改,修改完成后再复制到docker容器中

  1. 复制docker容器的文件到主机中
docker cp [容器id]:docker容器中配置文件路径  主机路径
docker cp mysql:/etc/mysql/my.cnf /home/my.cnf
  1. 修改配置文件中出错的部分
  2. 配置文件到docker容器中
docker cp 主机文件路径 容器id:docker容器中配置文件路径
docker cp /home/my.cnf mysql:/etc/mysql/my.cnf
  1. 重启容器

方法二

运行命令

docker inspect [CONTAINER ID]

,可以找到如下的内容
在这里插入图片描述

看到MergedDir:
cd到 MergedDir, 会发现和容器里的目录结构是一样的.
这样我们就可以在前者中,也就是在容器已经 “exit” 的情况下,修改容器中的配置文件, 修改完成后重启容器.

filebeat

filebeat启动

windows

下载filebeat后,cmd进入文件夹内,执行命令启动程序,filebeat.yml为配置文件

filebeat -e -c filebeat.yml

linux

filebeat配置

日志采集

filebeat.inputs:# filestream is an input for collecting log messages from files.
- type: log #filestream为单行输入,无法进行多行匹配# Unique ID among all inputs, an ID is required.id: my-filestream-id# Change to true to enable this input configuration.enabled: true# Paths that should be crawled and fetched. Glob based paths.paths: # 日志存放路径# /var/log/*.log- C:\rzxh\adminlogs\*.log#encoding: GB2312 # 防止中文乱码,不是必须的,出现乱码再处理multiline.pattern: '^\d{2}:\d{2}:\d{2}\.\d{3}'  # 匹配以 HH:mm:ss.SSS 开头的行multiline.negate: true  # 忽略不匹配多行模式的行multiline.match: after  # 匹配模式后的行将被合并到上一行processors:- decode_json_fields:fields: ["message"]target: ""overwrite_keys: true- dissect:tokenizer: "%{time} [%{thread}] %{level} %{logger} - [%{method},%{line}] - %{message}" #将数据以json形式存储field: "message"target_prefix: "rzxhlog_" # 字段前缀,如果不填写会议dissect为前缀target_type: "text"

filebeat控制台打印

output.console:pretty: true

2.修改filebeat输出到es的配置

output.elasticsearch:# Array of hosts to connect to.hosts: ["ip:19200"]# Protocol - either `http` (default) or `https`.protocol: "http"# Authentication credentials - either API key or username/password.#api_key: "id:api_key"username: "用户名"password: "密码"indices:- index: "rzxh127-other-%{+yyyy.MM.dd}"when.contains:message: "INFO" # 如果message包含INFO,进入该索引- index: "rzxh127-error-%{+yyyy.MM.dd}"when.contains:message: "ERROR" # 如果message包含ERROR,进入该索引codec.json:pretty: falseescape_html: truejson.keys_under_root: true        # 开启json格式      
json.overwrite_keys: true### 加入以下内容,output.elasticsearch.index 才会生效
setup.ilm.enabled: false            # 关闭索引生命周期
setup.template.enabled: false       # 允许自动生成index模板
setup.template.overwrite: true      # 如果存在模块则覆盖
#setup.template.name: "docker"       # 生成index模板的名称
#setup.template.pattern: "docker-*"  # 生成index模板匹配的index格式

修改完之后需要重启filebeat;

kibana数据展示

展示收集的日志信息

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
这样就将日志信息收集展示出来了。

注意

文中所有8.13.0为本文所用版本,需要根据自己的版本调整
文中所有的15601、19200、19300,需要根据自己的服务器端口调整
文中所有的中文用户名、密码、ip、端口,需要自己根据实际情况修改

参考文章:

Docker上安装部署Elasticsearch(ES)详细教程 (https://blog.csdn.net/djdjfjf1/article/details/134775443)

Docker安装ElasticSearch8.X docker安装elasticsearch8.X完整详细教程(https://blog.csdn.net/qq_40739917/article/details/131654563)

Docker run 容器使用-v挂载目录总会启动失败的解决方案 (https://blog.csdn.net/csdn_life18/article/details/126168588)

docker 容器内报错 E: List directory /var/lib/apt/lists/partial is missing. - Acquire ( : No such file or directory) 或者其他权限 PermissionError: [Errno 13] Permission denied:(https://www.cnblogs.com/maxiaohei/p/16321356.html)

docker pull 拉取镜像错误missing signature key(https://blog.csdn.net/m0_38138371/article/details/133276396)

Elasticsearch8重置elastic用户密码(https://blog.csdn.net/liboi11/article/details/124266367)

Kibana:使用 Docker 安装 Kibana - 8.x(https://blog.csdn.net/UbuntuTouch/article/details/130921373)

Docker安装Elasticsearch8&Kibana8,自定义Docker目录情景下的配置修改(https://blog.csdn.net/Sucrapipple/article/details/136950567)

docker镜像无法删除解决(https://www.cnblogs.com/hongweigg/p/16979765.html)

elasticsearch7.x 开启安全认证xpack,以及kibana、logstash、filebeat组件连接开启安全认证的es;(https://blog.csdn.net/qq_44930876/article/details/128653811)

kibana设置中文访问界面(https://blog.csdn.net/m0_62755217/article/details/133813292)

docker安装kibana并配置es的密码(https://blog.csdn.net/qq_52594679/article/details/136257664)

docker容器无法启动,修改容器内文件2种方式(https://blog.csdn.net/JineD/article/details/109577016)

容器部署es和kibana,挂载数据卷并开启es安全验证(https://blog.csdn.net/weixin_46030885/article/details/128784226)

手把手系列 - 搭建 efk 8 收集 docker 容器日志 (https://www.cnblogs.com/hukey/p/16454187.html)

ELK相关问题及解决办法(https://zhuanlan.zhihu.com/p/685830904)

Filebeat之多行匹配模式理解记忆方式(https://blog.csdn.net/sinat_33622098/article/details/112648307)

Filebeat输出json格式的日志并指定message字段的值(https://blog.csdn.net/kali_yao/article/details/124637646)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/303411.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZYNQ之嵌入式开发02——LED实验

文章目录 通过GPIO控制LED状态通过按键控制LED状态通过EMIO复用PL端按键控制PS端LED状态通过EMIO复用多个PL端的GPIO GPIO(General Purpose Input Output)是一个外设,用来对器件的引脚做观测(输入)和控制(输出)。每个GPIO口都是独立且可以进行动态的编程的&#xff…

mybatis-plus与mybatis同时使用别名问题

在整合mybatis和mybatis-plus的时候发现一个小坑&#xff0c;单独使用mybatis&#xff0c;配置别名如下&#xff1a; #配置映射文件中指定的实体类的别名 mybatis.type-aliases-packagecom.jk.entity XML映射文件如下&#xff1a; <update id"update" paramete…

X服务器远程连接问题解决:Bad displayname ““‘或Missing X server or $DISPLAY

X服务器远程连接问题 报错1 ImportError: this platform is not supported: (failed to acquire X connection: Bad displayname "", DisplayNameError()) Try one of the following resolutions: * Please make surethat you have an X server running, and that …

Vue2 —— 学习(四)

一、收集表单数据 &#xff08;一&#xff09;介绍 前面其实已经 学过了 v-model 双向绑定事件&#xff0c;能获取到表单中的内容到 vm 实例对象中 但是前面只是收集文本框&#xff0c;下面学习一下 各种类型表单数据收集 &#xff08;单/多 选&#xff0c;下拉框&#xff0…

第十届蓝桥杯大赛个人赛省赛(软件类) CC++ 研究生组-RSA解密

先把p&#xff0c;q求出来 #include<iostream> #include<cmath> using namespace std; typedef long long ll; int main(){ll n 1001733993063167141LL, sqr sqrt(n);for(ll i 2; i < sqr; i){if(n % i 0){printf("%lld ", i);if(i * i ! n) pri…

Linux_应用篇(03) 文件 I/O 加强

经过上一章内容的学习&#xff0c;相信各位读者对 Linux 系统应用编程中的基础文件 I/O 操作有了一定的认识和理解了&#xff0c;能够独立完成一些简单地文件 I/O 编程问题&#xff0c; 如果你的工作中仅仅只是涉及到一些简单文件读写操作相关的问题&#xff0c;其实上一章的知…

玩转儿童数码摄影,儿童人像摄影指南

一、资料前言 本套儿童人像摄影&#xff0c;大小250.91M&#xff0c;共有8个文件。 二、资料目录 《爱孩子爱摄影》.pdf 《六招拍儿童》.pdf 《数码摄影工坊-儿童摄影》.pdf 《专业儿童人像摄影指南》.pdf 宝贝看镜头.pdf 儿童摄影手册.pdf 儿童摄影艺术.pdf 玩转儿童…

RUST语言值所有权之内存复制与移动

1.RUST中每个值都有一个所有者,每次只能有一个所有者 String::from函数会为字符串hello分配一块内存 内存示例如下: 在内存分配前调用s1正常输出 在分配s1给s2后调用报错 因为s1分配给s2后,s1的指向自动失效 s1被move到s2 s1自动释放 字符串克隆使用 所有整数类型,布尔类型 …

git submodule---同步最新的内容

0 Preface/Foreword 1 同步最新submodule内容到repo中 项目的repo包含了一个子模块&#xff0c;在开发过程中&#xff0c;经常需要同步子模块最新的commit到repo中。该如何操作呢&#xff1f; 本地在克隆时候&#xff0c;已经同步把子模块中的内容克隆下来了&#xff0c;但是…

第十三篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操作PPT

传奇开心果博文系列 系列博文目录Python自动化办公库技术点案例示例系列 博文目录前言一、 Python自动化操作PPT能力介绍二、常用库介绍三、创建新PPT示例代码四、编辑现有PPT示例代码五、批量处理示例代码六、数据驱动生成示例代码七、合并与拆分示例代码八、母版和版式操作示…

SpringBoot整合RabbitMQ,三种交换机类型示例

SpringBoot整合RabbitMQ&#xff0c;三种交换机类型示例 1、流程概括 2、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>3、配置RabbitMQ连接 在a…

FreeGPT3.5 开源软件

GPT-3.5不需要付费&#xff0c;也不需要注册用户&#xff0c;可以直接使用了&#xff0c;官方彻底开放了API接口。 该API政策一放开&#xff0c;GitHub很快就已经出现了一个开源项目FreeGPT35&#xff0c;可以自动生成key调用GPT3.5的API接口&#xff0c;再也用不着注册账号和申…

【服务器部署篇】Linux下安装Docker容器

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

MySQL学习笔记------多表查询

目录 多表关系 一对多 多对多 一对一 多表查询 概述 分类 内连接&#xff08;交集&#xff09; 隐式内连接 显式内连接 ​编辑 外连接&#xff08;from后为左表&#xff0c;join后为右表&#xff09; 左外连接 右外连接 自连接 联合查询&#xff08;union&#…

经典机器学习模型(八)梯度提升树GBDT详解

经典机器学习模型(八)梯度提升树GBDT详解 Boosting、Bagging和Stacking是集成学习(Ensemble Learning)的三种主要方法。 Boosting是一族可将弱学习器提升为强学习器的算法&#xff0c;不同于Bagging、Stacking方法&#xff0c;Boosting训练过程为串联方式&#xff0c;弱学习器…

Linux 学习之路 - 进程篇 - PCB介绍1-标识符

目录 一、基础的命令 <1> ps axj 命令 <2> top 命令 <3> proc 目录 二、进程的标识符 <1>范围 <2>如何获取标识符 <3>bash进程 三、创建进程 一、基础的命令 前面介绍了那么多&#xff0c;但是我们没有观察到进程相关状态&#x…

GitHub 仓库 (repository) Pulse - Contributors - Network

GitHub 仓库 [repository] Pulse - Contributors - Network 1. Pulse2. Contributors3. NetworkReferences 1. Pulse 显示该仓库最近的活动信息。该仓库中的软件是无人问津&#xff0c;还是在火热地开发之中&#xff0c;从这里可以一目了然。 2. Contributors 显示对该仓库进…

hadoop:案例:将顾客在京东、淘宝、多点三家平台的消费金额汇总,然后先按京东消费额排序,再按淘宝消费额排序

一、原始消费数据buy.txt zhangsan 5676 2765 887 lisi 6754 3234 1232 wangwu 3214 6654 388 lisi 1123 4534 2121 zhangsan 982 3421 5566 zhangsan 1219 36 45二、实现思路&#xff1a;先通过一个MapReduce将顾客的消费金额进行汇总&#xff0c;再通过一个MapReduce来根据金…

优思学院|如何利用Minitab进行满意度分析?常犯错误不可不知!

有网友提问如何运用Minitab进行满意度分析&#xff1f;他提出了一个企业培训的例子&#xff0c;如下图所示。 就他所展示的满意度调查表格&#xff0c;他只需要就你的数据进行描述性的统计分析&#xff0c;因为数据中没有包含比较或者对比&#xff08;例如&#xff0c;满意度调…

交换机与队列的介绍

1.流程 首先先介绍一个简单的一个消息推送到接收的流程&#xff0c;提供一个简单的图 黄色的圈圈就是我们的消息推送服务&#xff0c;将消息推送到 中间方框里面也就是 rabbitMq的服务器&#xff0c;然后经过服务器里面的交换机、队列等各种关系&#xff08;后面会详细讲&…