海量日志收集ELK实战(docker部署ELK)从日志中挖取宝贵数据

文章目录

    • 一、准备工作
      • 1.1 服务器配置要求
      • 1.2 关闭防火墙
      • 1.3 创建docker网络
    • 二、docker安装elasticsearch
      • 2.1 下载 Elastic Search 镜像
      • 2.2 创建宿主机的挂载目录
      • 2.3 设置宿主机max_map_count
      • 2.5 docker启动命令
      • 2.6 关闭es容器密码安全验证
      • 2.7 重启es容器
      • 2.8 测试安装成功
      • 2.9 chrome浏览器插件elasticsearch-head
      • 2.9 Elasticsearch安装IK中文分词器
        • 2.9.1 下载 ik 分词器安装包
        • 2.9.2 在 es容器中安装 ik 分词器
        • 2.9.3 查看安装结果
        • 2.9.4 ik分词测试
    • 三、docker安装kibana
      • 2.1 下载kibana 镜像
      • 2.2 创建挂载点目录
      • 2.3 docker启动命令
      • 2.4 kibana汉化
      • 2.5 重启kibana容器
      • 2.6 测试Kibana是否安装成功
    • 四、Docker安装Logstash
      • 4.1 拉取镜像
      • 4.2 创建宿主机的挂载目录
      • 4.3 docker拷贝logstash容器挂载目录
      • 4.4 修改logstash挂载目录文件
      • 4.5 创建容器
      • 4.5 查看启动日志
    • 五、Docker搭建Filebeat和使用方法
      • 5.1下载Filebeat镜像
      • 5.2临时启动镜像
      • 5.3拷贝数据文件
      • 5.4编辑配置文件
      • 5.5 重启filebeat容器
      • 5.6查看日志
    • 六、使用1Panel查看容器

一、准备工作

1.1 服务器配置要求

ELK安装服务器配置要求:至少2C4G以上的配置

已安装docker

如果不用dokcer安装,直接yum安装;请从以下网站下载对应的压缩包:

清华大学开源镜像站地址:
https://mirrors.tuna.tsinghua.edu.cn/
搜索elastic,elasticsearch使用7.x版本

1.2 关闭防火墙

后面我们要使用多个端口,为了避免繁琐的开放端口操作,我们关掉防火墙

# 查看防火墙状态
systemctl status firewalld.service# 关闭防火墙
systemctl stop firewalld.service# 禁用防火墙
systemctl disable firewalld.service

1.3 创建docker网络

因为需要部署kibana容器,因此需要让es和kibana容器互联,通过docker创建的专门网络进行通信连接。

docker network create elasticsearch-net

二、docker安装elasticsearch

2.1 下载 Elastic Search 镜像

docker pull elasticsearch:7.9.3

2.2 创建宿主机的挂载目录

# 创建宿主机的挂载目录 并放开读写权限
mkdir -p -m 777 /usr/local/docker/elasticsearch/plugins
mkdir -p -m 777 /usr/local/docker/elasticsearch/data
mkdir -p -m 777 /usr/local/docker/elasticsearch/config

2.3 设置宿主机max_map_count

必须修改系统参数 max_map_count,否则 Elasticsearch 无法启动:

在 /etc/sysctl.conf 文件中添加 vm.max_map_count=262144

echo 'vm.max_map_count=262144' >>/etc/sysctl.conf
# 立即生效
sysctl -p

确认参数配置:

cat /etc/sysctl.conf

在这里插入图片描述

2.5 docker启动命令

es天生可以做集群的

docker run -d \--name=myelasticsearch \--network elasticsearch-net \--restart=always \-p 9200:9200 \-p 9300:9300 \-v /usr/local/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-v /usr/local/docker/elasticsearch/data:/usr/share/elasticsearch/data \--privileged \-e "discovery.type=single-node" \-e "ES_JAVA_OPTS=-Xms256m -Xmx256m" \elasticsearch:7.9.3

2.6 关闭es容器密码安全验证

进入es容器,编写elasticsearch.yml

es容器默认工作目录为:/usr/share/elasticsearch

docker exec -it myelasticsearch /bin/bash
cd config
vi elasticsearch.yml

在这里插入图片描述

xpack.security.enabled: false'

在这里插入图片描述

2.7 重启es容器

docker restart myelasticsearch

2.8 测试安装成功

访问主机地址+端口号,前面配置Elasticsearch 的端口号为:9200

http://xxxxxxx:9200

在这里插入图片描述
http://xxxxxxx:9200/_cat/nodes 查看es节点信息:
在这里插入图片描述

2.9 chrome浏览器插件elasticsearch-head

