天天看點

玩轉Tablestore:使用Grafana快速展示時序資料準備資源使用Grafana

Grafana

 是一款采用 go 語言編寫的開源應用,主要用于大規模名額資料的可視化展現,是網絡架構和應用分析中最流行的時序資料展示工具,可以通過将采集的資料查詢然後可視化的展示,實作報警通知;Grafana擁有豐富的資料源,官方支援以下資料源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。Tablestore基于DLA,能提供标準的SQL讀能力,是以天然就可以使用MySQL插件接入Tablestore的時序資料。

Data Lake Analytics(DLA

)是Serverless化的互動式聯合查詢服務。無需ETL,使用标準SQL即可分析與內建對象存儲(OSS)、資料庫(PostgreSQL/MySQL等)、NoSQL(Tablestore等)資料源的資料。

表格存儲(Tablestore

)是阿裡雲自研的面向海量結構化資料存儲的Serverless NoSQL多模型資料庫,被廣泛用于社交、物聯網、人工智能、中繼資料和大資料等業務場景。提供相容HBase的WideColumn模型、消息模型Timeline以及時空模型Timestream,可提供PB級存儲、千萬TPS以及毫秒級延遲的服務能力。

Tablestore不僅支援阿裡雲自研的計算生态,比如MaxCompute、Blink;還是支援開源的計算生态,比如Spark、Flink等,是以成為計算下遊Sink結果表的絕佳選擇,同時依托底層優秀的架構,提供毫秒級實時的查詢能力,配合DLA服務,實作線上的互動式分析能力。如圖所示,這一套标準的資料處理流程,資料經過加工計算,生成高附加值的内容,持久化到資料庫中,并為客戶提供線上的通路能力。

玩轉Tablestore:使用Grafana快速展示時序資料準備資源使用Grafana

今天這篇文章正如标題所示,借助DLA 标準SQL的能力,通過Grafana展示Tablestore中存儲的監控資料。為了友善起見,Grafana我們采用本地部署的模式,我們在阿裡雲上購買一台按量的VPC環境的ECS(CentOS),用于搭建Grafana和注入資料。

準備資源

Tablestore資源

第一步,我們要準備一個Tablestore的執行個體,細節我們可以參考

《快速入門》

。并記錄得到執行個體名、VPC域名、雲賬戶AccessKeyId資訊。

# 樣例
# VPC域名:https://ecs-metric.cn-hangzhou.vpc.tablestore.aliyuncs.com
# 執行個體名:ecs-metric
# AccessKeyId:test-accessid
# AccessKeySecret:test-accesskey      

為了友善起見,以下對Tablestore的操作,都使用Tablestore Cli來執行,

Cli下載下傳和使用方式

下載下傳解壓Cli,并配置Cli的通路資訊:

./ts config --endpoint https://{VPC域名} --instance {執行個體名} --id {AccessKeyId} --key {AccessKeySecret}

# 樣例
# ./ts config --endpoint https://ecs-metric.cn-hangzhou.vpc.tablestore.aliyuncs.com --instance ecs-metric --id test_accessid --key test_accesskey      

使用Cli,建立一張表,表名為metric,schema如下:

字段 是否主鍵 類型 描述
machine string 機器的Host name
ts integer Unix時間戳,機關為秒
load double 機器負載
network_in 網絡流入流量
network_out 網絡流出流量
diskutil 磁盤負載

建立表的指令

# Tablestore是Schema Free模式,隻用建立主鍵即可,非主鍵列不用預先定義
./ts create -t metric --pk '[{"c":"machine", "t":"string"}, {"c":"ts", "t":"integer"}]'
./ts lt
./ts use -t metric      

注入一部分資料

#注入2個ECS模拟監控資料, 分别是machineA,machineB, 時間範圍是2020-01-18 12:50:00到2020-01-18 12:50:45
./ts put --pk '["machineA", 1579323000]' --attr '[{"c":"load", "v":3.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineA", 1579323005]' --attr '[{"c":"load", "v":7.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":31.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineA", 1579323010]' --attr '[{"c":"load", "v":3.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineA", 1579323015]' --attr '[{"c":"load", "v":2.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineA", 1579323020]' --attr '[{"c":"load", "v":6.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":172.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineA", 1579323025]' --attr '[{"c":"load", "v":2.0}, {"c":"network_in", "v":32.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineA", 1579323030]' --attr '[{"c":"load", "v":4.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":4.0}]'
./ts put --pk '["machineA", 1579323035]' --attr '[{"c":"load", "v":7.0}, {"c":"network_in", "v":70.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineA", 1579323040]' --attr '[{"c":"load", "v":2.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":112.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineA", 1579323045]' --attr '[{"c":"load", "v":3.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":2.0}]'

