Elastic search /Elastic Stack(ELK) 的入门和docker compose一键安装部署ELk

什么是elk?

        (不是blg的adc)是以elasticsearch为核心的技术栈,包括:

1.elasticsearch:储存、计算和搜索数据(核心,不可替代的ad)

2.kibana数据可视化(辅助,帮忙做眼)

3.logstash/beats :数据抓取(帮忙喂人头的打野)

        elasticsearch的底层实现是Lucene,是Apache的开源的java语言的搜索引擎类库,提供了搜索引擎的核心API。易扩展、高性能(基于倒排索引)。

什么是倒排索引?

正序索引:

  • 正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程

  • 优点
    • 可以给多个字段创建索引
    • 根据索引字段搜索、排序速度非常快
  • 缺点
    • 根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。

倒排索引:

  • 倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程

  • 优点
    • 可以给多个字段创建索引
    • 根据索引字段搜索、排序速度非常快
  • 缺点
    • 根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。

mysql和es对比:

MySQLElasticsearch说明
TableIndex索引(index),就是文档的集合,类似数据库的表(table)
RowDocument文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式
ColumnField字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)
SchemaMappingMapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema)
SQLDSLDSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD

elk的安装部署

docker compose的安装:

        Docker compose(容器编排工具)是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose酒可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,可以从 YML 文件配置中创建并启动所有服务。

                Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:Releases · docker/compose · GitHub。运行以下命令以下载 Docker Compose 的当前稳定版本:(最好和自己docker版本对应)

$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

安装其他版本的 Compose,替换 ''v2.2.2''。

将可执行权限应用于二进制文件:(给权限)

$ sudo chmod +x /usr/local/bin/docker-compose

创建软链:

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

$ docker-compose version

能够显示版本信息则成功!

创建一个docker 网络 后面用

$ docker network create elk

配置文件

建立一个名为elk.yml 的文件,输入配置文件信息如下:

version: '3'
services:
  elasticsearch:
    restart: always
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    container_name: elasticsearch
    hostname: elasticsearch
    privileged: true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "discovery.type=single-node"
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - "./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
      - "./elasticsearch/plugins:/usr/share/elasticsearch/plugins:rw"
      - "./elasticsearch/data:/usr/share/elasticsearch/data:rw"
    networks:
      - elk

  kibana:
    restart: always
    container_name: kibana
    image: docker.elastic.co/kibana/kibana:7.10.2
    environment:
      ELASTICSEARCH_HOSTS: http://elasticsearch:9200
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    networks:
      - elk

  logstash:
    image: docker.elastic.co/logstash/logstash:7.10.2
    container_name: logstash
    ports:
      - "5044:5044"
    restart: always
    volumes:
      - "./logstash/config:/usr/share/logstash/pipeline"
      - "./logstash/plugins:/usr/share/logstash/plugins"
      - "./logstash/data:/usr/share/logstash/data"
      - "./logstash/logs:/usr/share/logstash/logs"
      - "./logstash/lib/mysql-connector-java-8.0.23.jar:/usr/share/logstash/mysql-connector-java-8.0.23.jar"
    depends_on:
      - elasticsearch
    networks:
      - elk

networks:
  elk:
    external: true

可将 image 换成:

image: elasticsearch:7.8.0
image: kibana:7.8.0

解释:

顶部配置:

version: '3'  这是Docker Compose文件的版本。

服务定义

配置文件定义了三个服务:elasticsearchkibanalogstash

elasticsearch:

image: 使用的对应镜像 ,改成自己的

container_name: 容器名称

volumes: 挂载主机目录到容器内部目录。配置文件、插件、数据目录的挂载。

networks: 该容器所属的网络,这里是elk网络

environment:(有些缩写为-e)设置环境变量,第一个是设置堆内存大小;512M;第二个是运行模式,single-node为单点模式运行

volumes:(有些缩写为-v)数据卷挂载,data为数据保存目录,plugin为插件目录(为将来es插件扩张)