elasticsearch-head 项目提供了一个直观的界面,可以很方便地查看集群、分片、数据等等。elasticsearch-head最简单的安装方式是作为 chrome 浏览器插件进行安装。

下载地址:https://download.csdn.net/download/weixin_43025151/89952901

在这里插入图片描述

2.9 Elasticsearch安装IK中文分词器

2.9.1 下载 ik 分词器安装包

从 ik 分词器项目仓库中下载 ik 分词器安装包,下载的版本需要与 Elasticsearch 版本匹配。
elasticsearch-analysis-ik-7.9.3.zip下载地址:https://download.csdn.net/download/weixin_43025151/89952928

下载 elasticsearch-analysis-ik-7.9.3.zip 复制到 /root/ 目录下

#复制文件到es容器中
docker cp elasticsearch-analysis-ik-7.9.3.zip myelasticsearch:/root/
2.9.2 在 es容器中安装 ik 分词器

# 在 es容器中安装 ik 分词器
docker exec -it myelasticsearch elasticsearch-plugin install file:///root/elasticsearch-analysis-ik-7.9.3.zip# 重启es 容器
docker restart myelasticsearch 

在这里插入图片描述

2.9.3 查看安装结果

在浏览器中访问 http://xxxxxxx:9200/_cat/plugins
在这里插入图片描述

2.9.4 ik分词测试

ik分词器提供两种分词器: ik_max_word 和 ik_smart

  • ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query;

  • ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询。

ik_max_word 分词测试

使用 head 执行下面测试:
向 http://xxxxxxx:9200/_analyze 路径提交 POST 请求,并在协议体中提交 Json 数据:

{"analyzer":"ik_max_word","text":"中华人民共和国国歌"
}

在这里插入图片描述

ik_smart 分词测试

使用 head 执行下面测试:

向 http://xxxxxxx:9200/_analyze 路径提交 POST 请求,并在协议体中提交 Json 数据:

{"analyzer":"ik_smart","text":"中华人民共和国国歌"
}

在这里插入图片描述

三、docker安装kibana

2.1 下载kibana 镜像

docker pull kibana:7.9.3

2.2 创建挂载点目录

mkdir -p -m 777 /usr/local/docker/kibana/config
mkdir -p -m 777 /usr/local/docker/kibana/data

2.3 docker启动命令

docker run -d \
--restart=always \
--name kibana \
--network elasticsearch-net \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://myelasticsearch:9200 \
kibana:7.9.3

kibana容器的默认工作目录为:/usr/share/kibana

2.4 kibana汉化

进入kibana容器

docker exec -it kibana /bin/bash
cd config
vi kibana.yml

添加下列信息:

i18n.locale: "zh-CN"

在这里插入图片描述

2.5 重启kibana容器

docker restart kibana

2.6 测试Kibana是否安装成功

访问主机地址+端口号,前面配置Kibana 的端口号为:5601

http://xxxxxxxx:5601

在这里插入图片描述

四、Docker安装Logstash

日志收集文件 /root/log.log

4.1 拉取镜像

docker pull logstash:7.9.3

4.2 创建宿主机的挂载目录

# 创建宿主机的挂载目录 并放开读写权限
mkdir -p -m 777 /usr/local/docker/logstash/pipeline
mkdir -p -m 777 /usr/local/docker/logstash/data
mkdir -p -m 777 /usr/local/docker/logstash/config

4.3 docker拷贝logstash容器挂载目录

首先简单启动一个logstash容器:

docker run -d --name=logstash logstash:7.9.3
##copylogstash容器工作目录 /usr/share/logstash 到宿主机
docker cp logstash:/usr/share/logstash /usr/local/docker

宿主机目录如下:
在这里插入图片描述

4.4 修改logstash挂载目录文件

/usr/local/docker/logstash/config/logstash.yml

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://myelasticsearch:9200" ]

/usr/local/docker/logstash/config/pipelines.yml

# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
#   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html- pipeline.id: mainpath.config: "/usr/share/logstash/pipeline/logstash.conf"

/usr/local/docker/logstash/pipeline/logstash.conf

#从文件收集日志
input {file {path => "/root/log.log"}
}
#过滤日志#输出日志到elasticsearch 通过rubydebug标准输出日志
output {stdout { codec => rubydebug }
}	

4.5 创建容器

docker run -it --name logstash \
--restart=always --privileged \
-p 5044:5044 -p 9600:9600 \
--network elasticsearch-net \
-v /etc/localtime:/etc/localtime \
-v /usr/local/docker/logstash/config:/usr/share/logstash/config \
-v /usr/local/docker/logstash/pipeline:/usr/share/logstash/pipeline \
-v /usr/local/docker/logstash/data:/usr/share/logstash/data \
-d logstash:7.9.3

