分享

容器化启动ELK:

 新用户0175WbuX 2022-02-04

  Daniel S. Blanco

  5分钟阅读

  容器化启动ELK:

  在这篇文章中,我们将看到ELK的操作在Java应用程序中导入到日志管理,为此,我们将使用Apache Camel的应用程序。

  ELK是如何将一组应用程序,特别是:Elasticsearch,Logstash和Kibana,组合在一起。所有这些都是Elastic开发的开源工具。它们允许您从任何类型的源以及任何格式收集数据以实时搜索,分析和可视化数据。

  Logstash是一个服务器端数据处理管道,其同时消耗来自多个不同源的数据。将此数据转换并发送到数据存储库。Elasticsearch是存储数据,搜索和分析引擎。Kibana允许我们根据Elasticsearch的信息,为用户创建图形和仪表板。

  目前,这堆栈的应用程序也由BEET组成。但我们不会在这篇文章中谈论它。

  在整个帖子中,我们将看到我们如何组装它,如何配置它,并利用Java应用程序的信息。可用堆栈的最简单方法是通过Docker组成。

  我们从Elastic开始。它是最重要的组成部分和需要更多资源的组成部分。在生产性环境中,建议创建群集以保持高可用性和完整性能。但是对于我们的示例,作为主要功能,它只有一个节点。否则,它将是一个常见的Docker配置:

  我们将指示一个本地文件夹作为容器卷,这将允许我们保持信息,即使我们删除容器也是如此。容器使用的公共网络。暴露的端口:9200和9300。健康检查以检查实例是否仍在正常工作。为此,我们将简单地检查公开的端口在调用时获得响应。

  version: "3.7"

  services:

  elasticsearch:

  image: docker.elastic/elasticsearch/elasticsearch:7.10.2

  container_name: elasticsearch

  hostname: elasticsearch

  environment:

  - node.name=elasticsearch

  - cluster.name=es-docker-cluster

  - discovery.type=single-node

  volumes:

  - ./data:/usr/share/elasticsearch/data

  networks:

  - elastic

  ports:

  - 9200:9200

  - 9300:9300

  healthcheck:

  test: curl -s localhost:9200 >/dev/null; if [[ $$?==52 ]]; then echo 0; else echo 1; fi

  interval: 30s

  timeout: 10s

  retries: 5

  networks:

  elastic:

  driver: bridge

  下一节是创建Kibana容器。此工具将读取存储在Elasticsearch中的信息,因此必须知道它在哪里。但这不会在Docker Compose中指示,这对于此工具将具有非常基本的配置。但它将在Yaml配置文件中指示,我们指示为输入卷。

  kibana:

  image: docker.elastic/kibana/kibana:7.10.2

  container_name: kibana

  hostname: kibana

  volumes:

  - ./config/kibana.yml:/usr/share/kibana/config/kibana.yml

  ports:

  - "5601:5601"

  networks:

  - elastic

  depends_on:

  - elasticsearch

  在配置文件中,我们必须指示瘦身服务的名称,其IP地址,以及最重要的是,其中Elasticsearch所在的位置。

  server.name: kibana

  server: 0.0.0.0

  elasticsearchs: [ "elasticsearch:9200" ]

  monitoring.ui.container.elasticsearch.enabled: true

  ## X-Pack security credentials

  elasticsearch.username: elastic

  elasticsearch.password: changeme

  要完成Docker Compose的配置,我们只需要配置LogStash。此配置将有点复杂,包括以下部分:

  一个卷,以指示我们将配置LogStash的文件。我们将配置不同流水线的卷,该流水线将作为要通过logstash发送到Elasticsearch的数据的输入。logstash将访问应用程序创建的日志的卷。服务曝光的端口。要使用的JVM的内存配置。

  logstash:

  image: docker.elastic/logstash/logstash:7.10.2

  container_name: logstash

  hostname: logstash

  volumes:

  - ./config/logstash.yml:/usr/share/logstash/config/logstash.yml

  - ./logstash/pipeline:/usr/share/logstash/pipeline

  - ./lib:/usr/share/lib

  - /home/myUser/Documentos/logs:/tmp

  ports:

  - "5044:5044"

  - "5000:5000/tcp"

  - "5000:5000/udp"

  - "9600:9600"

  environment:

  LS_JAVA_OPTS: "-Xmx256m -Xms256m"

  networks:

  - elastic

  depends_on:

  - elasticsearch

  logstash.yml文件将允许我们配置该工具。对于此示例,它不会包含许多值。至于KIBANA,我们将设置我们的IP以及ELASTICSEARCH所在的IP:

  http: 0.0.0.0

  xpack.monitoring.elasticsearchs: ["elasticsearch:9200"]

  ## X-Pack security credentials

  xpack.monitoring.enabled: true

  xpack.monitoring.elasticsearch.username: elastic

  xpack.monitoring.elasticsearch.password: changeme

  Pipeline文件夹将存储不同的配置文件,该文件将允许Logstash管理不同的信息源并将其发送到Elasticsearch。这些文件分为三个部分:

  输入:指示数据源的位置。在我们的情况下,它将是应用程序生成的日志文件。那些安装在体积上的人。过滤器:我们可以在数据上执行任何过滤操作。对于我们的示例,我们不会执行任何信息。输出:我们指示我们将要发送的存储库。在这种情况下,Elastic。

  配置Docker Compose配置后,我们可以通过访问路径localhost:9200 来检查它是否正常工作。

  下一步将是我们应用程序的配置。关于这一点的最重要的是,我们将使用Logback。并且,通过LogstAshenCoder类,我们将被允许指示某些特征。如输出格式,添加自定义字段,或排除某些包。

  input {

  file {

  path=> "/tmp/*.log"

  codec=> "json"

  type=> "camelelk"

  }

  jdbc {

  jdbc_connection_string=> "jdbc:mysql://sandbox-mysql:3306/library?autoReconnect=true&useSSL=false"

  jdbc_user=> "reader"

  jdbc_password=> "password"

  jdbc_driver_library=> "/usr/share/lib/mysql-connector-java-5.1.38.jar"

  jdbc_driver_class=> "com.mysql.jdbc.Driver"

  schedule=> "* * * * *"

  # our query to fetch blog details

  statement=> "SELECT ID,NAME,AUTHOR FROM library.BOOK"

  use_column_value=> true

  tracking_column=> "id"

  tracking_column_type=> "numeric"

  }

  }

  output {

  elasticsearch {

  hosts=> "elasticsearch:9200"

  user=> "elastic"

  password=> "changeme"

  ecs_compatibility=> disabled

  index=> "camelelk"

  }

  }

  我们将启动应用程序并执行多个查询,例如

  localhost:9090/book/1

  下一步将是配置Kibana能够可视化所有数据。要执行此操作,我们访问

  localhost:5601/app/home。在内部我们必须执行两个步骤。

  创建一个索引

  我们创建一个索引,首先访问“管理空间”菜单选项,然后在左侧菜单中访问索引管理选项。在此屏幕中,我们创建与我们在Logstash流水线中指示的标识符关联的索引。

  容器化启动ELK:

  查看信息

  从“主菜单的”发现“选项中,我们可以访问Logstash发送到Elasticsearch的日志。

  容器化启动ELK:

  有了这个,我们将通过日志监控我们的应用程序。我们将能够通过Kibana更好地利用它们。我们可以根据应用程序向我们发送信息,消息内容或按日期和时间范围进行搜索。当您的应用程序具有一定尺寸或产生大量消息时,这是必不可少的。

  如果你想看到整个例子,你就在这里。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多