Kibana:使用 Maps 来显示分布式的团队

news2024/11/17 9:52:26

在我之前的文章 “Kibana:如何在 Maps 应用中显示图片提示” 里,我展示了如何在 Kibana 中使用图片来展示一个图片的提示。这个在很多情况下是非常有用的,比如在疫情发生期间,我可以通过点击地图上的点来查看发生疫情人员的详细情况。我们甚至可以显示当事人的照片信息等。

在像 Elastic 这样的分布式公司工作很棒,但有时很难掌握。 回答一些看似简单的问题可能会出奇地复杂,例如:

  • 在地图上显示我们的团队,这样我就可以解释我们的范围和结构。
  • 让我找到某个地区的任何人,这样我们就知道谁是“本地人”。
  • 在附近找一个有特定技能的人。
  • 显示团队随时间的增长。
  • 记录区域覆盖范围,以便任何人都可以查找。

幸运的是,Kibana 可以提供帮助,这篇文章的目标是创建一个这样的地图:

Elasticsearch 中的映射和数据

在你进入可视化之前,你需要创建正确的映射(或 schema — 这与地图还没有直接关系)。 在 Kibana 的控制台中运行以下请求以创建映射:

PUT team
{
  "mappings": {
    "dynamic": "strict",
    "properties": {
      "name": {
        "type": "keyword"
      },
      "team": {
        "type": "keyword"
      },
      "role": {
        "type": "keyword"
      },
      "start_date": {
        "type": "date"
      },
      "country_code": {
        "type": "keyword"
      },
      "city": {
        "type": "keyword"
      },
      "location": {
        "type": "geo_point"
      },
      "technology": {
        "type": "keyword"
      },
      "region": {
        "type": "keyword"
      },
      "picture": {
        "type": "keyword"
      }
    }
  }
}

映射中最重要的是:

  • geo_point是地图上使用的最重要的数据类型。
  • date 字段对于显示随时间的发展是必需的。

为简单起见,使用的示例数据集仅包括欧洲的社区团队:

PUT team/_doc/david
{
  "name": "David Pilato",
  "team": "community",
  "role": "Developer 🥑",
  "start_date": "2013-01-10",
  "country_code": "fr",
  "city": "Cergy",
  "location": {
    "lat": 49.05,
    "lon": 2.04
  },
  "technology": ["java", "elasticsearch", "search"],
  "picture": "https://avatars.githubusercontent.com/u/274222"
}

PUT team/_doc/philipp
{
  "name": "Philipp Krenn",
  "team": "community",
  "role": "Developer 🥑 | EMEA Lead",
  "start_date": "2016-04-01",
  "country_code": "at",
  "city": "Vienna",
  "location": {
    "lat": 48.21,
    "lon": 16.37
  },
  "technology": ["java", "automation", "observability"],
  "picture": "https://avatars.githubusercontent.com/u/432211"
}

PUT team/_doc/adrienne
{
  "name": "Adrienne de Vries",
  "team": "community",
  "role": "Community Programs",
  "start_date": "2019-12-02",
  "country_code": "nl",
  "city": "Rotterdam",
  "location": {
    "lat": 51.92,
    "lon": 4.48
  },
  "region": ["FR", "ES", "PT", "IT", "GR", "TR", "CY", "NL", "BE", "DK", "LU", "NO", "SE", "FI", "IS", "EE", "LV", "LT", "MA", "TN", "DZ"],
  "picture": "https://ca.slack-edge.com/T0CUZ52US-UQQ55JABU-56457843fc81-512"
}

PUT team/_doc/naoise
{
  "name": "Naoise Rush",
  "team": "community",
  "role": "Community Programs",
  "start_date": "2022-02-28",
  "country_code": "gb",
  "city": "Belfast",
  "location": {
    "lat": 54.60,
    "lon": -5.93
  },
  "region": ["GB", "IE", "DE", "AT", "CH", "PL", "CZ", "SK", "SI", "HU", "RO", "BG", "MD", "UA", "HR", "RS", "BA", "AL", "XK", "ME", "MK", "IL", "SA", "EG", "AE", "JO", "LB", "KW", "QA", "OM", "BH"],
  "picture": "https://ca.slack-edge.com/T0CUZ52US-U033ZF1HPM3-3f8511dbc26f-512"
}

