文章目录

  • 为什么要搭建ELK
  • ELK Stack的介绍
  • ELK Stack的架构图
  • es介绍
    • 基本概念
    • es基础环境搭建
    • docker部署es

为什么要搭建ELK

介绍: ELK是es,logstash和kibana三者的组合,他们是同一家公司开发的,在企业中经常用于进行日志采集

为啥搭建ELK呢?

  • 开发人员在排查故障的时候经常需要看日志,在有些公司开发人员是没有权限登录上服务器的,有些可以登录,但是权限很少,如果某个业务,部署了很多的服务器,日志也会很多,想看日志的时候,为了方便开发人员,部署ELK
  • 对于运维人员来讲,虽然可以登录服务器查看日志,但是相比使用grep,sed等Linux命令查看,ELK会更加的直观。随着服务器越来越多,日志类型,等等越来越多,ELK的优势就显示出来了

ELK Stack的介绍

ELK Stacks是一个技术栈的组合,分别是Elasticsearch、Logstash、Kibana

  • es:它的官方描述是,es是一个Restful风格的搜索和数据分析引擎,es是ELK Stack的核心,存储着我们的数据,也可以理解为一个分布式的数据库
  • logstash:logstash是一个管道,是服务端的数据处理管道,它可以从同时从多个来源采集数据
  • Kibana:Kibana是仪表盘,进行数据的可视化
  • Beans:轻量级采集器的平台,从边缘机器向 Logstash 和 Elasticsearch 发送数据。
  • FileBean:轻量级的日志采集器

ELK Stack的架构图

数据输入到logstash中,然后logstash进行处理后分发给es,然后es进行处理,然后kibana进行数据的可视化。

logstash里面有3个关卡,Input,Filter和Output

  • Input:输入,输出数据可以是Stdin、File、TCP、Redis、Syslog等。
  • Filter:过滤,将日志格式化。有丰富的过滤插件:Grok正则捕获、Date时间处理、Json编解码、Mutate数据修改等。
  • Output:输出,输出目标可以是Stdout、File、TCP、Redis、ES等。

es介绍

es博主没有深入研究,据说es内容非常多,这里我先介绍一下基本概念和基础环境搭建

基本概念
  • Node:运行单个ES实例的服务器
  • Cluster:一个或多个节点构成集群 ,一般会配置成奇数,防止脑裂的问题
  • Index:索引是多个文档的集合
  • Document:Index里每条记录称为Document,若干文档构建一个Index
  • Type:一个Index可以定义一种或多种类型,将Document逻辑分组
  • Field:ES存储的最小单元
  • Shards:ES将Index分为若干份,每一份就是一个分片 ,每个分片都在不同的node上,它也是一个提高并发的关键
  • Replicas:Index的一份或多份副本

类比对应关系

ES MySQL
Index DB
Type Table
Document Row
Field Column
es基础环境搭建

首先把SElinux关闭,然后清空iptables,我们自己编写一条iptables链,允许我们局域网上的主机可以进行通信,然后还要使用ntp进行时间同步,因为我们查看日志很多时候都是根据时间查的,所以配置这几台es服务器时间同步。


docker部署es

基础环境安装

yum -y install gcc
yum -y install gcc-c++

安装docker的依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

安装docker

yum -y install docker-ce

启动docker

systemctl start docker

查看docker系统版本

[root@lvs roles]# docker version
Client: Docker Engine - CommunityVersion:           19.03.8API version:       1.40Go version:        go1.12.17Git commit:        afacb8bBuilt:             Wed Mar 11 01:27:04 2020OS/Arch:           linux/amd64Experimental:      falseServer: Docker Engine - CommunityEngine:Version:          19.03.8API version:      1.40 (minimum version 1.12)Go version:       go1.12.17Git commit:       afacb8bBuilt:            Wed Mar 11 01:25:42 2020OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.2.13GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429runc:Version:          1.0.0-rc10GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dddocker-init:Version:          0.18.0GitCommit:        fec3683

配置docker镜像加速,这里每个人的都是不一样的,直接使用菜鸟教程那个:菜鸟教程镜像加速教学

