连接到 MongoDB 数据源 - Amazon Managed Grafana

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

连接到 MongoDB 数据源

MongoDB 数据源使您能够在亚马逊托管 Grafana 中可视化来自 MongoDB 的数据。

注意

此数据源仅适用于 Grafana Enterprise。有关更多信息,请参阅 管理对企业插件的访问权限

此外,在支持版本 9 或更高版本的工作空间中,此数据源可能需要您安装相应的插件。有关更多信息,请参阅 使用插件扩展您的工作空间

使用量

查询编辑器

查询编辑器支持与 MongoDB 命令行管理程序相同的语法,但有一些限制:* 您只能运行一个命令/查询。* 仅支持读取命令:查找聚合 * 不支持大多数对象构造函数(支持 isoDat e 除外)

编辑器通过以下方式对 MongoDB 命令行管理程序语法进行了扩展:

  • 数据库选择-您可以提供数据库的名称来代替普通的 “db”:

    注意

    你仍然可以使用 “db”。它将引用您的连接字符串中的默认数据库。

    sample_mflix.movies.find()
  • 聚合排序 — 通常,排序是在聚合管道中的一个步骤中进行的,但是 MongoDB Atlas 免费套餐不允许排序。我们扩展了语法,允许使用免费套餐的用户使用。

    注意

    MongoDB 不会使用这种语法进行排序。排序是在从集合中查询结果之后进行的。

    sample_mflix.movies.aggregate({}).sort({"time": 1})
  • 使用空白编辑器,Ctrl + Space 将显示所有可用数据库的精选内容。

  • 在数据库后面输入一个圆点将显示该数据库的所有可用集合的选择。

  • 在集合后面输入一个圆点将显示可用的查询方法。

  • 在查询方法后面输入一个点将显示其他功能:排序/限制。

运行查询

Cmd + S 运行查询

时间序列

在可视化时间序列数据时,插件需要知道使用哪个字段作为时间。只需将该字段的名称别名设置为 “时间” 即可。字段数据类型必须是日期。

您可以强制将非日期数据类型强制为日期。这样做将允许使用非日期字段作为时间序列时间。以下示例说明如何使用 mongo dateFromParts DB $ 管道运算符将 int 字段 “year” 转换为预计为 “时间” 的日期。

sample_mflix.movies.aggregate([ {"$match": { "year": {"$gt" : 2000} }}, {"$group": { "_id": "$year", "count": { "$sum": 1 }}}, {"$project": { "_id": 0, "count": 1, "time": { "$dateFromParts": {"year": "$_id", "month": 2}}}} ] ).sort({"time": 1})

诊断

诊断命令

目前支持以下诊断命令:“统计信息”、“服务器状态”、“状态”、“getLog”、“”、“Connection replSetGet Status”、“buildInfo”、connPoolStats “dbStats”、“hostInfo”、“HostInfo”、“LockInfo”

示例:

admin.connectionStatus() // run the connectionStatus command admin.connectionStatus({"authInfo.authenticatedUserRoles": 1}) // run and only return the "authInfo.authenticatedUserRoles" field admin.connPoolStats({arg: "pool"}) // run the connPoolStats command and pass 1 argument admin.serverStatus({args: {repl: 0, metrics:0}}) // run the serverStatus command and pass multiple args

你可以在查询中引用仪表板的时间范围。

  • $__timeFrom — 引用仪表板开始时间的宏

  • $__timeTo — 引用仪表板结束时间的宏

$__timeTo - ``` sample_mflix.movies.find({released: {$gt: "$__timeFrom"}}).sort({year: 1})

模板变量

MongoDB 支持 “复合变量” 的概念,它允许您将一个变量用作多个变量来执行复杂的多键过滤器。

要创建复合变量,请使用命名惯例,即使用下划线将变量分开(必须以下划线开头):查询_var1_var2时,响应的格式必须为:val1-val2

示例:我想同时筛选电影名称和年份的结果。
  1. 创建一个 Query 类型的变量:_movie_year

  2. 将变量 query 设置为一个查询,该查询将返回具有一个电影年份属性的项目数组,如以下示例所示。

    // Example sample_mflix.movies.aggregate([ {"$match": {year: {"$gt": 2011}}}, {"$project": {_id: 0, movie_year: {"$concat": ["$title", " - ", {"$toString":"$year"}]}}} ])
    // [{"movie-year": "Ted - 2016"}, {"movie-year": "The Terminator - 1985"}]
  3. 现在,在查询中,您可以使用语法 “$_variable” 将 “电影” 和 “年份” 作为单独的模板变量引用。

使用临时过滤器

除了任何名称的标准 “临时过滤器” 类型变量外,还必须创建第二个辅助变量。它应该是一个 “常量” 类型,名为 “mongodb_adhoc_query”,其值与查询编辑器兼容。查询结果将用于填充可选筛选器。您可以选择将此变量隐藏在视图之外,因为它没有其他用途。

sample_mflix.movies.aggregate([ {"$group": { "_id": "$year"}}, {"$project": { "year": "$_id","_id": 0 }} ] )