PUT team/_doc/carly
{
  "name": "Carly Richmond",
  "team": "community",
  "role": "Developer 🥑",
  "start_date": "2022-04-25",
  "country_code": "uk",
  "city": "London",
  "location": {
    "lat": 51.55,
    "lon": 0.16
  },
  "technology": ["javascript", "frontend", "observability"],
  "picture": "https://avatars.githubusercontent.com/u/74931905"
}

如上所示,我们有列出来开始工作的日期(start_date),所在的城市(city),以及 region 信息。这个 region 是指负责的地区。

我们接下来在 Kibana 中为 team 创建 data view:

 

 

 

 

这样我们就创建了一个叫做 team 的 data view。我们点击 picture 来进行修该设置:

 

如果我们点击上面的 picture 链接,它将会显示:

 

这样我们就为 picture 字段修改为 Url 格式。

设置完成后,你可以在 Discover 中查看基础文档并将时间范围更改为 10 年(默认为 15 分钟): 

添加第一个地图

Kibana 中的地图有很多功能,但示例会使其保持简单。 添加一个文档(Documents)类型的层: 

 

 

 

 

 

 

这就是我们让团队出现在地图上所需要的。点击上面的 Save & close 按钮。 如果你没有看到任何内容,请再次检查你是否选择了过去 10 年,而不仅仅是 15 分钟。 将鼠标悬停在其中一个上会显示他们的个人资料,你可以根据颜色判断他们的角色: 

我从图上面可以看到先前输入的五个文档。我们点击其中的一个文档:

我们可以看到该文档的所有信息。

Mapping time

基于每个团队成员的 start_date 字段,您可以显示它是如何随着时间的推移发展的,甚至可以逐年自动播放: 

这个对于我们筛查一个时间段的文档非常有用。比如,在疫情防控期间,我们筛查出来在一个时间段的文档变化。

在地图上进行搜索:

搜索是我们工作的核心。 因此,如果你想了解我们团队中的哪些人可以帮助你解决所有 “前端(frontend)” 问题,你也可以在地图上找到:

Mapping regions 

我们团队也有拥有某些区域的概念。 是时候向地图添加另一个图层了——这次是 Choropleth。 Elasticsearch 文档的 region 数组映射到国家/地区的 ISO 3166-1 alpha-2 代码。 我们可以将其限制为 “Community Programs 的角色,因为只有他们拥有区域:

 

 

 

 

 

 

从上面的图中我们可以看出来,有两个员工做 Community Programs 的。他们各自分管的区域显示图。 

帮助圣诞老人找到团队

要添加更多与圣诞节相关的内容,让我们帮助圣诞老人找到团队。 此信息应放入一个新索引中,并在一个文档中对 source 和 destination 地理点进行简单映射:

PUT santa
{
  "mappings": {
    "dynamic": "strict",
    "properties": {
      "@timestamp": {
        "type": "date"
      },
      "source": {
        "type": "geo_point"
      },
      "destination": {
        "type": "geo_point"
      }
    }
  }
}

 这些是实际旅行路线的文件: 

 

POST santa/_doc
{
  "@timestamp": "2022-12-24T19:30Z",
  "source": {
    "lat": 48.21,
    "lon": 100
  },
  "destination": {
    "lat": 48.21,
    "lon": 16.37
  }
}

POST santa/_doc
{
  "@timestamp": "2022-12-24T19:40Z",
  "source": {
    "lat": 48.21,
    "lon": 16.37
  },
  "destination": {
    "lat": 49.05,
    "lon": 2.04
  }
}

POST santa/_doc
{
  "@timestamp": "2022-12-24T19:50Z",
  "source": {
    "lat": 49.05,
    "lon": 2.04
  },
  "destination": {
    "lat": 51.92,
    "lon": 4.48
  }
}

