没有用于获取用户输入并将该数据插入 MySQL 或任何其他数据的输入面板。 (格拉法纳 v7.0)
对于非常简约的输入数据,您可以使用 grafana 变量作为黑客。
创建示例表用于在 MySQL 中存储输入
CREATE TABLE `grafana_variable` (`variable` VARCHAR(64)) ENGINE = InnoDb;
在 Grafana 仪表板中单击设置图标:
然后点击:
添加变量:
返回仪表板,您应该在顶部看到:
创建一个新的可视化面板或在任何现有面板中添加另一个查询并添加 SQL 查询:
INSERT INTO `grafana_variable` VALUES ('${myvar}');
现在每次您在该字段中输入内容时
然后单击远离它或使用 ie tab 键,数据将被插入到 MySQL 数据库。
mysql> select * from grafana_variable;
+---------------------+
| variable |
+---------------------+
| this is just a test |
+---------------------+
1 row in set (0.08 sec)
此黑客攻击的缺点是可视化图块的左上角将有错误图标:
包含信息(当您将鼠标悬停在其上时):
找不到名为 time 或 time_sec 的列
因为可视化图块的 sql 查询是插入数据而不是从数据库中选择数据,因此没有 time 或 time_sec 数据。
Grafana 也不处理多个 MySQL 语句,因此您无法通过在语句之前或之后添加来修复该语句INSERT INTO ...
声明第二个与SELECT FROM
。也许这可以通过使用子查询或类似的东西以某种方式修补,但我没有进一步调查。
由于上述错误可能是由于与黑客攻击无关的多种原因造成的,因此最好在单独的可视化图块中使用黑客查询 - 您会记住的可视化图块(甚至给出描述性面板图块),以便您知道该错误没有什么不寻常的。
See 格拉法纳变量 https://grafana.com/docs/grafana/latest/variables/templates-and-variables/有关变量的更多信息。
还有一个有用的现有变量列表,您可以使用与myvar
我创建。参见宏部分here https://grafana.com/docs/grafana/latest/features/datasources/mysql/#annotations For eg:
$__timeFrom()
and
$__timeTo()
有显示时间范围的开始和结束。
权限和安全
整个黑客之所以有效,是因为grafana使用的MySQL用户被允许执行INSERT语句,但是如果grafana能够执行任何语句,那么请确保grafana使用的MySQL用户不允许执行例如类似的语句DROP ...
或任何其他不相关的INSERT
数据进入grafana_variable
表如示例所示。
如果您使用 MySQL 作为显示数据的数据源,grafana 用户也应该能够执行SELECT
声明。
但除此之外别无其他。
了解 MySQL 用户权限 https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html