[root@lvs roles]# sudo mkdir -p /etc/docker
[root@lvs roles]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {>   "registry-mirrors": ["https://0lmclr63.mirror.aliyuncs.com"]
> }
> EOF
{"registry-mirrors": ["https://0lmclr63.mirror.aliyuncs.com"]
}

重新启动docker并拉取es镜像

[root@lvs roles]# sudo systemctl daemon-reload
[root@lvs roles]# sudo systemctl restart docker
[root@lvs roles]# docker pull elasticsearch:7.2.0
7.2.0: Pulling from library/elasticsearch
8ba884070f61: Pull complete
2211b14f8b24: Pull complete
617ccdb47f3d: Pull complete
915ee6b2c338: Pull complete
b414b7f29a7d: Pull complete
547bfdd35d62: Pull complete
8353a2ed248c: Pull complete
Digest: sha256:84b5bc2fd15b0f1f5bf78c8c6ee34b6ae5a46ab81be1c2cfa678eea0c6457a46
Status: Downloaded newer image for elasticsearch:7.2.0
docker.io/library/elasticsearch:7.2.0
[root@lvs roles]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
elasticsearch       7.2.0               0efa6a3de177        10 months ago       861MB

查找Elasticsearch启动文件,把Jvm内存的1G改成512m,

[root@lvs roles]# find /var/lib/docker -name jvm.options
/var/lib/docker/overlay2/f71eb89609a63a340a587968d11bdfc01f4deb1461811d2cc9445c69b4ecc3f7/diff/usr/share/elasticsearch/config/jvm.options
[root@lvs roles]# vim /var/lib/docker/overlay2/f71eb89609a63a340a587968d11bdfc01f4deb1461811d2cc9445c69b4ecc3f7/diff/usr/share/elasticsearch/config/jvm.options


使用docker创建es容器在后台运行并查看es进程

[root@lvs roles]# docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.2.0
a3bddb30f86ae0d1986cae3d58c272ae703bfa7402a2797304a2477252ee7e8b
[root@lvs roles]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                            NAMES
a3bddb30f86a        elasticsearch:7.2.0   "/usr/local/bin/dock…"   10 seconds ago      Up 9 seconds        0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   es

docker inspect es查看IP地址

访问测试

