docker搭建EFK

这篇具有很好参考价值的文章主要介绍了docker搭建EFK。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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安装成功

docker搭建EFK,docker,运维,EFK,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,如下图
docker搭建EFK,docker,运维,EFK,kibana

如果可以访问但是提示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;

docker搭建EFK,docker,运维,EFK,kibana

1.3 新建一个用户拥有此权限
docker搭建EFK,docker,运维,EFK,kibana

配置文件异常导致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]

,可以找到如下的内容
docker搭建EFK,docker,运维,EFK,kibana

看到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: false
    escape_html: true


json.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数据展示

展示收集的日志信息

docker搭建EFK,docker,运维,EFK,kibana
docker搭建EFK,docker,运维,EFK,kibana

docker搭建EFK,docker,运维,EFK,kibana

docker搭建EFK,docker,运维,EFK,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)文章来源地址https://www.toymoban.com/news/detail-847262.html

到了这里,关于docker搭建EFK的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8s部署轻量级日志收集系统EFK(elasticsearch + filebeat + kibana)

    目录 K8s部署EFK(elasticsear + filebeat + kibana)日志收集 一.准备镜像 二.搭建Elasticsearch + kibana 1.在可执行kubectl命令的服务器准备安装的yml文件 2.在elasticsearch-kibana目录下创建配置文件elasticsearch.yml 3.创建kibana配置文件kibana.yml 4.在k8s中创建elasticsearch和kibana的配置文件configmap 5.检查

    2024年02月08日
    浏览(49)
  • docker搭建es+kibana

    如果是mac或者windows,可以直接安装Docker Desktop更加便捷。 前提条件: Docker可以运行在Windows、Mac、CentOS、Ubuntu等操作系统上 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 目前,CentOS 仅发行版本中的内核支持 Docker Docker 运行在 CentOS 7 上,要求系统为

    2024年02月12日
    浏览(24)
  • Docker搭建elasticsearch+kibana测试

    最近需要做大数据画像,所以先简单搭建一个es+kibana学习使用,记录一下搭建过程和遇到的问题以及解决办法 1.拉取es和kibana镜像 在拉取镜像之前先搜索一下 elasticsearch 发现是存在elasticsearch镜像的,我一般习惯性拉取最新镜像,这一次拉取了8.8.0也是比较新的镜像了 同样的

    2024年02月11日
    浏览(24)
  • 7Docker搭建es和kibana

    1.拉取镜像   elasticsearch:7.12.0 :我安装的版本是7.12.0,可以根据实际的情况安装 创建docker容器挂在的目录: 配置文件: echo \\\"http.host: 0.0.0.0\\\" /opt/elasticsearch/config/elasticsearch.yml 创建容器: 说明: -p 端口映射 -e discovery.type=single-node 单点模式启动 -e ES_JAVA_OPTS=“-Xms84m -Xmx512m”:设置启

    2024年02月03日
    浏览(31)
  • Docker 搭建 ElasticSearch、Kibana 以及基础使用

    Elasticsearch: 权威指南 | Elastic 拉取ES以及Kibana镜像: ES部分搭建: 创建目录、配置文件、其他配置以及启动 1、目录部分: 2、端口部分: 3、配置文件创建 4、其他注意事项 5、启动容器 访问http://宿主机IP:9200/_cat/nodes?pretty 节点名称带表示为主节点*,这里作示范仅启动2个容器

    2024年02月04日
    浏览(41)
  • 利用docker compose 搭建 elasticsearch 和kibana

    本文介绍了从docker compose 搭建 elasticsearch 并安装IK 分词插件,然后再用kibana测试的详细步骤。 1.1 下载镜像 1.2 下载IK分词插件 从官方网站 Releases · medcl/elasticsearch-analysis-ik · GitHub 下载对应版本的分词插件,因为我们的 elasticsearch 为 7.17.1 所以下载 elasticsearch-analysis-ik-7.17.1.z

    2024年02月11日
    浏览(30)
  • docker 搭建 Elasticsearch和Kibana 8.x版本

    参考: docker入门:单机elasticsearch安装记录,保证无坑_8月日更_小鲍侃java_InfoQ写作社区 同上文所述相同,需要在宿主机上挂载配置文件与数据文件。 xpack.security 配置后,elasticsearch 需要账号密码使用,建议安排上。如果使用 springboot 查询,那一定要设置,否者会报错! 可以跳

    2024年02月03日
    浏览(29)
  • mac通过docker搭建elasticsearch:8.9.2以及kibana:8.9.2

    1.elasticsearch.yml配置修改:  2.执行命令运行elasticsearch容器: 3.kibana.yml配置如下: 4.执行命令运行kibana容器: 5.访问kinaba:

    2024年02月09日
    浏览(26)
  • docker-compose 搭建 elasticsearch8.2.0 + kibana 8.2.0

    最近研究es,搭建环境的时候发现网上的很多文档大部分都是用来记录自己操作的,不过中间还是出现了很多问题,单独的文档还不能解决这些问题。我决定记录下来中间发生的问题,还有解决方案。还有在windows上docker-compose搭建的,原理一样不过不好操作中间很多问题可能和

    2024年02月03日
    浏览(39)
  • 使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)

    ELK 是指 Elasticsearch、Logstash 和 Kibana 这三个开源软件的组合。 Elasticsearch 是一个分布式的搜索和分析引擎,用于日志的存储,搜索,分析,查询。 Logstash 是一个数据收集、转换和传输工具,用于收集过滤和转换数据,然后将其发送到 Elasticsearch 或其他目标存储中。 Kibana 是一个数

    2024年01月20日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包