精华内容
下载资源
问答
  • ElasticSearch快速入门实战

    千人学习 2020-03-05 22:14:23
    课程目标掌握ElasticSearch的部署方法及应用,达到后端开发的技术要求适用人群大学生 中学生 初学者 转业士兵 有IT领域从业意愿的人群课程简介 ElasticSearch是一款数据分析数据库+数据搜索引擎。 课程以Elastic...
  • Elasticsearch从入门到实战

    千人学习 2019-09-29 12:07:42
    Elasticsearch是业界领先的海量搜索引擎,开箱即用的特性让其拥有最多的装机量。当前采用和使用Elasticsearch的企业越来越多。 本课程不仅会涉及Elasticsearch的基本安装和配置,更会对其基本操作进行详细的讲解和...
  • ElasticSearch企业级开发

    千人学习 2019-12-13 14:39:42
    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索...
  • 14 elasticsearch 排序与分页 15 elasticsearch 如何查询指定的字段 16 elasticsearch 高亮显示 17 elasticsearch 聚合 18 elasticsearch mapping 概念 19 elasticsearch 的中文词库 20 elasticsearch 中文词库安装...
  • 版本定位: 目前采用ELK7.x:即ELK(elasticsearch7.3+logstash7.3+kibana7.3) 官网最新版本搭建集群和展示 elk是什么意思中文? ELK Stack 是Elasticsearch、Logstash、Kiban三个开源软件的组合。在实时数据检索和...
  • ElasticSearch-head插件(NodeJs版本) 课程内容: springboot2.1.8+Es7.3.2的完美结合,让大数据PB级别的数据查询,瞬间展示和释放生产力; Es7.x(elasticsearch7.x)目前最新官方版本的集群搭建  绚丽的...
  • 本教程旨在带领大家了解Elasticsearch的语法、安装。熟练使用Elasticsearch
  • 适用人群 开发从业人员,大数据从业人员,运维从业人员,IT相关从业人员,想快速掌握技能的一切人员 课程概述 ElasticSearch7.x集群?Elasticsearch-head7.x官网都没有的插件整合?cerebro插件酷炫暗黑插件神器?一...
  • 目前最新版搜索引擎Elasticsearch5.2的插件elasticsearch-head。 我的博客http://blog.csdn.net/taoshujian中有使用笔记
  • 本课程提供所有代码笔记素材以及答疑服务 涉及知识点如下: 1、ElasticSearch下载安装(window以及linux下安装) 2、集群环境搭建 3、客户端Kibana安装与使用 4、集群管理插件head安装使用 5、java api 操作 ES 6、...
  • 本课程深入浅出剖析了Elasticsearch的核心基础知识,带着大家一步一步,从快速入门,到理解Elasticsearch的工作原理、内核级原理,再到动手实战操作Elasticsearch的各种核心功能,到最后可以基于Java语言开发基本的...
  • ElasticSearch Java API 中文文档 ElasticSearch Java API 中文文档
  • ElasticSearch 中文文档 完整版, 寻找有缘人!
  • 配置Elasticsearch SSL 配置Kibana SSL 配置Beats(Zeek)SSL 添加身份验证 向Elasticsearch添加数据 启用检测 安装Elastic EDR代理 安装证书 安装代理 结论 资源资源 最近几个月,Elastic Stack发生了很...
     

    目录

    网络设计

    配置X-Pack

    配置Elasticsearch SSL

    配置Kibana SSL

    配置Beats(Zeek)SSL

    添加身份验证

    向Elasticsearch添加数据

    启用检测

    安装Elastic EDR代理

    安装证书

    安装代理

    结论

    资源资源


    最近几个月,Elastic Stack发生了很多变化,并发布了许多免费的安全工具。由Comodo和Elastic Endpoint Security发布的OpenEDR。因此,我认为现在是查看Elastic的更改并尝试其新Endpoint Security的好时机。因此,对于这篇文章,我将展示如何从头开始安装Elastic SIEM和Elastic Endpoint Security。

    网络设计

    下面是此帖子的非常简单的网络图。ELK在ESXi上托管的Ubuntu 20.04服务器上运行。Zeek也在Ubuntu 20.04服务器上运行,并且交换机上的端口已镜像到ESXi服务器上的端口。

    同样在ESXi上运行的是Windows 10计算机,我们将在其中安装Elastic Endpoint Security代理。

    弹性SIEM网络

    配置X-Pack

    就目前而言,我们在ELK部署中拥有的唯一功能是日志提取和可视化。我们可以将日志提取到ElasticSearch中,并通过Kibana可视化来处理数据,但是缺少SIEM的核心功能。我们无法建立检测或用例。此功能不是“开箱即用”的,要使用它,我们必须首先在所有不同节点之间配置安全性。X-Pack是Elastic软件包,它基本上负责所有Elastic Security功能。

    所需的一个关键组件是配置每个节点之间的SSL连接,可以通过多种方法进行。我们也将使用X-Pack来执行此操作。

    首先,在安装了Elasticsearch的主机上,我们需要创建一个YAML文件,/usr/share/elasticsearch/instances.yml该文件将包含我们要使用SSL保护的不同节点/实例。就我而言,我只有Elasticsearch,Kibana和Zeek。

    instances:
        - name: "elasticsearch"
          ip:
            - "192.168.1.232"
        - name: "kibana"
          ip:
            - "192.168.1.232"
        - name: "zeek"
          ip:
            - "192.168.1.234"

    接下来,我们将使用Elastic的certutil工具为我们的实例生成证书。这也将生成一个证书颁发机构。

    /usr/share/elasticsearch/bin/elasticsearch-certutil cert ca --pem --in instances.yml --out certs.zip

    这将为我们的每个实例创建一个.crt.key文件,以及一个ca.crt文件。

    您可以使用解压缩来解压缩不同的证书。

    unzip /usr/share/elasticsearch/certs.zip -d /usr/share/elasticsearch/

    现在我们有了我们的证书,我们可以配置每个实例。

    配置Elasticsearch SSL

    首先,我们需要创建一个文件夹将证书存储在我们的Elasticsearch主机上。

    mkdir /etc/elasticsearch/certs/ca -p

    接下来,我们需要将解压缩的证书复制到其相关文件夹中并设置正确的权限。

    cp ca/ca.crt /etc/elasticsearch/certs/ca
    cp elasticsearch/elasticsearch.crt /etc/elasticsearch/certs
    cp elasticsearch/elasticsearch.key /etc/elasticsearch/certs
    chown -R elasticsearch: /etc/elasticsearch/certs
    chmod -R 770 /etc/elasticsearch/certs

    接下来,我们需要将SSL配置添加到 /etc/elasticsearch/elasticsearch.yml文件中。

    # Transport layer
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.key: /etc/elasticsearch/certs/elasticsearch.key
    xpack.security.transport.ssl.certificate: /etc/elasticsearch/certs/elasticsearch.crt
    xpack.security.transport.ssl.certificate_authorities: [ "/etc/elasticsearch/certs/ca/ca.crt" ]
    
    # HTTP layer
    xpack.security.http.ssl.enabled: true
    xpack.security.http.ssl.verification_mode: certificate
    xpack.security.http.ssl.key: /etc/elasticsearch/certs/elasticsearch.key
    xpack.security.http.ssl.certificate: /etc/elasticsearch/certs/elasticsearch.crt
    xpack.security.http.ssl.certificate_authorities: [ "/etc/elasticsearch/certs/ca/ca.crt" ]

    现在重新启动Elasticsearch。

    service elasticsearch restart

    配置Kibana SSL

    现在,我们将重复该过程,但这一次是针对Kibana。Kibana的配置略有不同。

    同样,将您的证书移动到正确的文件夹并设置正确的权限。

    注意:以下步骤假定您正在运行独立的ELK配置。如果您正在运行分布式部署,则需要将证书移至适当的主机。

    mkdir /etc/kibana/certs/ca -p
    cp ca/ca.crt /etc/kibana/certs/ca
    cp kibana/kibana.crt /etc/kibana/certs
    cp kibana/kibana.key /etc/kibana/certs
    chown -R kibana: /etc/kibana/certs
    chmod -R 770 /etc/kibana/certs

    接下来,在文件中/etc/kibana/kibana.yml 添加Elasticsearch和Kibana之间的SSL设置。

    # The URLs of the Elasticsearch instances to use for all your queries.
    elasticsearch.hosts: ["https://192.168.1.232:9200"]
    elasticsearch.ssl.certificateAuthorities: ["/etc/kibana/certs/ca/ca.crt"]
    elasticsearch.ssl.certificate: "/etc/kibana/certs/kibana.crt"
    elasticsearch.ssl.key: "/etc/kibana/certs/kibana.key"

    然后在同一文件中,在Kibana和浏览器之间添加配置。

    # These settings enable SSL for outgoing requests from the Kibana server to the browser.
    server.ssl.enabled: true
    server.ssl.certificate: "/etc/kibana/certs/kibana.crt"
    server.ssl.key: "/etc/kibana/certs/kibana.key"

    然后,重新启动Kibana。

    service kibana restart

    配置Beats(Zeek)SSL

    下一步,我们需要为运行Zeek和Beats的主机配置SSL。如果您没有运行Zeek或任何其他使用Filebeats模块的产品,例如Suricata,Windows Event Log等,则可以跳过此步骤。

    首先将证书复制到运行Zeek的主机上,然后使用正确的权限创建证书目录。您需要同时复制Zeek证书和CA证书。

    mkdir /etc/filebeat/certs/ca -p
    cp ca/ca.crt /etc/filebeat/certs/ca
    cp zeek/zeek.crt /etc/filebeat/certs
    cp zeek/zeek.key /etc/filebeat/certs
    chmod 770 -R /etc/filebeat/certs

    接下来,我们需要将更改添加到 /etc/filebeat/filebeat.yml

    首先,我们的Elasticsearch配置设置。

    # Elastic Output
    output.elasticsearch.hosts: ['192.168.1.232:9200']
    output.elasticsearch.protocol: https
    output.elasticsearch.ssl.certificate: "/etc/filebeat/certs/zeek.crt"
    output.elasticsearch.ssl.key: "/etc/filebeat/certs/zeek.key"
    output.elasticsearch.ssl.certificate_authorities: ["/etc/filebeat/certs/ca/ca.crt"]

    然后是我们的Kibana配置设置。

    # Kibana Host
    host: "https://192.168.1.232:5601"
      ssl.enabled: true
      ssl.certificate_authorities: ["/etc/filebeat/certs/ca/ca.crt"]
      ssl.certificate: "/etc/filebeat/certs/zeek.crt"
      ssl.key: "/etc/filebeat/certs/zeek.key"

    然后重新启动Filebeat。

    service filebeat restart

    现在,您可以通过运行以下命令来检查FileBeats是否可以联系Elastic。一切都应该返回“OK”。

    filebeat test output

    添加身份验证

    我们还需要向Elastic添加身份验证。这很容易做到。首先通过编辑您的/etc/elasticsearch/elasticsearch.yml 以启用X-Pack的安全功能

    # X-Pack Setting
    xpack.security.enabled: true

    接下来,我们需要为所有内置的Elastic角色和用户生成密码。Elasticsearch包含一个工具来执行此操作。运行以下命令以生成这些密码并将其保存在安全的地方(password manager)。下一部分将使用这些密码。

    /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto

    接下来,将新创建的弹性凭证添加到您的Filebeat配置文件中, /etc/filebeat/filebeat.yml

    # Elastic Credentials
    output.elasticsearch.username: "elastic"
    output.elasticsearch.password: "Your_Elastic_Pass_Here"

    重新启动Filebeat。

    service filebeat restart

    接下来,对您的Kibana配置文件/etc/kibana/kibana.yml执行相同的操作。另外,在此处也启用X-Pack。

    # Elastic Credentials
    xpack.security.enabled: true
    elasticsearch.username: "elastic"
    elasticsearch.password: "Your_Elastic_Pass_Here"

    重新启动Kibana。

    service kibana restart

    导航到Kibana IP地址时,现在应该看到一个登录框。

    Kibana SSL

    向Elasticsearch添加数据

    现在我们已经完成了所有设置,接下来需要做的就是开始将数据摄取到Elasticsearch中。在这里,我们将使用Zeek来监听网络流量。

    启用检测

    您可能会注意到您仍然无法创建检测。最后一步是要完成的。编辑您的Kibana配置文件/etc/kibana/kibana.yml,并添加xpack.encryptedSavedObjects.encryptionKey。这可以是任意32个字符串。

    # X-Pack Key 
    xpack.security.encryptionKey: "something_at_least_32_characters"

    现在,您应该能够查看内置的检测规则并创建自己的检测规则。

    弹性SIEM检测

    安装Elastic Endpoint Security代理

    现在我们准备安装Elastic Endpoint Security。首先,通过单击侧面菜单上管理选项卡下的链接,导航到“ Fleet”仪表板。

    弹性EDR安装

    在Fleet管理菜单中,单击“Add agent”。现在可能会要求您添加集成策略,然后才能安装代理,只需按照向导操作并保留默认值即可。

    弹性EDR安装

    我们将使用“Enroll in Fleet”选项来安装Endpoint Security。

    首先,将Elastic Agent下载到Windows / Linux主机上。

    下载代理后,请在“Agent”策略下保留默认策略。

    在继续执行步骤3之前,我们需要先完成另一个步骤。

    弹性EDR安装

    如果我们现在将代理安装到Windows主机上,则会收到一个错误消息,即我们的自签名证书来自不受信任的来源,并且代理安装将失败。

    因此,我们需要做的是将我们的CA证书添加为Windows主机上的可信证书。

    安装证书

    首先在Windows搜索栏中搜索“Local Security Policy”。然后转到 Security Settings > Public Key Policies > Certificate Path Validation Settings

    然后,选中“Define these policy settings”,然后选中“Allow user trusted root CAs to be used to validate certificates和“Allow users to trust peer trust certificates options”选项(如果尚未选中)。

    最后,勾选Third-Party Root CAs and Enterprise Root CAs

    单击“应用”,然后单击“确定”。

    弹性EDR安装

    下一步certmgr.msc在Windows搜索栏中搜索。

    然后转到 Trusted Root Certification Authorities > Certificates ,右键单击空白处的任意位置,然后选择 All Tasks > Import

    然后简单地按照向导操作,并选择我们之前创建的CA.crt

    弹性EDR安装

    安装代理

    现在我们准备安装Elastic Agent。从Fleet Dashboard复制安装命令,并在该代理所在的Windows主机上使用PowerShell运行它。

    弹性EDR配置

    如果一切顺利,则应该通过Fleet仪表板看到该代理已成功注册。

    弹性EDR SIEM

    但是,我们还没有完成,我们需要检查数据是否已从我们的代理正确导入到ElasticSearch中。您可以通过导航到“Data Stream”选项卡来执行此操作。

    您应该看到其中填充了端点数据。如果此处没有数据,请单击右上角的设置齿轮来检查Fleet设置。确保将ElasticSearch设置正确设置为正确的IP,而不是设置为LocalHost。

    弹性EDR配置

    最后,我们需要为EndPoint代理启用检测规则。转到Kibana Security应用程序中的Detection仪表板,然后“启用”所需的任何端点规则。

    弹性EDR SIEM

    现在,您可以测试它是否有效,在Windows主机上执行一些错误检查,然后看看会发生什么!以我为例,Elastic Endpoint Security成功检测并阻止了Mimikatz文件以及Mimikatz的进程执行。

    弹性EDR Mimikatz块

    我们还可以在Kibana安全检测仪表板中看到这一点。

    我们还可以通过一个不错的小过程尝试图形和事件概述来更深入地研究。

    弹性EDR流程树Mimikatz

    结论

    这样一来,这篇文章就结束了,希望您对它有所帮助。它具有企业级工具的外观和感觉,考虑到它的开源特性,这是惊人的。我们完全可以现在就开始尝试,特别是预算不是特别充足的前提下,我们可以从开源开始,慢慢的赋能企业安全建设。

    因为,这将包含SIEM与终端安全,这为我们开始构建SOC打下一个良好的基础。

    资源资源

    https://www.elastic.co/guide/index.html

    https://www.elastic.co/endpoint-security/

    https://docs.zeek.org/en/current/

    展开全文
  • Elasticsearch:Elasticsearch Dockerfile 例子

    千次阅读 2020-12-26 09:16:30
    如果你有兴趣启动运行 Elasticsearch 的 Docker 容器,那么过程实际上非常简单。 在本文中,我们将向n你展示如何创建镜像并使用 Dockerfile 启动 Elasticsearch Docker 容器。 前提条件 在继续执行本教程中概述...

    Docker 容器提供了一种在自己的环境中创建和打包应用程序的简单方法。 如果你有兴趣启动运行 Elasticsearch 的 Docker 容器,那么过程实际上非常简单。 在本文中,我们将向你展示如何创建镜像并使用 Dockerfile 启动 Elasticsearch Docker 容器。

    前提条件

    在继续执行本教程中概述的步骤之前,你需要具备一个关键的先决条件:你需要一个稳定且受支持的 Docker 版本,才能使用 Dockerfile 创建 Elasticsearch 映像。你可以使用如下的命令来检查你的 Docker 的版本:

    $ docker --version
    Docker version 20.10.0, build 7287ab3

    Elasticsearch YAML 文件

    针对定制的 Docker image,我们通常需要定制自己的 elasticsearch.yml 文件。然后,你需要使用 Dockerfile 的 COPY 命令将文件内容复制到容器中。我们首先来创建一个文件目录:

    mkdir elasticsearch-docker && cd elasticsearch-docker

    使用 Elasticsearch 和 Dockerfile 时,你可以使用 YAML 进行许多不同的配置更改。 以下 YAML 命令仅显示了你可以为在 Docker 中运行的 Elasticsearch 集群修改的一些内容:

    elasticsearch.yml

    # ---------------------------------- Cluster -----------------------------------
    #
    # Use a descriptive name for your cluster:
    #
    cluster.name: cluster-liuxg
    #
    # ------------------------------------ Node ------------------------------------
    #
    # Use a descriptive name for the node:
    #
    node.name: node1
    #
    # Add custom attributes to the node:
    #
    #node.attr.rack: r1
    #
    # ----------------------------------- Paths ------------------------------------
    #
    # Path to directory where to store the data (separate multiple locations by comma):
    #
    path.data: /var/lib/elasticsearch
    #
    # Path to log files:
    #
    path.logs: /var/log/elasticsearch
    #
    # ----------------------------------- Memory -----------------------------------
    #
    # Lock the memory on startup:
    #
    #bootstrap.memory_lock: true
    #
    # Make sure that the heap size is set to about half the memory available
    # on the system and that the owner of the process is allowed to use this
    # limit.
    #
    # Elasticsearch performs poorly when the system is swapping the memory.
    #
    # ---------------------------------- Network -----------------------------------
    #
    # Set the bind address to a specific IP (IPv4 or IPv6):
    #
    network.host: 0.0.0.0
    #
    # Set a custom port for HTTP:
    #
    http.port: 9200
    #
    # For more information, consult the network module documentation.
    #
    # --------------------------------- Discovery ----------------------------------
    #
    # Pass an initial list of hosts to perform discovery when this node is started:
    # The default list of hosts is ["127.0.0.1", "[::1]"]
    #
    #discovery.seed_hosts: ["host1", "host2"]
    #
    # Bootstrap the cluster using an initial set of master-eligible nodes:
    #
    #cluster.initial_master_nodes: ["node-1", "node-2"]
    #
    # For more information, consult the discovery and cluster formation module documentation.
    #
    # ---------------------------------- Gateway -----------------------------------
    #
    # Block initial recovery after a full cluster restart until N nodes are started:
    #
    #gateway.recover_after_nodes: 3
    #
    # For more information, consult the gateway module documentation.
    #
    # ---------------------------------- Various -----------------------------------
    #
    # Require explicit names when deleting indices:
    #
    #action.destructive_requires_name: true
    discovery.type: single-node

    在上面我修改了 cluster.name  以及 node.name。更重要的是我修改了 network.host 为 0.0.0.0,这样可以使得 Elasticsearch 可以被外部所访问。你可以根据自己实际的需求配置这个文件。

    Elasticsearch Dockerfile

    你可以通过多种方式在 Dockerfile 中构建 Elasticsearch 映像。 在以下示例中,Ubuntu 镜像使用 wget 下载 Elasticsearch 服务的 DEB 软件包:

    Dockerfile

    FROM ubuntu:20.04
    
    # container creator
    LABEL maintainer="liu_xiao_guo@yahoo.com"
    
    # copy the configuration file into the container
    COPY logging.yml /usr/share/elasticsearch/config/
    
    
    
    RUN groupadd -g 1000 elasticsearch && useradd elasticsearch -u 1000 -g 1000
    
    # install APT transport and wget
    RUN apt-get update && \
      apt-get install -y --no-install-recommends \
      apt-transport-https \
      curl \
      wget -y
    
    RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-amd64.deb --no-check-certificate && dpkg -i elasticsearch-7.10.1-amd64.deb
    COPY --chown=elasticsearch:elasticsearch elasticsearch.yml /etc/elasticsearch/
    
    # start elasticsearch service
    USER elasticsearch
    ENV PATH=$PATH:/usr/share/elasticsearch/bin
    CMD ["elasticsearch"]
    
    # expose the default Elasticsearch port
    EXPOSE 9200 9300

    注意:请确保在同一行中运行 apt-get update 和 apt-get install 命令,如上例所示。 如果你不这样做,它将被缓存并且不会每次都更新。

    我们使用如下的命令来 build docker image:

    docker build -t liuxg/liuxg-elasticsearch $PWD

    上面的 -t 是给这个镜像一个名称。我们使用 . 来表示当前的目录。等运行完上面的命令后,我们可以使用如下的命令来进行检查:

    docker images

    上面的命令显示:

    我们可以看到一个新增加的 docker image。

    另外一种方法是我们通过下载已经创建好的 Elasticsearch 镜像,然后把我们的配置文件直接拷入到镜像的容器中。下面的例子展示如何实现:

    Dockerfile

    FROM elasticsearch:7.10.1
    
    # container creator
    LABEL maintainer="liu_xiao_guo@yahoo.com"
    
    # copy the configuration file into the container
    COPY elasticsearch.yml /usr/share/elasticsearch/config
    
    # expose the default Elasticsearch port
    EXPOSE 9200 9300

    注意:Docker 仅允许你从每个 Dockerfile 提取一个镜像,因此请确保不要使用多个 FROM 命令。 如果你确实尝试使用 FROM 提取多个镜像,它将仅使用最后一个命令构建一个镜像,而忽略之前的任何命令。

    至此,我们已经成功地创建了我们的 docker 镜像。我们可以使用如下的命令来检查是否有刚才被创建的镜像运行的容器:

    docker ps -a
    docker ps -a | grep liuxg

    上面的命令显示没有任何运行的容器。这是因为到目前为止仅创建了镜像。 你需要使用 docker run 命令从镜像创建容器。

    启动一个 Elasticsearch 容器

    你可以使用以下命令来运行先前创建的 liuxg/iuxg-elasticsearch Docker 镜像:

    docker run --rm -it liuxg/liuxg-elasticsearch /bin/bash

    你还可以使用 -p 选项公开默认的 Elasticsearch 端口 9200。以下是如何使用此选项的示例:

    docker run --rm -p 9200:9200 liuxg/liuxg-elasticsearch
    
    

    一旦我们启动这个容器,我们可以在 host 机器的命令行中打入如下的命令来进行查看:

    curl -XGET http://localhost:9200

    上面命令显示的结果为:

    $ curl -XGET http://localhost:9200
    {
      "name" : "node1",
      "cluster_name" : "cluster-liuxg",
      "cluster_uuid" : "8mWE-_EcRSaLIAJ5MJD4Wg",
      "version" : {
        "number" : "7.10.1",
        "build_flavor" : "default",
        "build_type" : "deb",
        "build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
        "build_date" : "2020-12-05T01:00:33.671820Z",
        "build_snapshot" : false,
        "lucene_version" : "8.7.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }

    从上面我们可以看出来 cluster_name 以及 node 名字都是我们之前在 elasticsearch.yml 中所设置的。我们可以在浏览器中访问 localhost:9200 查看:

    如果你还想了解更多关于 Elastic Stack Docker 部署的文章,请阅读 “Elastic:用Docker部署Elastic栈”。

    展开全文
  • Elastic:监控 Elasticsearch 及 Kibana

    千次阅读 2021-03-22 11:06:53
    一个稳定的 Elastic Stack 集群对于数据的实时采集,处理及查询非常重要。我们可以使用一个专有的 Elasticsearch 集群来监视一个生产环境的 Elasticsearch 集群。在之前的文章 “Beats:通过 Metricbeat 实现外部对 ...

    一个稳定的 Elastic Stack 集群对于数据的实时采集,处理及查询非常重要。我们可以使用一个专有的 Elasticsearch 集群来监视一个生产环境的 Elasticsearch 集群。在之前的文章 “Beats:通过 Metricbeat 实现外部对 Elastic Stack 的监控”,我已经讲述了如何对 Elasticsearch 进行监控。在今天及以后的几篇文章中,我将详细讲述如何来对 Elastic Stack 的各个软件栈进行监控。尽管我们可以使用把 Elasticsearch 自己的状态信息导入到自己的索引中以进行分析,但是在实际的使用中,我们还是倾向于设置一个专用的 Elasticsearch 集群来进行监控,原因是:

    • 减少受监视集群上的负载和存储
    • 即使对于运行状况不佳的群集,也可以继续访问监控。如果没有单独的集群,那么当集群发生故障时,我们不可以继续提供监视
    • 支持隔离职责(单独的安全策略)

    在生产环境中,通常的监视框架图为:

    标题

                                 使用 Metricbeat 进行监视,可将所有数据直接路由到监视群集,而完全无需接触生产群集

    你可以使用 Metricbeat 将有关 Elasticsearch,Kibana,Logstash 和 Beats 的数据直接收集并运送到你的监视集群,而不是通过生产集群进行路由。 上图图说明了具有独立生产和监视群集的典型监视体系结构。

    在今天以后的介绍中,我们将会使用上面的框图来进行构建。通过引入 Metricbeat 作为收集和运输监视数据的代理,不再需要通过生产集群路由监视数据。 现在可以由独立的轻量级监视代理程序收集监视数据,并将其直接发送到监视集群。

    在下面的练习中,我们将使用如下的架构:

    在上面的配置中,我使用了两个集群:生产集群及监视集群。我们必须部署 Metricbeat 到生产集群中,并把数据传入到监视集群中。在上面的机器中,我们将分别部署所有的软件。

    安装

    在上面的配置中,安装的软件不少。我们先来分别安装需要的部分:

    Ubuntu OS

    在这个集群中,我们使用 debian 安装包进行安装,并且配置 https 的访问。在我之前的文章 “Security:如何安装 Elastic SIEM 和 EDR” 有非常详细的描述。请大家按照文章里的要求部署 Elasticsearch 及 Kibana。在这里必须要注意的一点就是在,在我们生产证书时,我们需要添加 Mac OS 电脑的 IP 地址,也就是:

    /usr/share/elasticsearch/instances.yml

    instances:
        - name: "elasticsearch"
          ip:
            - "192.168.0.4"
        - name: "kibana"
          ip:
            - "192.168.0.4"
        - name: "zeek"
          ip:
            - "192.168.0.4"
        - name: "metricbeat"
          ip:
            - "192.168.9.3"

    在上面,我添加了 192.168.9.3 这个 IP 地址,它是我们的 Metricbeat 所运行的机器的 IP 地址。 在生成证书的过程中,它将生成 metricbeat 的证书:

    • metricbeat.crt
    • metricbeat.key

    这个证书将在下面的 Metricbeat 的配置中被使用到。

    Mac OS

    我们可以按照我之前的文章来部署 Elasticsearch 及 Kibana:

    在配置 Elasticsearch 时,我们需要针对 config/elasticsearch.yml 做一些配置:

    config/elasticsearch.yml

    network.host: 0.0.0.0
    discovery.type: single-node

    通过这样的配置,我们的 Elasticsearch 绑定于网路的所有接口。它即可被 http://localhost:9200 访问,也可以被它的私有地址 http://mac:9200。

    针对 Kibana,我们也可以做如下的配置,尽管是不必要的:

    config/kibana.yml

    server.host: "0.0.0.0"

    同样,它既可以被 localhost 也可以被 Mac OS 的私有地址所访问 http://mac:5601。配置完毕后,我们重新启动 Elasticsearch 及 Kibana。

    监控 Elasticsearch

    我们首先打开 Ubuntu OS 上的 Elastic Stack 的 Kibana:

    上面显示没有任何的集群被监控,而且需要被监控的集群也不是我们需要的地址。点击上面的 Monitor with Metricbeat 链接:

    按照上面的要求,我们在 Mac OS 上安装好自己的 Metricbeat,并同时执行如下的命令:

    metricbeat modules enable elasticsearch-xpack

    上面的命令启动 elasticsearch-xpack 模块,实现对 Elasticsearch 的监控。如果你对如何启动 Beats 的模块想了解更多,请参阅我之前的文章 “Beats:Beats 入门教程 (二)”。这里有不再累述了。

    $ pwd
    /Users/liuxg/elastic1/metricbeat-7.11.0-darwin-x86_64
    $ ./metricbeat modules enable elasticsearch-xpack
    Enabled elasticsearch-xpack

    接下来,我们需要把我们在设置 Ubuntu 机器上的集群的证书拷入到 /Users/liuxg/elastic1 目录中 (这个目录依赖于你自己的目录不同而不同):

    $ pwd
    /Users/liuxg/elastic1
    $ ls *.crt
    ca.crt         metricbeat.crt
    $ ls *.key
    metricbeat.key

    我们需要对 Metricbeat 做相应的配置:

    由于我们在 Ubuntu 的 Elasticsearch 中启动了 https 安全,我们需要对 Metricbeat 中的 output.elasticsearch 做如下的修改:

    metricbeat.yml

    output.elasticsearch:
      # Array of hosts to connect to.
      hosts: ["192.168.0.4:9200"]
    
      # Protocol - either `http` (default) or `https`.
      protocol: "https"
    
      # Authentication credentials - either API key or username/password.
      #api_key: "id:api_key"
      username: "elastic"
      password: "password"
      output.elasticsearch.ssl.certificate: "/Users/liuxg/elastic1/metricbeat.crt"
      output.elasticsearch.ssl.key: "/Users/liuxg/elastic1/metricbeat.key"
      ssl.certificate_authorities: [ "/Users/liuxg/elastic1/ca.crt" ]

    等配置完 metricbeat.yml 文件后,我们可以使用如下的命令来进行测试:

    ./metricbeat test output
    $ ./metricbeat test output
    elasticsearch: https://192.168.0.4:9200...
      parse url... OK
      connection...
        parse host... OK
        dns lookup... OK
        addresses: 192.168.0.4
        dial up... OK
      TLS...
        security: server's certificate chain verification is enabled
        handshake... OK
        TLS version: TLSv1.3
        dial up... OK
      talk to server... OK
      version: 7.11.2

    如果你能看到上面的输出,就表明我们的配置是成功的。接下来,我们还需要对 modules.d/elasticsearch-xpack.yml 进行配置:

    modules.d/elasticsearch-xpack.yml

    - module: elasticsearch
      xpack.enabled: true
      period: 10s
      hosts: ["https://192.168.0.3:9200"]

    请注意上面的 192.168.0.3 是我的 Mac OS 电脑的地址,也就是被监控的集群。配置完毕后,我们使用如下的命令来运行 Metricbeat:

    ./metricbeat -e

    我们在  Ubunut 上的 Kibana 中将看到:

     在上面我们显示了如何使用一个监视集群监督另外一个集群。这个功能是免费的,可以在 Basic 许可下使用。在实际的使用中,我们可能会使用一个集群来监视超过一个以上的集群,比如:

    这个对集群的监控属于 Gold/Platinum 许可。你如果想了解更多,请参阅我们的官方文档 https://www.elastic.co/cn/subscriptions

    显然我们的监控已经起作用了。但是在右边我们没有看到 Logs 的信息。这个我们还需要配置。在我之前的文章 “Elastic:配置 Elasticsearch 服务器 logs” 有做详细的介绍。

    我们可以使用 Filebeat 来收集 Elasticsearch 的日志信息。由于 Filebeat 和 Metricbeat 运行于同一个 host 上,出于方便,我们可以直接使用在之前使用的 metricbeat 的证书信息。我们按照好 Filebeat,并对 filebeat.yml 做如下的配置:

    filebeat.yml

    output.elasticsearch:
      # Array of hosts to connect to.
      hosts: ["192.168.0.4:9200"]
    
      # Protocol - either `http` (default) or `https`.
      protocol: "https"
    
      # Authentication credentials - either API key or username/password.
      #api_key: "id:api_key"
      username: "elastic"
      password: "password"
      output.elasticsearch.ssl.certificate: "/Users/liuxg/elastic1/metricbeat.crt"
      output.elasticsearch.ssl.key: "/Users/liuxg/elastic1/metricbeat.key"
      ssl.certificate_authorities: [ "/Users/liuxg/elastic1/ca.crt" ]

    等配置完毕后,我们可以使用如下的命令来对它进行验证:

    ./filebeat test output
    $ ./filebeat test output
    elasticsearch: https://192.168.0.4:9200...
      parse url... OK
      connection...
        parse host... OK
        dns lookup... OK
        addresses: 192.168.0.4
        dial up... OK
      TLS...
        security: server's certificate chain verification is enabled
        handshake... OK
        TLS version: TLSv1.3
        dial up... OK
      talk to server... OK
      version: 7.11.2

    上面标明,我们的配置是没有任何的问题的。我们接着使用如下的命令来启动 elasticsearch 模块:

     ./filebeat modules enable elasticsearch

    接着我们修改 modules.d/elasticsearch.yml 文件:

    modules.d/elasticsearch.yml

    - module: elasticsearch
      # Server log
      server:
        enabled: true
    
        # Set custom paths for the log files. If left empty,
        # Filebeat will choose the paths depending on your OS.
        var.paths:
          - ../elasticsearch*/logs/*_server.json
    
      gc:
        enabled: true
        # Set custom paths for the log files. If left empty,
        # Filebeat will choose the paths depending on your OS.
        var.paths:
          - ../elasticsearch*/logs/gc/log.[0-9]*
          - ../elasticsearch*/logs/gc.log
    
      audit:
        enabled: true
        # Set custom paths for the log files. If left empty,
        # Filebeat will choose the paths depending on your OS.
        var.paths:
          - ../elasticsearch*/logs/*_audit.json
    
      slowlog:
        enabled: true
        # Set custom paths for the log files. If left empty,
        # Filebeat will choose the paths depending on your OS.
        var.paths:
          - ../elasticsearch*/logs/*_index_search_slowlog.json
          - ../elasticsearch*/logs/*_index_indexing_slowlog.json
    
      deprecation:
        enabled: true
        # Set custom paths for the log files. If left empty,
        # Filebeat will choose the paths depending on your OS.
        var.paths:
          - ../elasticsearch/logs/*_deprecation.json

    保存上面的文件,并用一下的方式来运行 Filbeat:

    ./filebeat -e

    我们访问 Ubuntu 中的 Logs:

    从上面显示,我们可以看出来有 Logs 的信息出现。如果你是白金的用户的话,你还可以同时监视多个集群:

    监控 Kibana

    监控 Kibana 其实和 Elasticsearch 也差不多。在上面,我们其实已经配置了 Metricbeat 的 output.elasticsearch。这里就不需要重新配置了。我们可以使用如下的命令来启动 kibana-xpack 模块:

    ./metricbeat modules enable kibana-xpack

    接下来,我们需要对 modules.d/kibana-xpack.yml 进行配置:

    modules.d/kibana-xpack.yml

    - module: kibana
      xpack.enabled: true
      period: 10s
      hosts: ["localhost:5601"]
      #basepath: ""
      #username: "user"
      #password: "secret"

    由于我们的 Kibana 可以同时被 localhost 以及本地 IP 地址访问,所以我们不需要做任何的改变。

    我们重新启动 Metricbeat:

    ./metricbeat -e

    我们重新回到 Ubuntu  机器的 Kibana 界面,并打开正在被监视的集群:

    这一次,我们看到多一个 Kibana 的监控界面。我们可以点进 Overview 来查看 Kibana 的运行情况:

    总结

    在今天的练习中,我们展示了如何使用一个 Elasticsearch 集群来对另外一个集群进行监控。一个健康的可被监控的 Elasticsearch 集群对于一些生成环境来说非常重要。 所有监控指标都存储在监控的 Elasticsearch 中,这使您可以轻松地可视化来自 Kibana 的数据。 默认情况下,监视指标存储在本地索引中。在生产中,我们强烈建议使用单独的监视群集。 使用单独的监视群集可防止生产群集中断影响你访问监视数据的能力。 它还可以防止监视活动影响生产集群的性能。 出于相同的原因,我们还建议使用单独的 Kibana 实例来查看监视数据。在接下来的文章 “Elastic:监控 Beats 及 APM Server” 中,我将详述如何监控 Beats 以及 APM Server。

    展开全文
  • Elasticsearch下载安装

    万次阅读 多人点赞 2019-07-31 19:26:09
    注:Elasticsearch 需要 Java 8 环境,在安装Elasticsearch之前先安装好JDK。 1、Windows版 1.1、下载 访问官网的下载地址:https://www.elastic.co/downloads/elasticsearch,windows版的下载ZIP格式的。 如果...

    注:Elasticsearch 需要 Java 8 环境,在安装Elasticsearch之前先安装好JDK。

    1、Windows版

    1.1、下载

    访问官网的下载地址:https://www.elastic.co/downloads/elasticsearch,windows版的下载ZIP格式的。

    如果不想下载最新版的,可以点击“past releases”选择过去的版本。我这里下载的是6.2.4版本的。

    1.2、解压

    解压下载的压缩包,比如我这里是解压到了D盘根目录,会出现D:\elasticsearch-6.2.4文件夹。

    1.3、启动

    进入elasticsearch的bin目录,双击elasticsearch.bat启动服务,默认端口是9200,如下图:

    启动完成之后,在浏览器中访问http://localhost:9200/,出现如下图所示内容表明Elasticsearch启动成功。

    2、linux版(centos7)

    2.1、下载

    可以按照windows版那样从官网下载TAR格式解压包,上传到linux服务器上。

    如果你的linux可以访问外网的话,推荐直接在linux中下载,执行如下命令:

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz

    2.2、解压

    执行解压命令:

    tar -zxvf elasticsearch-6.2.4.tar.gz

    解压完成后,会出现elasticsearch-6.2.4目录。

    2.3、启动

    执行启动命令:

    ./bin/elasticsearch

    如果你是root用户启动的话,会报"can not run elasticsearch as root"的错误。因为安全问题elasticsearch不让用root用户直接运行,所以要创建新用户,继续阅读2.4步骤。

    2.4、创建新用户

    第一步:liunx创建新用户:"adduser yjclsx",然后给创建的用户加密码:"passwd yjclsx",输入两次密码。

    第二步:切换刚才创建的用户:"su yjclsx",然后启动elasticsearch。如果显示Permission denied权限不足,则继续进行第三步。

    第三步:给新用户赋权限,因为这个用户本身就没有权限,肯定自己不能给自己付权限。所以要用root用户登录并赋予权限,chown -R yjclsx/你的elasticsearch安装目录。

    通过上面三步就可以启动elasticsearch了。

    2.5、验证启动是否成功

    如果一切正常,Elasticsearch就会在默认的9200端口运行。这时,打开另一个命令行窗口,请求该端口:

    curl localhost:9200

    如果得到如下的返回,就说明启动成功了:

    2.6、远程访问elasticsearch服务

    默认情况下,Elasticsearch 只允许本机访问,如果需要远程访问,可以修改 Elasticsearch 安装目录中的config/elasticsearch.yml文件,去掉network.host的注释,将它的值改成0.0.0.0,让任何人都可以访问,然后重新启动 Elasticsearch 。

    network.host: 0.0.0.0

    上面代码中,"network.host:"和"0.0.0.0"中间有个空格,不能忽略,不然启动会报错。线上服务不要这样设置,要设成具体的 IP。

    2.7、常见错误及其解决方式

    错误一:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

    解决:执行下面的命令:

    sudo sysctl -w vm.max_map_count=262144

    错误二:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

    解决:执行下面的命令:

    sudo vim /etc/security/limits.conf

    在limits.conf最下方加入下面两行(这里的yjclsx是之前2.4步骤中新建的用户名):

    yjclsx hard nofile 65536
    yjclsx soft nofile 65536

     

    展开全文
  • ElasticSearch实战速学领悟

    千人学习 2017-07-28 17:26:09
    1、本课程使用的ES版本是5.x 以上版本 2、本课程是引导课程。更多的是学习方法和套路教学,而不是过知识点、过函数 3、工具类、框架类官方更新很快,我们更多的是要学习如何适应变化,而不是背知识点 4、本课程需要...
  • spring data elasticsearch示例

    热门讨论 2016-08-03 15:28:50
    本示例程序主要是对spring data elasticsearch的实践,包含接口声明查询、注解查询和自定义repository查询。运行TestCase时候,请先将配置文件中ES服务端ip:port配置替换成真是的服务端地址
  • Elastic:为 Elasticsearch 启动 HTTPS 访问

    千次阅读 热门讨论 2020-03-23 15:54:48
    在今天的文章中,我们来介绍如何使我们的Elasticsearch启动https服务。这个在很多的场合是非常有用的。特别是在Elastic SIEM的...首先,我们可以按照之前的文章“Elastic:菜鸟上手指南” 安装Elasticsearch及Kiba...
  • Elastic:用 Docker 部署 Elastic Stack

    千次阅读 2019-09-17 10:53:26
    在之前的文章“如何在Linux,MacOS及Windows上进行安装Elasticsearch”,我介绍了如何通过安装包或者下载的压缩文件来进行安装Elasticsearch。在今天的文章里,我们来详细介绍如何使用docker来进行安装Elastic栈。 ...
  • ElasticSearch中文分词,看这一篇就够了

    万次阅读 多人点赞 2020-06-03 16:09:11
    本文我们围绕Elasticsearch的分词器,从内置分词器的局限性出发,引出了中文分词器,然后详细介绍了ik分词器的编译,安装配置和使用。
  • 在今天的文章中,我将介绍如何使用 Go 语言来对 Elasticsearch 进行搜索。首先,我假设你已经对 Elastic Stack 有一定的了解。Elasticsearch 获得了极大的欢迎。 在关系数据库中搜索始终会遇到有关可伸缩性和性能的...
  • 【龙果学院】Elasticsearch顶尖高手系列课程-核心知识篇 【中华石杉】Elasticsearch顶尖高手系列-高手进阶篇 附件是盘地址
  • 使用此插件,您可以使用熟悉的SQL语法查询elasticsearch。您还可以在SQL中使用ES函数。 有两种方法可以使用此插件: 使用其余的api  http://localhost:9200/_sql?sql=select * from indexName limit 10 2. 或者...
  • ElasticSearch 7.10.1 集群搭建

    千次阅读 2020-12-23 17:43:09
    操作系统: centos7 准备: 4台物理主机 主机名 IP noed1 192.168.0.127 noed2 192.168.0.128 noed3 192.168.0.129 noed4 192.168.0.130 ...下载ElasticSearch RPM版本安装包 curl -O https://
  • Elasticsearch Server, 2nd Edition.pdf

    热门讨论 2015-02-05 10:36:48
    Elasticsearch服务器开发第二版,英文版pdf
  • springMVC整合elasticsearch,基于maven

    热门讨论 2016-06-15 17:42:44
    简单整合,不是spring-data,无api操作示例
  • Docker安装ElasticSearch 版本7.6.2

    千次阅读 2021-01-21 17:48:42
    一、Docker 部署 ElasticSearch 1、从仓库中查找所有ElasticSearch的镜像 [hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ docker search elasticsearch [hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 2、...
  • Elastic:为 Elastic Docker 部署设置安全

    千次阅读 2020-04-23 19:36:20
    在之前的教程“Elastic:用Docker部署Elastic栈”里,我有详细讲述如何使用docker来部署我们的Elastic Stack。细心的读者可能已经看出来了它里面没有配置安全。那么针对Docker的部署,我们如何为我们的Elastic Stach...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 330,527
精华内容 132,210
关键字:

elastic