文章目录
Ubuntu使用Grafana搭建监控平台展示OpenTSDB数据
1、环境配置
1.1版本要求
Hbase 2.2.5
OpenTSDB 2.4.0
Grafana 7.1.1
Grafana官网:https://grafana.com/grafana/download
1.2Grafana安装
依次执行一下三条命令完成安装
sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_7.1.1_amd64.deb
sudo dpkg -i grafana_7.1.1_amd64.deb
基本操作命令
启动:service grafana-server start
停止:service grafana-server stop
重启:service grafana-server restart
加入开机自启动: chkconfig --add grafana-server on
完成安装和启动后访问 http://localhost:3000/ 出现登录界面则表示安装成功
登录账号为admin,初始密码为admin
1.3Hbase和OpenTSDB
Hbase和OpenTSDB的启动(启动命令可能不一样)
Hbase启动:./start-hbase.sh
OpenTSDB启动:$DBPATH/opentsdb/bin/tsdb tsd --port=4242 --staticroot=$DBPATH/opentsdb/share/opentsdb/static --cachedir=/tmp/tsd
为OpenTSDB创建metric
创建metric:
$DBPATH/opentsdb/bin/tsdb mkmetric test.metric
$DBPATH/opentsdb/bin/tsdb mkmetric test.first
$DBPATH/opentsdb/bin/tsdb mkmetric test.secound
2、Grafana的使用
2.1为Grafana配置OpenTSDB数据源
登陆成功后进入首页,点击下图红框区域,创建数据源
选择OpenTSDB
需要配置的主要是url和version
这里要注意,我所使用的OpenTSDB版本为2.4.0,但是Grafana的最新版本7.1.1最多只支持OpenTSDB4.3.0,选择4.3.0,目前并没有发现上面使用异常
之后点击Save&Test显示创建成功即可使用
此时数据源配置完成
2.2展示数据源
点击左侧仪表盘的 “+” 按钮 create–>dashboard,之后点击Add new panel出现如下界面
之后在左侧进行数据源的配置
可以指定同一个数据源的不同metric对应的不同标签的数据,也可以将不同数据源的不同metric中数据放到图上进行比较。效果如下
鼠标左键选择图像上部分可以进行放大操作
将鼠标移动到图像上面时湖岸线是当前点击的处的信息
2.3对数据进行操作
点击首页做出的类似仪表盘的图标的 Explore 进入如下页面,在进行数据剧院和数据的配置后出现如下效果
同样,这一模块的图像也支持选择放大
在这一模块对数据提供了某些函数操作的功能,如下图
同时支持散点图的显示
柱状图的显示
和对各个时间段的不同数值的显示
3、Java为OpenTSDB生成数据
1.生成数据的格式
put test.metric 1596196200 28 port=webServer cpu=0
put test.metric 1596196200 28 port=webServer cpu=1
put test.metric 1596196200 33 port=webServer02 cpu=02
put test.first 1596196200 76 port=webServerFirst cpu=01
2.数据生成代码
import java.util.Random;
public class MakeData {
private String data_String= null;
public String makeData(int timestamp){
String metric = "test.secound";
Random random=new Random();
int value=random.nextInt(100);
data_String = "put" + " " + metric+ " " + String.valueOf(timestamp) + " " + String.valueOf(value) + " " + "port=webServerSecond" + " " + "cpu=03";
return data_String;
}
}
3.数据写入代码
自定义一个开始时间的时间戳,使用TelnetClient模拟telnet向端口写入数据
时间戳在写入过程中每次自增2
使用50ms的时间间隔进行数据写入
到终止时间时停止,可以在较快的时间内写入较长时间的数据
public class PortSend {
public static void main(String args[]) throws IOException {
int timestamp = 1596195060;
TelnetClient telnetClient = new TelnetClient();
telnetClient.setDefaultTimeout(50);
telnetClient.connect("127.0.0.1",4242);
while (true){
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
MakeData makeData=new MakeData();
String dataString=makeData.makeData(timestamp);
System.out.println(dataString);
PrintStream printStream = new PrintStream(telnetClient.getOutputStream()); //写命令的流
printStream.println(dataString);//写命令
printStream.flush();//将命令发送到telnet Server
timestamp = timestamp+2;
if(timestamp > 1596196200){break;}
}
telnetClient.disconnect();
}
}
maven导入TelnetClient
<dependency>
<groupId>org.phoenixframe</groupId>
<artifactId>phoenix_telnetclient</artifactId>
<version>1.4.8</version>
</dependency>