./ts put --pk '["machineB", 1579323000]' --attr '[{"c":"load", "v":3.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineB", 1579323005]' --attr '[{"c":"load", "v":7.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":31.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineB", 1579323010]' --attr '[{"c":"load", "v":3.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineB", 1579323015]' --attr '[{"c":"load", "v":2.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineB", 1579323020]' --attr '[{"c":"load", "v":6.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":172.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineB", 1579323025]' --attr '[{"c":"load", "v":2.0}, {"c":"network_in", "v":32.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineB", 1579323030]' --attr '[{"c":"load", "v":4.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":4.0}]'
./ts put --pk '["machineB", 1579323035]' --attr '[{"c":"load", "v":7.0}, {"c":"network_in", "v":70.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineB", 1579323040]' --attr '[{"c":"load", "v":2.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":112.0}, {"c":"diskutil", "v":1.0}]'
./ts put --pk '["machineB", 1579323045]' --attr '[{"c":"load", "v":3.0}, {"c":"network_in", "v":120.0}, {"c":"network_out", "v":120.0}, {"c":"diskutil", "v":2.0}]'      

DLA資源

第二步,我們要開通DLA服務,并配置DLA到Tablestore的映射,細節可以參考

《使用DLA服務》

在DLA控制台建立一個子賬戶:"賬戶管理"

# 樣例
# redchen_s1604337383174619      

在DLA中新增執行個體的Schema資訊,在DLA控制台 "SQL"->"SQL執行" 同步執行如下指令

CREATE SCHEMA {Schema名} with DBPROPERTIES(LOCATION ='https://{VPC域名}', catalog='ots', instance ='{執行個體名}');                   

# 樣例
# CREATE SCHEMA ecs_metric_schema with DBPROPERTIES(LOCATION ='https://ecs-metric.cn-hangzhou.vpc.tablestore.aliyuncs.com', catalog='ots', instance ='ecs-metric');                         

在建立一個外表

# 注意,這裡的表名和字段一定要和Tablestore一緻
CREATE EXTERNAL TABLE metric (
    machine VARCHAR NOT NULL , 
    ts BIGINT NOT NULL,
    load DOUBLE,
    network_in DOUBLE,
    network_out DOUBLE,
    diskutil DOUBLE,
    primary key(machine, ts));        

授權子賬戶能操作以上Schema

# 樣例
# grant all on ecs_metric_schema.* to redchen_s1604337*********;      

建立成功之後,可以在DLA界面找到JDBC的接入資訊:DLA控制台->通路站點管理,如圖所示:

玩轉Tablestore:使用Grafana快速展示時序資料準備資源使用Grafana

配置完成之後,可以使用mysql用戶端連接配接以上的接入位址,确認連接配接是否正常。

mysql -h{DLA外網位址} -P{端口} -u{賬戶} -p{密碼} -D{Schema}

# 樣例
# mysql -h*.cn-hangzhou.datalakeanalytics.aliyuncs.com -P10000 -u* -p* -Decs_metric_schema      

安裝Grafana

細節可以參考

《installation》

網上也有很多文檔,這裡就不單獨在介紹;

使用Grafana

Grafana使用介紹,可以參見

官網

,其中最主要的概念包括, DataSources(資料源)、Dashboard(儀表盤)、Panel(面闆)

第一步:配置資料源

我們這裡使用使用MySQL接入,接入資訊可以參見mysql用戶端通路的資訊ecs_metric_schema

玩轉Tablestore:使用Grafana快速展示時序資料準備資源使用Grafana

配置接入資訊并儲存

玩轉Tablestore:使用Grafana快速展示時序資料準備資源使用Grafana

第二步:新增一個Dashboard

配置一個Graph,讀取metric表中的時序資料

玩轉Tablestore:使用Grafana快速展示時序資料準備資源使用Grafana
玩轉Tablestore:使用Grafana快速展示時序資料準備資源使用Grafana