我正在尝试创建一个支持日志面板的 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问了类似的问题,但答案并没有明确问题是什么,因为在他们的情况下,他们似乎完全返回了错误类型的结果。