在Docker上部署Elastic Stack并创建日志监控服务- Kibana篇,直到完成

背景 – 背景情景/背景资料/境况/来龙去脉

这篇文章是前一篇文章的续集!
这是第二/第四篇文章。

可以做的事情

这篇帖子计划进行全4回的系列化!如果您对其他文章也感兴趣的话,请务必去看看。

    1. 使用Docker在本地启动Elasticsearch,并尝试运行它

 

    1. 使用Docker在本地启动Kibana,并可视化数据

 

    1. 使用Filebeat显示日志文件在Kibana中

 

    在本地运行简单的Spring Web应用,生成日志并在Kibana中可视化

演示版本:先试着运行一下完成品。

Kibana是什么?

Kibana是一个免费且开放的前端应用程序,它整合管理Elastic Stack,为在Elasticsearch中索引的数据提供搜索和可视化功能。通常被称为“在Elastic Stack中可以使用的图表创建工具”。另一方面,Kibana还作为一个用于监控、管理和保护Elastic Stack(以前也被称为“ELK”)集群的用户界面,以及作为集成了各种解决方案的中心枢纽发挥作用。自2013年在Elasticsearch社区诞生以来,Kibana作为打开的窗口,持续为许多用户和组织提供作为门户的功能。

如果能够简单地将本次的目的理解为一个可以将Elasticsearch返回的数据以良好形式展示的UI工具,就可以了。

流程

那么,我们立即在Docker上启动Kibana。

前提 – Only one option needed

先决条件

    前回の記事(Elastic StackをDocker上で実行してログモニタリングサービスを作成するまで – Elasticsearch編)を実行済み

1. 文件准备
文件结构与上次相同。
(由于我们将使用默认设置来配置Kibana,所以不需要配置文件。)

    • /{projectディレクトリ}/

elasticsearch/

elasticsearch.yml

docker-compose.yml

2. Docker的准备
将docker-compose.yml文件按照以下方式进行追加。

version: '3.2'
services:
  elasticsearch:
    networks:
      - elastic
    ...

  kibana:
    image: docker.elastic.co/kibana/kibana:7.13.0
    hostname: kibana101
    container_name: cont-kibana
    ports:
      - 5601:5601
    mem_limit: 1g
    networks:
      - elastic
    depends_on:
      - elasticsearch

...

networks:
  elastic:
    driver: bridge

这次我会简单地解释要点。
首先,为了在多个容器之间进行数据交换,需要进行通信,因此需要进行网络配置。
通过根networks的描述来定义整体网络,并在每个服务(elasticserch、kibana)的networks中指定要使用的网络。
关于网络方面,我个人也不是很了解,但这篇文章对你可能会有所帮助:(https://qiita.com/TsutomuNakamura/items/ed046ee21caca4a2ffd9)

而且,通过设置depends_on,可以等待elasticsearch启动并启动kibana。

请在执行以下命令后稍等一段时间,然后尝试访问 Kibana(http://localhost:5601)来确认是否正在运行。(启动需要2、3分钟)

docker-compose up -d

如果一切順利,我相信將會顯示主畫面。

5. 不妨实际运行一下
接下来,我们可以尝试给数据添加一些内容并进行一些操作。
可以直接使用REST API将数据保存到Elasticsearch,也可以使用Kibana来与Elasticsearch进行数据交互并使用自定义命令。本次我们将参考官方教程,使用后者的方法来实际运行一下。
首先,从左上方的标签中选择Management > Dev Tools。

kibana screen.png

然后打开Dev Tools,首先复制并执行以下命令,以检查是否成功连接到Elasticsearch。

GET /

如果操作成功,应该会显示以下类似的响应。

{
  "name" : "logging-node",
  "cluster_name" : "logging-cluster",
  "cluster_uuid" : "CP6gaxMHSKWpvvl63jM1ug",
  "version" : {
    "number" : "7.13.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "5ca8591c6fcdb1260ce95b08a8e023559635c6f3",
    "build_date" : "2021-05-19T22:22:26.081971330Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

初始时可能会显示一条警告消息,提示没有进行安全设置,但在本地运行时没有问题。
(在远程、生产模式下运行时,请务必进行设置:https://www.elastic.co/guide/en/elasticsearch/reference/7.13/security-minimal-setup.html)

接下来,我们将在没有数据的情况下搜索Elasticsearch内部。以下命令是在Elasticsearch内部对名为“logs-my_app-default”的索引中存在的数据进行搜索的请求。

GET logs-my_app-default/_search
{
  "query": {
    "match_all": { }
  },
  "sort": [
    {
      "@timestamp": "desc"
    }
  ]
}

当然的是,如果未注册名为logs-my_app-default的索引,那么会返回一个指示数据(索引)未找到的错误消息(index_not_found_exception)。
那么我们立即尝试添加数据。
以下请求是保存名为logs-my_app-default的索引中的事件”192.0.2.42 – – [06/May/2099:16:21:15 +0000] \”GET /images/bg.jpg HTTP/1.0\” 200 24736″的请求。由于该索引当前不存在,会自动创建。

POST logs-my_app-default/_doc
{
  "@timestamp": "2099-05-06T16:21:15.000Z",
  "event": {
    "original": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"
  }
}

我们再试一次刚才出错的搜索请求。
然后,与刚才不同,我们会收到以下的正确数据。

{
  "took" : 18,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : ".ds-logs-my_app-default-2021.06.26-000001",
        "_type" : "_doc",
        "_id" : "lRHXR3oBWlQF26Pok4hK",
        "_score" : null,
        "_source" : {
          "@timestamp" : "2099-05-06T16:21:15.000Z",
          "event" : {
            "original" : """192.0.2.42 - - [06/May/2099:16:21:15 +0000] "GET /images/bg.jpg HTTP/1.0" 200 24736"""
          }
        },
        "sort" : [
          4081767675000
        ]
      }
    ]
  }
}

辛苦了,我认为现在可以确认Kibana已经正常运行,并且与Elasticsearch也成功建立了连接。
最后,执行以下命令来停止容器。

 docker-compose down -v --rmi local

接下来,让我们来配置filebeat吧!
在Docker上运行Elastic Stack并创建日志监控服务- filebeat篇。

请看 x

    • Elasticsearch security: https://www.elastic.co/guide/en/elasticsearch/reference/7.13/security-minimal-setup.html

Kibana get started: https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html

kibana index: https://docs.uipath.com/installation-and-upgrade/lang-ja/docs/creating-an-index-pattern-to-connect-to-elasticsearch

bannerAds