port(有些缩写为-p):端口,第一个9200为暴露在http的端口,为用户访问;9300是各个容器互联的端口(如果是云服务器,需要将端口开放才能被访问到)

kibana:

environment:设置环境变量, 用【容器名:地址名】让kibana连接es

其余的都差不多。版本一定要和es一致!

kibana启动较慢,可用命令康康:

docker logs -f kibana

网络配置

定义了一个外部网络elk,所有服务都在这个网络中运行

使用docker compose 一键启动

        运行配置文件,建立es集群:

 docker-compose -f elk.yml up -d 

        启动完毕!,使用 docker ps 查看

可以在浏览器输入  服务器ip地址:5601  如 172.0.0.1:5601  进入 kibana,利用辅助做的眼看可视化界面:

点击右上角的 Dev tools 可以进入DSL控制台,可以发送DSL请求(类似发送sql语句)

kibana可以将语句发送给es进行crud操作

运行结果:

ELK stackElasticsearch,Logstash,Kibana)是一套流行的日志管理和分析解决方案。使用Docker Compose部署ELK非常方便,让我们来看看如何实现。 1. 安装DockerDocker Compose 首先,你需要在你的机器上安装DockerDocker Compose。如果你还没有安装,可以按照Docker官方文档进行安装:https://docs.docker.com/engine/installation/ 2. 创建docker-compose.yml文件 在你的项目目录中创建一个名为docker-compose.yml的文件,用于定义ELK stack服务的配置。 ``` version: '2' services: elasticsearch: image: elasticsearch:6.5.4 container_name: elasticsearch environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 ports: - "9200:9200" volumes: - esdata:/usr/share/elasticsearch/data logstash: image: logstash:6.5.4 container_name: logstash volumes: - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf depends_on: - elasticsearch ports: - "5044:5044" kibana: image: kibana:6.5.4 container_name: kibana environment: - ELASTICSEARCH_URL=http://elasticsearch:9200 ports: - "5601:5601" depends_on: - elasticsearch volumes: esdata: driver: local ``` 在这个文件中,我们定义了三个服务:Elasticsearch,Logstash和Kibana。使用image关键字,我们指定了我们要使用的Docker映像。container_name关键字允许我们为容器指定一个名称,以便我们可以轻松地引用它们。对于Elasticsearch,我们还定义了环境变量和卷。 对于Logstash,我们挂载了一个名为logstash.conf的配置文件,以便我们可以定义Logstash如何处理日志数据。我们还定义了对Elasticsearch的依赖关系和一个端口映射。 对于Kibana,我们定义了一个环境变量,指定Kibana应该连接到哪个Elasticsearch实例,并定义了另一个端口映射。 最后,我们还定义了一个名为esdata的卷,用于持久化Elasticsearch数据。 3. 创建logstash.conf文件 在你的项目目录中创建一个名为logstash.conf的文件,并将以下内容复制到文件中。 ``` input { file { path => "/var/log/*.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "logs-%{+YYYY.MM.dd}" } } ``` 这个文件告诉Logstash如何处理日志数据。在这种情况下,我们从一个名为/var/log/*.log的文件中读取日志数据,并使用Grok模式匹配来解析它们。我们还使用date插件将时间戳解析为可搜索的格式。最后,我们将数据发送到Elasticsearch中。 4. 启动ELK stack 一旦你创建了docker-compose.yml和logstash.conf文件,就可以启动ELK stack了。在你的项目目录中运行以下命令: ``` docker-compose up ``` 这个命令将启动Elasticsearch,Logstash和Kibana服务,并将它们连接在一起。你可以使用以下命令在后台运行它们: ``` docker-compose up -d ``` 一旦启动,你可以通过访问http://localhost:5601来访问Kibana界面,从而查看和分析日志数据。 总结 Docker Compose是一种强大的工具,可帮助你轻松地部署和管理复杂的应用程序。使用它来部署ELK stack可以让你更轻松地管理和分析日志数据。希望这篇文章对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值