目的
利用 gnuplot 作图
纯为兴趣
软件需求
yum install -y gnuplot
过程
从 M3DB 中获取 metric
把 metric 数据写入到不同文件中, 一个文件代表了图片中的一条线条
l利用 gunplot 作图
获取 m3db metric python 语法
#!/usr/bin/python
# -*- coding:utf-8 -*-
import requests
import json
import time
def getData(metricName, tagName, nameSpace):
"""
params:
metricName - m3db metric name
tagName - m3db metric's tag
fileName - save to filename
return:
list
"""
urlQuery = 'http://m3dbquery_ipaddr:m3dbport/api/v1/query_range'
startStamp = str(int(time.time()) - 1800)
endStamp = str(int(time.time()))
accessURL = urlQuery + '?query=' + metricName + '{service_environment="' + tagName + '",namespace="' + nameSpace + '"}&start=' + startStamp + '&end=' + endStamp + '&step=10'
allMetricTagFromM3 = requests.get(accessURL)
allTagJson = json.loads( allMetricTagFromM3.text)
if not allTagJson.has_key("data"):
print “metric get erorr”
return False
if len(allTagJson["data"]["result"]) == 0:
print “metric get erorr”
return False
metricData = allTagJson["data"]["result"]
for data in metricData:
fileName = data["metric"]["hostname"]
hostData = data["values"]
with open(fileName, 'a') as f:
for lines in hostData:
char = str(lines[0]) + ' ' + str(lines[1]) + '\n'
f.write(char)
if __name__ == '__main__':
metricName = "coordinator_m3db_client_write_success"
tagName = "production"
nameSpace = "m3db"
getData(metricName, tagName, nameSpace)
执行后返回了下面三个文件
m3coordinator-055024
m3coordinator-055025
m3coordinator-055026
参考其中一个文件内容
1564126181 1909
1564126191 1006
......
1564127971 400
1564127981 6
利用 gnuplot 生成文件方法
参考 plot 配置文件
plot.script
set title "coordinator_m3db_client_write_success"
set ylabel "input"
set xlabel "time"
set terminal png size 1300, 600
set style data fsteps
set timefmt "%s"
set format x "%H:%M:%S"
set xdata time
set term png
set output "chart_1.png"
plot "m3coordinator-055024" using 1:2 title "055024" , "m3coordinator-055025" using 1:2 title "055025", "m3coordinator-055026" using 1:2 title "055026"
执行命令方法
gnuplot plot.script
生成图片
参考下图