POST santa/_doc
{
  "@timestamp": "2022-12-24T20:00Z",
  "source": {
    "lat": 51.92,
    "lon": 4.48
  },
  "destination": {
    "lat": 51.55,
    "lon": 0.16
  }
}

POST santa/_doc
{
  "@timestamp": "2022-12-24T20:10Z",
  "source": {
    "lat": 51.55,
    "lon": 0.16
  },
  "destination": {
    "lat": 54.60,
    "lon": -5.93
  }
}

POST santa/_doc
{
  "@timestamp": "2022-12-24T20:20Z",
  "source": {
    "lat": 54.60,
    "lon": -5.93
  },
  "destination": {
    "lat": 54.60,
    "lon": -20.00
  }
}

在上面,我们写入了6个文档。它形成了圣诞老人的行走轨迹。我们按照介绍的方法为这个新的索引 santa 创建一个 data view。

我们接下来再添加一层,这次使用点对点。 在其中映射 source 和 destination:

 

 

 

 

 

总结 

我们希望这能给您一些关于如何将分布式团队放在地图上的想法。 Kibana 仍然可以做更多的事情 — Maps  的文档是一个很好的起点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADI Blackfin DSP处理器-BF533的开发详解40:图像处理专题-GrayStretch 图像的灰度拉伸(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像的灰度拉伸,代码运行时,会通过文件系统打开工程文件根目下" …/ImageView"路径中的 t…

回归预测 | MATLAB实现WOA-GRU鲸鱼算法优化门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现WOA-GRU鲸鱼算法优化门控循环单元多输入单输出回归预测 目录回归预测 | MATLAB实现WOA-GRU鲸鱼算法优化门控循环单元多输入单输出回归预测写在前面效果一览基本描述模型描述程序设计参考资料写在前面 程序获取 | 机器学习/深度学习程序获取方式&#xff0…

Django学习第一天记录

1.安装Django(Windows环境) 首先需要确定系统中存在python环境,当前,本机的python环境为python 3.6.6,可以使用命令python --version进行查看。 在python环境成功搭建的基础上,我们使用命令pip install django即可进行django环境…

虚拟现实解决方案,实现 VR 数智机房

如今,虚拟现实技术作为连接虚拟世界和现实世界的桥梁,正加速各领域应用形成新场景、新模式、新业态。 图扑软件基于自研可视化引擎 HT for Web 搭建的 VR 数据中心机房,是将数据中心的运营搬到 VR 虚拟场景。以数据中心实际场景为基础&#…

Chaos Vantage这款渲染器有多强,一起来了解一下

Chaos Vantage 是最老牌渲染器之一的VRay开发公司Chaos新开发的一款实时GPU渲染引擎,以前的名字是Project Lavina,首次在Siggraph 2018上作为技术预览展示,官方定位是“在完全光线追踪环境中探索大型3D场景的工具”。 与其他实时渲染解决方案…

头戴式耳机适不适合跑步、分享几款最适合跑步的耳机

激情的运动和美妙的音乐毫无疑问是绝妙的搭配,几乎每天都驰骋在田径场上的我,一直非常关注运动耳机,也有不少朋友找我推荐运动耳机。运动耳机的选择有很多,但是极度靠谱的产品却是真的很少!如果你也不希望你在选购运动…

双十二大家都在买哪些书?这份书单请码住

双十二来啦,这一天也在提醒着我们这一年就要结束了。虽然距离上次买买买才过去不久,但是想读的书却在时刻增加。 这个双十二,依旧给大家推荐好书,根据近期搜索人气、销量排行、读者口碑整理了“计算机新书”“2022最受欢迎图书”“…

C#+SqlServer超市管理系统的设计与实现

目 录 1引言 1 1.1课题研究内容 1 2系统需求分析 1 2.1系统模块构建 1 2.1.1系统整体结构功能模块 1 2.1.2前、后台功能模块 2 3 数据库设计 3 3.1 E-R图和关系图 3 3.2数据库表设计 4 4系统实现 7 4.1 前台模块 7 4.2 后台模块 14 5 结果测试 24 5.1前台模块的测试 24 5.2后台…

教你制作GIF表情包,逐帧动画制作

我们经常看到很多著名的电影场景都被制作成GIF动画,非常有趣。下面2分钟教你制作GIF表情包,方法很简单,一起来学习吧! 方法一:手机制作GIF 我们来看看如何在手机上制作GIF,您需要使用刷新视频编辑工具。打开…

南方农机杂志南方农机杂志社南方农机编辑部2022年第24期目录

南方论坛《南方农机》投稿:cnqikantg126.com 基于物联网的食用菌日光温室终端控制研究 崔玉萍;席雪琴; 8-1016 基于颜色统计的水果采摘机器人水果识别的研究 夏康利;何强; 11-16 基于MATLAB/GUI双作用椭圆轨道滚柱泵人机界面设计 陈舰; 17-20 电动自…

nodejs 引用 canvas报错:without installing the canvas npm package

Error: Not implemented:HTMLCanvasElement. prototype.getContext(without installing the canvas npm package) 试了node 14.19.1 和 node 16.15.0 两个版本的都不行,即使是npm install canvas 成功了,运行也会报错,困扰了好久,…

【Python百日进阶-数据分析】Day125 - plotly.express.scatter():散点图

文章目录一、散点图语法二、参数三、返回类型四、示例4.1 array_like 对象4.2 DataFrame 列4.3 使用列名设置大小和颜色4.4 颜色可以是连续的,也可以是离散的/分类的。4.5 所述symbol参数可以被映射到的列,可以使用多种符号。4.6 Dash 中的散点图4.7 散点…

零基础转行学python有必要去培训机构吗

Python语言,以其简单易学成为不少人学习编程语言的新方向。而市面上也出来了各种各样的python培训机构,不少人就有疑惑了,既然python语言简单易学,那么还有必要去培训机构系统学习吗?知了堂认为,如果你是想…

人工智能:声纹识别技术介绍

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

使用gitee将本地资源上传

在编程时,写好本地文件以后我们可以使用gitee将写的东西上传到gitee官网上分享或者让我们自己可以随时查看,首先,我们需要下载git这个软件,在这里推荐使用电脑管家里面的软件管理下载 ,软件图标如下: 1.生成…

自定义RBAC(4)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~ 前面把RBAC的权限系统设计过程都讲清楚了,现在就来实现它。大致分这么几个步骤: 1、先定义出完整的权限系统表结构; 2、实现…

Sqlite 数据库操作(二)—— Sqlite常用API 及其使用方法

要使用sqlite数据库的API&#xff0c;需要满足两个条件&#xff1a; 安装sqlite3函数库 —— 终端输入 sudo apt-get install libsqlite3-dev 在程序中引入头文件 sqlite3.h —— #include <sqlite3.h>gcc编译时链接 sqlite3动态库 …

atompark:外贸工具-Atomic 6合一系列产品-Crack

Atomic Studio 邮件发件人Atomic Mail Sender 我们最畅销的电子邮件活动工具 邮件发件人 群发邮件发件人 使用我们内置的 SMTP 或您自己的&#xff01; 按姓名称呼收件人 移除退订者 电子邮件猎手 发现网站上的电子邮件地址 按关键字搜索 执行高速和准确的搜索 邮件验证器 …

Synchronized原理

Synchronized原理一、基本特点二、加锁工作过程 (锁升级/锁膨胀)2.1 偏向锁2.2 轻量级锁2.3 重量级锁三、锁消除四、锁粗化五、总结一、基本特点 结合锁策略&#xff0c;我们就可以总结出 Synchronized 具有以下特性(只考虑 JDK 1.8)&#xff1a; 开始时是乐观锁, 如果锁冲突…

数据结构.数组

数据结构.数组1.数组的概念和特点2.数组的定义和初始化3.数组的遍历4.数组的基本操作&#xff08;不多说 注解很详细&#xff09;5.操作的时间复杂度1.数组的概念和特点 数组就是一种容器&#xff08;装数据的&#xff09;&#xff0c;用来存储相同类型的数据值。 数组的特点…