
可视化我们与 Grafana 在电话中谈论的内容
井, 在这篇文章中,我们将看到一些一如既往的不同之处,我们可以简单地将其添加到我们的 Grafana 安装中, 这无非是利用我们电话的使用数据. 我已经使用它很长时间了,如果您感兴趣,我想分享它, 我很好奇我在手机上聊了多少, 与谁, 他们叫我,我叫什么, 按计划查看, 人… 含牛轧糖!
我们将通过安装在手机上的应用程序来完成, 就像我们将保存在 Google 电子表格电子表格中的神话般的 IFTTT 一样,我们将错过的电话记录, 我们接听的电话和拨打的电话, 联系人的姓名将存储在相同的工作表中, 您的电话号码和每次通话的时长, 加时. 现在有了新版本的 Grafana (这 7) 我们可以直接查阅 Google 电子表格, 但这次我将向您展示另一种方法, 因为我已经使用它很长时间了,但我还没有开发🙂它。到目前为止我所做的是, 在 Linux 计算机上将计划任务与 CRON 结合使用 (可能是 Grafana 本人), 我下载电子表格,然后将它们转储到 MySQL 数据库中. 我们将使用 Grafana 可视化的 DB, 能够根据自己的喜好设计仪表板!
让我们从已经说过的内容开始, 在我们的手机上,我们将安装 IFTTT, 我们将添加三个自动化:
- 自动将您收到的 Android 手机来电记录到 Google 电子表格中
- 自动将您在 Android 手机上拨打的电话记录到 Google 电子表格中
- 通话记录, 未接来电
我们将配置它们中的每一个,以便它将所有这些记录保存在不同的电子表格中. 请记住在您的手机上,以指示此应用程序可以继续在后台运行并防止移动电池限制它, 因此,它将始终实时运行和存储我们的数据.
井, 我们从到目前为止一直在使用的脚本开始, 首先,我们需要这个 Python 脚本,它允许我们从 Google Drive 下载文件 (DescargaFicheroDesdeGoogleDrive.py) 然后,使用 bash 创建一个脚本本身就足够了,它的作用是, (我) 刷新我们将存储调用日志的 MySQL 表, (第二) 每个 SpreadSheet 都会下载并存储在本地 CSV 中, 正如你所看到的,它会改变他们或消除剩下的字符:
BajaFicheroGoogleDriveYmeteEnCSV.sh
#!/bin/bash mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "截断表 llamadas_realizadas" mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "截断表 llamadas_recibidas" mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "截断表 llamadas_perdidas" python DescargaFicheroDesdeGoogleDrive.py llamadas_realizadas.ini awk '{GSUB 系列(/,/,"",$2)}1' llamadas_realizadas.csv &放大 器;燃气轮机; llamadas_realizadas.csv1 sed 's/"//g' llamadas_realizadas.csv1 &放大 器;燃气轮机; llamadas_realizadas.csv mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "LOAD DATA LOCAL INFILE 'llamadas_realizadas.csv' INTO TABLE llamadas_realizadas FIELDS TERMINATED BY ','" python DescargaFicheroDesdeGoogleDrive.py llamadas_recibidas.ini awk '{GSUB 系列(/,/,"",$2)}1' llamadas_recibidas.csv &放大 器;燃气轮机; llamadas_recibidas.csv1 sed 's/"//g' llamadas_recibidas.csv1 &放大 器;燃气轮机; llamadas_recibidas.csv mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD -e "LOAD DATA LOCAL INFILE 'llamadas_recibidas.csv' INTO TABLE llamadas_recibidas FIELDS TERMINATED BY ','" python DescargaFicheroDesdeGoogleDrive.py llamadas_perdidas.ini sed 's/Missed,//g' llamadas_perdidas.csv &放大 器;燃气轮机; llamadas_perdidas.csv1 sed 's/,,/,/g' llamadas_perdidas.csv1 &放大 器;燃气轮机; llamadas_perdidas.csv2 awk '{GSUB 系列(/,/,"",$2)}1' llamadas_perdidas.csv2 &放大 器;燃气轮机; llamadas_perdidas.csv3 sed 's/"//g' llamadas_perdidas.csv3 &放大 器;燃气轮机; llamadas_perdidas.csv mysql -h SERVIDOR_MYSQL -uUSERNAME -pPASSWORD NOMBRE_BD "LOAD DATA LOCAL INFILE 'llamadas_perdidas.csv' INTO TABLE llamadas_perdidas FIELDS TERMINATED BY ','"
如您所见,Python 脚本要求我们为每个要下载的 SpreadSheet 提供一个 ini 文件, 一个用于拨打的电话, 一个是给那些被接受的人,另一个是给那些失去的人. 这将是每个文件的格式, 示例 “llamadas_realizadas.ini”
[fileDownloadFromDrive] clientsecretkeypath = /PATH/api_gugel.json 电子表格 ID = 文件名 = llamadas_realizadas.csv 文件路径 = /PATH/ mimetype = 文本/csv
正如我们所看到的, 一方面,我们需要 Google Sheet ID, 这部分非常简单, 您所要做的就是使用浏览器打开工作表,URL 将显示 ID, 例: “https://docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXX/edit#gid=0”. 稍微费力的部分是通过 API 获取带有登录凭据的文件, 什么是 JSON 文件. 因为这是一个漫长的过程,你们中的一些人已经知道了, 更重要的是,我们在其他一些帖子中看到了它, 我认为最好将 Google 官方文档留在这一部分, 他将解释说我们必须创建一个项目并通过 OAuth 授予访问权限 2.0, 退房: https://developers.google.com/sheets/api/guides/authorizing. 获得每个 Sheet 的 ID 和带有登录凭据的 JSON 后,您可以尝试上面的脚本, 验证后,只需将其放入 cron 中并以我们感兴趣的周期运行它.
正如您将看到的,它存储在 3 MySQL 中的不同表, 我给你留下一个创建示例表的代码, 是 3 相等的牌桌, 不同之处在于llamadas_perdidas没有 Duration 列, 正如我们所看到的, 存储调用的时间, 电话号码, 我们在手机通讯录中的存储方式的名称和通话时长:
创建表 'llamadas_realizadas' ( 'when' 到 CHAT(50) NULL COLLATE 'utf8mb4_general_ci', 'phone' 字符(50) NULL COLLATE 'utf8mb4_general_ci', 'name' 字符(50) NULL COLLATE 'utf8mb4_general_ci', 'duration' 浮点型 NULL ) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB;
井, 好吧,准备好了, 我们已经可以在 Grafana 随心所欲地绘制我们的图纸, 我们如何看待, 我们有文本字段,可以在手机上看到总数, 我们称呼什么, 他们怎么称呼我们, 接听或拨打的电话总数. 请注意,所有这些都将使用我们选择的日期时间段进行筛选, 因此,我们可以看到上周的数据, 本月… 您会惊讶于我们在设备上花费的时间. 我们可以随心所欲地可视化数据, 当您将鼠标悬停在 Mouse 上时,会告诉您所说的时间图, 或总累积时间表, 以及一些奶酪,我们将看到我们花在电话上的时间最多的人.
我给你留下一些我在这张图片中的例子,在这里我粘贴我所做的愿望, 答案是肯定的, 首先,请记住将连接器从 Grafana 连接到您的 MySQL 数据库, 从 “数据源”.
电话上的 Total:
SELECT 求和(期间) 从 ( 选择 SUM(期间) 作为 Duration FROM llamadas_realizadas WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter() union all SELECT SUM(期间) 作为 Duration FROM llamadas_recibidas WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter() ) 自
总通话:
选择 SUM(期间) 从 llamadas_realizadas STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter()
总接收量:
选择 SUM(期间) 从 llamadas_recibidas WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter()
收到的呼叫总数:
SELECT 计数(*) 从 llamadas_recibidas WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter()
拨打的电话总数:
SELECT 计数(*) 从 llamadas_realizadas STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter( )
调用及其持续时间图 (带点的那个)
进行的指标调用:
SELECT duracion 作为值, 名称作为量度, DATE_SUB(时间戳(str_to_date(什么时候, '%M %d %Y at %l:%i%p')), 间隔 2 小时) 作为 time_sec FROM llamadas_realizadas WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter( ) 按 time_sec ASC 订购;
Calls received 指标:
SELECT duracion 作为值, 名称作为量度, DATE_SUB(时间戳(str_to_date(什么时候, '%M %d %Y at %l:%i%p')), 间隔 2 小时) 作为 time_sec FROM llamadas_recibidas WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter( ) 按 time_sec ASC 订购;
度量 拨打的电话:
选择 0 作为值, 名称作为量度, DATE_SUB(时间戳(str_to_date(什么时候, '%M %d %Y at %l:%i%p')), 间隔 2 小时) 作为 time_sec FROM llamadas_perdidas WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter( ) 按 time_sec ASC 订购;
来电和去电持续时间的图表
拨打的电话量度:
选择 (@sum := @sum + 期间) 作为值, "䍬" 作为公制, DATE_SUB(时间戳(str_to_date(什么时候, '%M %d %Y at %l:%i%p')), 间隔 2 小时) 作为 time_sec FROM llamadas_realizadas cross join (选择 @sum := 0) params WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter( );
Calls received 指标:
选择 (@sum := @sum + 期间) 作为值, "收到" 作为公制, DATE_SUB(时间戳(str_to_date(什么时候, '%M %d %Y at %l:%i%p')), 间隔 2 小时) 作为 time_sec FROM llamadas_recibidas cross join (选择 @sum := 0 ) params WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter( );
Quesito de Llamadas Received:
SELECT duracion 作为值, 名称作为量度, DATE_SUB(时间戳(str_to_date(什么时候, '%M %d %Y at %l:%i%p')), 间隔 2 小时) 作为 time_sec FROM llamadas_recibidas WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter( ) 按 time_sec ASC 订购;
Quesito de llamadas hecho:
SELECT duracion 作为值, 名称作为量度, DATE_SUB(时间戳(str_to_date(什么时候, '%M %d %Y at %l:%i%p')), 间隔 2 小时) 作为 time_sec FROM llamadas_realizadas WHERE STR_TO_DATE(什么时候, '%M %d %Y at %l:%i%p') $__timeFilter( )按 time_sec ASC 订购;
我希望您对它感兴趣,并且它对您有用, 不仅如此, 如果不是为了其他想法,并且您想利用这些数据, 我很快就会给你举另一个例子, 在这种情况下,电子邮件, 了解我们接收或发送多少电子邮件也很有趣… 我说了什么, 照常, 感谢您抽出时间!