Grafana日志插件不显示日志面板

2024-01-09

我正在尝试创建一个支持日志面板的 Grafana 插件。我正在关注来自他们网站的路线 https://grafana.com/docs/grafana/latest/developers/plugins/build-a-logs-data-source-plugin/.

不幸的是它似乎不起作用。我已经添加"logs": true to plugin.json并返回一个类型字段time called "time",类型字段string called "level",和一个类型字段string called "content",按照他们的示例进行操作。我返回的内容与示例所示的内容基本相同。

export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
  constructor(instanceSettings: DataSourceInstanceSettings<MyDataSourceOptions>) {
    super(instanceSettings);
  }

  async query(options: DataQueryRequest<MyQuery>): Promise<DataQueryResponse> {
    // Return a constant for each query.
    const data = options.targets.map(target => {
      const query = defaults(target, defaultQuery);
      const frame = new MutableDataFrame({
        refId: query.refId,
        fields: [
          { name: 'time', type: FieldType.time },
          { name: 'level', type: FieldType.string },
          { name: 'content', type: FieldType.string },
        ],
      });
      frame.add({ time: 1615422190000, level: 'warn', content: 'hi' });
      frame.add({ time: 1615422191000, level: 'info', content: 'bye' });
      return frame;
    });

    return { data };
  }

  async testDatasource() {
    // Implement a health check for your data source.
    return {
      status: 'success',
      message: 'Success',
    };
  }
}

然而,在 Grafana(运行最新的稳定版本 7.4.3)中,当我加载插件时,我无法在 Explore 中获取日志面板,并且在仪表板查询界面中,如果我选择日志面板,它会显示数据,但不正确:

我还需要做些什么才能使日志面板正常工作吗?说明声称我只需要返回一个类型的字段time和一个类型字段string with "logs": true set in plugin.json,但这不起作用。

到目前为止我能找到的唯一真正的提示是关于 MSSQL 插件的另一个 SO 问题 https://stackoverflow.com/questions/62714476/grafana-logs-panel-mssql,这表明也许该插件中有关此功能的一些信息 https://github.com/grafana/grafana/blob/master/pkg/tsdb/sqleng/sql_engine.go#L247将显示数据需要如何格式化,但我不清楚阅读源代码可能是什么以及它与我现在所做的有何不同。

预计到达时间:看起来像这个问题 https://stackoverflow.com/questions/63496544/what-do-i-return-from-the-query-function-of-datasource-js-for-grafana-log-panel问了类似的问题,但答案并没有明确问题是什么,因为在他们的情况下,他们似乎完全返回了错误类型的结果。


我找到了部分答案。需要在其中包含以下内容MutableDataFrame:

meta: {
  preferredVisualisationType: 'logs',
},

让它在探索中“激活”。然而,我不认为这就是完整的答案,因为如问题中所述,仪表板面板中的视图仍然被破坏,而在“浏览”视图中它有点工作,但默认情况下不会拉出任何字段来显示;必须通过打开日志行并单击眼睛图标以使字段可见来手动打开它们。

ETA:好的,关于视图为何显示损坏的其余答案是因为日志可视化如何决定显示哪些数据。它是在文档中 https://grafana.com/docs/grafana/latest/developers/plugins/build-a-logs-data-source-plugin/#extract-detected-fields-from-your-logs但也许没有像应有的那样清楚地指出来。它说:

如果数据帧具有多个文本字段,则 Grafana 会假定数据帧中的第一个字段是实际的日志行。任何后续文本字段都被视为检测到的字段。

