【问题标题】:Grafana logs plugin doesn't show logs panelGrafana 日志插件不显示日志面板
【发布时间】:2021-06-09 00:06:18
【问题描述】:

我正在尝试创建一个支持日志面板的 Grafana 插件。我正在关注directions from their website

不幸的是,它似乎不起作用。我已将"logs": true 添加到plugin.json 并返回一个名为"time"time 类型字段,一个名为string 的字段"level",以及一个名为string 类型的字段"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)中,当我加载我的插件时,如果我选择日志面板,我无法在探索和仪表板查询界面中获取日志面板,它会显示数据但不正确:

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

到目前为止,我能找到的唯一真正的提示是this other SO question about the MSSQL plugin,这表明something about this function in that plugin 可能会显示数据需要如何格式化,但我不清楚阅读源代码可能是什么以及它是怎样的和我现在做的不一样。

ETA:看起来this question 提出了类似的问题,但答案并没有说明问题是什么,因为在他们的情况下,他们似乎完全返回了错误类型的结果。

【问题讨论】:

    标签: logging grafana grafana-plugin


    【解决方案1】:

    我想出了部分答案。必须在MutableDataFrame 中包含以下内容:

    meta: {
      preferredVisualisationType: 'logs',
    },
    

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

    ETA:好的,关于视图为何出现损坏的其余答案是因为日志可视化如何决定要显示哪些数据。它是in the docs,但可能没有像它应该的那样清楚地被叫出来。它说:

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

    所以数据的格式需要一定的方式,特别是第一个字符串字段需要是“消息”来显示。它看起来像上面那样,因为我把level 放在content 之前。将其反转即可使其按预期工作。

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多