[root@lvs roles]# curl 172.17.0.2:9200
{"name" : "a3bddb30f86a","cluster_name" : "docker-cluster","cluster_uuid" : "h-RTgPL8SJGEQBVeAuJ7Rw","version" : {"number" : "7.2.0","build_flavor" : "default","build_type" : "docker","build_hash" : "508c38a","build_date" : "2019-06-20T15:54:18.811730Z","build_snapshot" : false,"lucene_version" : "8.0.0","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}

查看集群节点(这里还没有配置集群,介绍一下)

[root@lvs roles]# curl -XGET 'http://172.17.0.2:9200/_cat/nodes?pretty'
172.17.0.2 35 46 0 0.03 0.05 0.04 mdi * a3bddb30f86a

查看集群健康状态

[root@lvs roles]# curl -i -XGET http://172.17.0.2:9200/_cluster/health?pretty
HTTP/1.1 200 OK
content-type: application/json; charset=UTF-8
content-length: 467{"cluster_name" : "docker-cluster","status" : "green","timed_out" : false,"number_of_nodes" : 1,"number_of_data_nodes" : 1,"active_primary_shards" : 0,"active_shards" : 0,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0
}

显示green,说明非常健康

  • green:所有的主分片和副本分片都已分配。你的集群是 100% 可用的。
  • yellow:所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果 更多的 分片消失,你就会丢数据了。把 yellow 想象成一个需要及时调查的警告。
  • red:至少一个主分片(以及它的全部副本)都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。
  • green/yellow/red 状态是一个概览你的集群并了解眼下正在发生什么的好办法。

ELK(一)使用docker搭建elasticsearch相关推荐

  1. Docker 搭建elasticsearch 7.6.x集群

    Docker 搭建elasticsearch 7.6.x集群 文章目录 拉取镜像 设置Elasticsearch挂载目录 编写elasticsearch.yml配置文件 node-1 node-2 n ...

  2. 用Docker搭建Elasticsearch集群

    用Docker搭建Elasticsearch集群 对于用Docker搭建分布式Elasticsearhc集群的一个介绍,以及一些实施中遇到问题的总结 搜索服务简述 结合业务的场景,在目前的商品体系需要 ...

  3. docker 添加端口映射_苟且偷生的程序猿没法摸鱼了,从docker搭建elasticsearch集群开始学习...

    最近刚换了公司,然后公司刚好使用的docker.而本人作为一个石锤的搬砖员,之前只知道搬砖们,对于这些东西确实没学过.今天在本地使用docker搭建elasticsearch集群,记录下过程,而且el ...

  4. Docker搭建Elasticsearch方法及启动后服务自动关闭的问题

    太长不看,一句话总结 内存太小,启动命令中添加参数修改虚拟机大小即可 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e " ...

  5. Docker搭建ElasticSearch集群

    Docker搭建ElasticSearch集群 一.环境准备 Linux Verison(7.9) VMware(16) Docker(20.10.16) ElasticSearch(7.17.1) ...

  6. 基于 docker 搭建 elasticsearch:5.6.8 分布式集群环境

    文章目录 1. 目录结构 2. 前置配置 3. 单机版 es 集群搭建 4. es 客户端工具安装 5. 通过 api 操作索引 5.1 创建索引 5.2 创建 index 对应的 mapping 5 ...

  7. 使用Docker搭建Elasticsearch集群环境

    本篇文章首发于头条号单机如何搭建Elasticsearch集群?使用容器技术快速构建集群环境,欢迎关注头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_te ...

  8. 基于Docker搭建Elasticsearch集群

    一.环境搭建 SpringBoot整合es时使用的集群环境,如果不搭建集群使用SpringBoot整合时会报错:None of the configured nodes are available 我 ...

  9. Docker部署Elasticsearch及安装后自动关闭的问题

    Docker搭建Elasticsearch方法 前往dockerhub官网:dockerhub 可查看elasticsearch相应版本 拉取镜像 选取一个版本拉取镜像,如docker pull el ...

最新文章

  1. linux 终端 渐变色,iOS开发——UI篇文字渐变效果:图层中的mask属性
  2. 异常信息配置文件已被另一个程序更改_抢先目睹:SpringBoot2.4配置文件加载机制大变化
  3. OPENCV-2 学习笔记
  4. 太快了,太变态了:什么会影响Java中的方法调用性能?
  5. Dubbo(十二)dubbo的服务版本配置以及本地存根使用介绍
  6. asp 退出登录修改cookie能进入后台_某logCMS的代码审计:越权到后台getshell
  7. Linux下Nginx+多Tomcat负载均衡实现详解
  8. DPad down是哪个键_投影仪前3甲PK:双十一坚果J7S和当贝D3X投影仪选择哪个
  9. Delphi 3D Glscene安装
  10. 安装sql server出现配置系统未能初始化
  11. 电视盒子线刷固件教程B860AV2.1-A-M-T版
  12. java导出excel 图片_将图片导出到Excel中(poi导出)
  13. cesium加载天地图的卫星影像图
  14. 自主导航与路径规划无人机研究现状
  15. 移动电源给路由器供电
  16. 安全我知道 世界顶尖防火墙逐个看(转)
  17. 美国国家学术出版社所有PDF图书开放免费下载
  18. K_A16_001 基于STM32等单片机驱动HX711称重模块 串口与OLED0.96双显示
  19. 阿里终于出手了!“00后职校女生自学 低代码 月薪破万” 背后真相,细思极恐...
  20. “蔚来杯“2022牛客暑期多校训练营7 L Maximum Range(强连通缩点+网络流输出方案)

热门文章

  1. 几何画板 国际正版 英文 国际版序列号
  2. python 集合常见运算交集并集差集
  3. 听书软件大全,听书软件哪个好?
  4. Unity 各版本下载方法
  5. 【Redis】Redis最大连接数maxTotal设置过小的问题
  6. 指尖创客机器人_IRM国际机器人创客选拔赛落幕 30名小选手将代表重庆前往上海参赛...
  7. java成员变量怎么赋值_给成员变量赋值的两种方法
  8. EasyConnect mac 终极解决方案
  9. 阿里云--云开发平台的创建与部署
  10. web窗体页面之间的传值