更新\插入数据从grafana到mysql

pcww981p  于 2023-03-07  发布在  Mysql
关注(0)|答案(2)|浏览(185)

可以从grafana更新数据或插入数据到mysql。我需要使用UI在mysql中插入/更新信息。现在我已经在使用grafana,所以想知道是否有任何方法可以使用grafana更新或插入信息

c6ubokkw

c6ubokkw1#

没有输入面板接受用户输入并将数据插入MySQL或任何其他。(Grafana v7.0)对于非常简单的输入数据,您可以使用Grafana变量作为一个黑客。
创建用于在MySQL中存储输入的示例表

CREATE TABLE `grafana_variable` (`variable` VARCHAR(64)) ENGINE = InnoDb;

在Grafana Jmeter 板中,单击设置图标:

然后单击:

添加变量:

返回控制面板,您应该在顶部看到:

创建新的可视化面板或在任何现有面板中添加另一个查询并添加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语句来修复。也许这可以通过使用子查询或类似的东西来修补,但我没有进一步调查。
由于上述错误可能是由于与黑客无关的多个原因,最好在单独的可视化平铺中使用黑客查询-您将记住的一个(甚至给予描述性面板平铺),这样您就知道该错误没有什么异常。
有关变量的更多信息,请参见grafana varialbes。还有一些有用的现有变量列表,您可以使用与myvar相同的方法创建。请参见此处的MACROS部分,例如:

$__timeFrom()

以及

$__timeTo()

具有显示时间范围的开始和结束。

权限和安全性

整个黑客工程,因为MySQL用户的grafana使用被允许执行INSERT语句,但如果grafana能够执行ANY语句,然后确保MySQL用户的grafana使用是不允许的,例如,执行语句像DROP ...或任何其他不相关的INSERT数据到grafana_variable表中的例子.
如果您使用MySQL作为显示数据的数据源,则grafana用户也应该能够执行SELECT语句。
但除此之外别无他法。
Read about MySQL user premissions

hsgswve4

hsgswve42#

必须将更新隐藏为临时表

我正在使用postgres和Grafana。可能它是相当相似的。使用postgres你必须像这样隐藏更新:

WITH UPDAT_TEMP AS (UPDATE MyTable SET MY_ROW='MY_TEXT' WHERE ID=99)
SELECT 1;

如果要更新各行,则必须放置各种临时表。

Update my_table (rows) values(...)

在格拉法娜治下对我没用。
因此:

WITH UPDAT_TEMP AS (UPDATE MyTable SET MY_ROW='MY_TEXT' WHERE ID=99),
WITH UPDAT_TEMP2 AS (UPDATE MyTable SET MY_ROW2='MY_TEXT2' WHERE ID=99)
SELECT 1;

相关问题