因此数据的格式需要采用某种方式,特别是第一个字符串字段需要是要显示的“消息”。它看起来就像上面的样子,因为我把level before content。反转这些使其按预期工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grafana日志插件不显示日志面板 的相关文章

  • 如何使用 log4j2.xml 配置 hibernate 日志记录?

    我最近切换到 Apache log4j2 但仍然找不到使用 log4j2 xml 配置 hibernate 日志记录的方法 因为我找不到解决此问题的方法 所以我仍然显式使用 log4j properties 文件进行休眠 这不是最好的解决方
  • Elixir 用于列表、元组等的记录器

    我可以使用 Elixir 记录器来检查字符串 gt str string gt Logger info Here is a str info Here is a string 但是当我记录一个列表时 它看起来不太漂亮 gt list 1 2
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • 如何让 STDOUT 和 STDERR 都转到终端和日志文件?

    我有一个脚本 将由非技术用户交互式运行 该脚本将状态更新写入 STDOUT 以便用户可以确定脚本运行正常 我希望将Stdout和STDERR重定向到终端 以便用户可以看到脚本正在工作 并查看是否存在问题 我还希望将两个流都重定向到日志文件
  • 如何使用 re2 正则表达式否定字符串模式?

    我正在使用谷歌re2 https github com google re2 wiki Syntax用于查询目的的正则表达式普罗米修斯 https prometheus io docs prometheus latest querying
  • 在哪里可以找到 AWS Amplify Logger 日志

    我目前正在开发一个使用 AWS Amplify 创建的 Web 应用程序 我必须在其中实现日志记录 基于AWS 放大文档 https docs amplify aws lib utilities logger q platform js有一
  • 关闭后如果日志文件为空,则删除日志文件

    我有一个库函数 可以启动通用后台进程并记录它 def LaunchAndLog cmd cmd args cmd split Split arguments into array logfile cmd args 0 log with op
  • 使用 Azure AD OAuth 进行 Grafana 角色分配

    我正在尝试使用 Azure AD OAuth 在 Grafana 中为某些用户组分配管理员角色 我可以使用此文档使用 Azure AD 凭据成功登录 使用 Azure Active Directory 设置 OAuth2 https gra
  • 在 git 中记录前 10 个

    两个问题 如何从头到尾显示 git 中的前 10 个提交 无分行 如何指定提交索引并记录它 显示第二个或第三个 我知道 git 使用父级来链接提交 很容易从头到尾记录提交 喜欢 git log HEAD 10 但我需要从头到尾查询 可以吗
  • 如何使用 monolog ElasticSearchHandler 登录 Laravel 应用程序

    Monolog 包含弹性搜索处理程序和格式化程序 但它作为自定义通道对 Laravel 的实现并不像 Laravel 文档网站上描述的那么简单 以下是如何执行此操作的简要分步说明 为您的弹性搜索日志记录创建一个配置文件 config ela
  • 获取 Pod 处于挂起状态的平均时间

    我正在尝试使用 prometheus 计算 pod 在 grafana 中处于挂起状态的平均时间 我可以使用此查询生成一个图表 以获取一段时间内处于挂起状态的 Pod 数量 sum kube pod status phase phase P
  • 如何重置grafana的admin密码(由helm安装)

    我的密码曾经有效 但我不记得是否更改过 但是 我无法重置它 我尝试过但没有成功 kubectl get secret namespace default grafana o jsonpath data admin password base
  • NodeJS 中的缩进多行日志记录

    我要打印JSON stringify d 反对控制台 将上下文作为 Mocha 测试套件输出的一部分 当测试缩进时 我希望对象日志行向右缩进足够远 例如 3 4 个制表符空格 以便它们可以识别地位于右侧describe group 我怎样才
  • 打印到 STDOUT 和日志文件,同时删除 ANSI 颜色代码

    我有以下函数来为屏幕消息着色 def error string return 033 31 1m string 033 0m def standout string return 033 34 1m string 033 0m 我按如下方式
  • 如何使用 Fluent 为 Elasticsearch 添加时间戳和密钥

    我已经配置了 fluidd 和 elasticsearch 它们都工作正常 我正在跟踪一个文件 然后读取其数据并将其发布到elasticsearch 下面是json数据 time 2018 05 14T11 37 30 339593 Dat
  • /proc/kmsg 和 dmsg 有什么区别?

    我们通常这样做cat proc kmsg or dmesg从用户空间查看内核日志 我明白了dmesg是一个循环缓冲区 它从kmsg 但是kmsg也不是循环缓冲区 它们之间有什么区别和联系呢 宽松地说 dmesg 是一个转储 proc kms
  • 如何在同一配置文件中混合日志记录处理程序(文件和定时)和压缩日志?

    我需要准备一个 json 格式的日志配置文件 该文件按时间 大小旋转它 并为我的应用程序中的所有模块旋转压缩文件 我现在陷入困境 我想使用单个 json 配置文件来完成此操作 这是我当前的文件 但是此配置仅按时间轮换 version 1 d
  • Net Core ILogger 值不能为空

    我收到记录器值不能为空 我正在尝试解决这个问题 也许是通过依赖注入来解决的 在单元测试和程序中的其他地方都会收到错误 我是否正确进行依赖注入 Expected
  • 使用 Bot Framework 记录 Node.js-Azure 应用程序

    我有一个托管在 Azure 上的节点应用程序 Bot Framework 机器人 记录调试信息的最佳方法是什么 例如 据我所知 使用console log 没有帮助 因为 Azure 中没有可供查看的控制台 我也不想打电话session s
  • 将屏幕(程序)输出保存到文件

    我需要保存整个输出Screen https en wikipedia org wiki GNU Screen到一个文件以便稍后检查所有内容 原因是我通过串行端口转储闪存 使用 Screen 与其交互 我想将其保存到文件中以检查内存结构 我试

随机推荐