在Docker上部署Elastic Stack并创建日志监控服务- Kibana篇,直到完成
背景 – 背景情景/背景资料/境况/来龙去脉
这篇文章是前一篇文章的续集!
这是第二/第四篇文章。
可以做的事情
这篇帖子计划进行全4回的系列化!如果您对其他文章也感兴趣的话,请务必去看看。
-
- 使用Docker在本地启动Elasticsearch,并尝试运行它
-
- 使用Docker在本地启动Kibana,并可视化数据
-
- 使用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。

然后打开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