4.5 查看启动日志

docker logs logstash

发现启动失败,错误信息如下:

java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit

在这里插入图片描述
解决办法:
找到.lock文件并删除,然后重启logstash容器

find / -name .lock
rm -rf /usr/local/docker/logstash/data/.lock

在这里插入图片描述

logstash启动成功!!

五、Docker搭建Filebeat和使用方法

5.1下载Filebeat镜像

docker pull docker.elastic.co/beats/filebeat:7.9.3

5.2临时启动镜像

docker run -d --name=filebeat --network elasticsearch-net docker.elastic.co/beats/filebeat:7.9.3

5.3拷贝数据文件

docker cp filebeat:/usr/share/filebeat /usr/local/docker
chmod 777 -R /usr/local/docker/filebeat
chmod go-w /usr/local/docker/filebeat/filebeat.yml

在这里插入图片描述

5.4编辑配置文件

# 收集系统日志
filebeat.inputs:
- type: logenabled: truepaths:- /var/log/messagesfilebeat.config:modules:path: ${path.config}/modules.d/*.ymlreload.enabled: falseprocessors:- add_cloud_metadata: ~- add_docker_metadata: ~output.elasticsearch:hosts: 'myelasticsearch:9200'
#  username: '${ELASTICSEARCH_USERNAME:}'
#  password: '${ELASTICSEARCH_PASSWORD:}'indices:- index: "filebeat-%{+yyyy.MM.dd}"

5.5 重启filebeat容器

docker rm -f filebeat
docker run -d \--name=filebeat \--user=root \--restart=always \--network elasticsearch-net \-v /usr/local/docker/filebeat:/usr/share/filebeat \-v /usr/local/docker/logdemo:/var/log/messages \elastic/filebeat:7.9.3

等待30秒,查看日志是否有错误

docker logs -f filebeat

没有报错就算启动成功了。

5.6查看日志

访问elasticsearch head
在这里插入图片描述

六、使用1Panel查看容器

在这里插入图片描述
4个容器全部启动成功!!

在这里插入图片描述


只要你确信自己正确就去做。做了有人说不好,不做还是有人说不好,不要逃避批判。


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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

nacos占用内存过高问题

1. 问题 在微服务项目的学习和开发过程中,服务注册中心 Nacos 是一个必不可少的组件。Nacos 提供了服务注册、配置管理等核心功能,使得分布式服务可以轻松实现互相发现、负载均衡和动态配置。然而,许多微服务项目中包含多个模块,…

JavaScript核心编程 - 原型链 作用域 与 执行上下文

原型 在JavaScript中,每个对象都有一个内部属性,称为__proto__(在ES6中,这个属性被Object.getPrototypeOf()和Object.setPrototypeOf()方法标准化),这个属性指向该对象的原型。原型本身也是一个对象&#…

C++ 引用 详解

引用 引用 不是新定义一个变量,而 是给已存在变量取了一个别名 ,编译器不会为引用变量开辟内存空 间,它和它引用的变量 共用同一块内存空间。 比如: 李逵 ,在家称为 " 铁牛 " ,江湖上人称 &qu…

计算机视觉中的中值滤波:经典案例与Python代码解析

Hey小伙伴们!今天我们要聊的是计算机视觉中的一个重要技术——中值滤波。中值滤波是一种非线性滤波方法,主要用于去除图像中的椒盐噪声,同时保留图像的边缘和细节。通过中值滤波,我们可以显著改善图像的质量。让我们一起来看看如何…

【C++练习】计算前N项自然数之和

题目: 计算前N项自然数之和 描述: 编写一个C程序,要求用户输入一个整数N,然后计算并输出从1到N(包括N)的所有自然数之和。 程序功能要求: 程序首先提示用户输入一个整数N。使用一个循环结构…

SpringBoot日志配置

Spring默认日志风格 个人感觉默认的格式还是不错的,每一列都可以对其,而且能用颜色区分,查看日志明了; 下面是他默认的 pattern的配置 %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:%5p}) %clr(${PID:- …

Vue3学习笔记(上)

Vue3学习笔记(上) Vue3的优势: 更容易维护: 组合式API更好的TypeScript支持 更快的速度: 重写diff算法模板编译优化更高效的组件初始化 更小的体积: 良好的TreeShaking按需引入 更优的数据响应式&#xf…

看懂本文,入门神经网络Neural Network

神经网络(Neural Network) 1.1图片 每一个图片都是三维数组,每个像素的值为0-255,如 训练集Training Dataset:“上课学的知识”,用于训练模型得到参数 验证集Validation Dataset:“课后习题”…

Zoho Books助外贸,应收账款简化管

ZohoBooks财务管理软件助外贸企业精准管理客户信息,简化跨境开票,集成支付网关自动对账,智能提醒跟进账款,提供强大报表分析功能,支持多币种和当地税法,促进财务健康与资金回笼。 一、精准的客户信息管理 …

保姆级教程!!教你通过【Pycharm远程】连接服务器运行项目代码

小罗碎碎念 这篇文章主要解决一个问题——我有服务器,但是不知道怎么拿来写代码,跑深度学习项目。确实,玩深度学习的成本比较高,无论是前期的学习成本,还是你需要具备的硬件成本,都是拦路虎。小罗没有办法…

作业调度和程序装入内存

作业调度 我们知道,磁盘上的可执行程序只有装入内存,成为进程才可以运行。在磁盘上有许多的可执行程序等待被操作系统唤入内存执行,我们把可执行程序在磁盘上的调度称之为作业调度。 注意:这种说法听起来好像是作业在磁盘上的调…

广义布里渊区方程推导过程中一个公式的理解

是对DOI: 10.1103/PhysRevLett.123.066404补充材料公式(S25)的理解 clear;clc;close all q2; N1;Mq*N; syms LMatsym(zeros(2*M,2*M));for ii1:MTp[];for jj1:2*M%eval([syms , f,num2str(ii),num2str(jj)]);eval([syms ,f,num2str(ii),_beta,num2str(jj),_ES])%eval([temp,f,…

嵌入式linux中HDMI驱动操作方法

大家好,今天主要给大家分享一下,linux系统里面的HDMI驱动实现方法。 第一:HDMI基本简介 HDMI 全称为 High Definition Multimedia Interface,也就是高清多媒体接口,是一个纯数字的音视频传输接口,通过一根线同时发送音视频数据。目前在电视、显示器、电脑、机顶盒等领域得…

边缘的检测

边缘检测效果,是一种用于突出图像中的边缘,使物体的轮廓更加明显的图像处理技术,边缘检测的主要目的是找到图像中亮度变化显著的区域,这些区域通常对应于物体的边界,边缘检测相当于利用 Shader 代码自动给屏幕图像进行…

架构篇(05理解架构的服务演化)

目录 学习前言 一、服务演化简介 二、方向一:架构服务化 单体分层架构 面向服务架构 - SOA 微服务架构 - Microservices 云原生架构 - Cloud Native 三、方向二:部署容器编排化 虚拟机 容器 Kubernetes 与编排 四、参考文献 学习前言 Kubern…

娶老婆花了30万彩礼,结婚2个月,她前夫给我20万,让我老婆和他生孩子!

我叫李志强,今年32岁,在一家物流公司当经理。去年我娶了我老婆张美玲,为了这场婚礼,我花了30万彩礼。美玲比我小3岁,是个护士,长得漂亮又温柔,我觉得自己找到了真爱。 结婚前,美玲就…

基于SpringBoot的国风服装商城系统+LW示例参考

1.项目介绍 系统角色:管理员、普通用户功能模块:管理员(用户管理、商品管理、分类管理、订单管理、系统管理、在线客服等),普通用户(登录注册、个人中心、评价管理、收藏管理、订单管理等、咨询服务等&…

GB/T 43206—2023信息安全技术信息系统密码应用测评要求(五)

文章目录 附录AA.1 概述A.2 密钥产生A.3 密钥分发A.4 密钥存储A.5 密钥使用A.6 密钥更新A.7 密钥归档A. 8 密钥撤销A.9 密钥备份A.10 密钥恢复A.11 密钥销毁 附录B附录C 附录A A.1 概述 密钥管理对于保证密钥全生存周期的安全性至关重要 ,可以保证密钥(除公开密钥外) 不被非授…

jmeter常用配置元件介绍总结之前置处理器、测试片段

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之前置处理器、测试片段 6.前置处理器6.1用户参数6.2取样器超时6.3.测试片段6.4JSR223 PreProcessor6.5.JDBC PreProcessor 6.前置处理器 在取样器请求之前执行的操作,优先级比取样器高,用来处理一些…

【IT人物系列】之Java之父

前言 当今世界由无数的人构成,其中有些人做了一些改变世界的事情,比如:乔布斯缔造了Apple帝国,‌詹姆斯高斯林创造了Java语言等。正是这些优秀的人做的这些优秀的事情,让这个世界更加美好。因此他们值得铭记。 从今天…