正版包邮flutter实战杜文丛书书

71.3元

包邮

(需用券)

去购买 >

一,Influxdb安装与启动

1,创建yum仓库cat <

[influxdb]

name = InfluxDB Repository - RHEL $releasever

baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable

enabled = 1

gpgcheck = 1

gpgkey = https://repos.influxdata.com/influxdb.key

EO

2,安装启动influxdb## 安装influxdb

sudo yum install influxdb## 启动服务

sudo systemctl start influxdb

3,influxdb客户端使用## 进入命令行客户端

influx

Connected to http://localhost:8086 version 1.8.1

InfluxDB shell version: 1.8.1

二,Influxdb基本概念与操作

1,Database

数据库,可以创建多个,不同数据库中的数据文件,存放在磁盘上的不同目录。# 查看数据库

show databases

# 创建数据库

create database mydb

# 使用数据库

use mydb

# 删除数据库

drop database mydb

2,Measurement

相当于数据库中的表名,时间数据 time、Tag、Field 组合成了 Measurement。InfluxDB 没有创建表一说,直接 insert 就可以将数据插入 Measurement,可以理解为自动创建表。InfluxDB 没有对 measurement 的修改操作。-- 创建一个cpu的measurement,tags为host和regin,其中值为0.64

insert cpu,host=serverA,region=china\_shanghai value=0.64

-- 查询 measurement

> select * from cpu

name: cpu

time               host   region         value

----               ----   ------         -----

1596695999229393499 serverA china\_shanghai 0.64

3,Point

表里的一行数据,由时间戳(timestamp)、标签(tag)、数据(field)组成。timestamp 相当于 point 的时间戳,field 相当于point的值,tags 相当于 point 的属性。

4,Timestamp

数据的时间戳,相当于主键。不赋值时,默认为系统时间。

5,Tag

相当于索引。采用key=value形式,多个 tag 之间用 ',' 分隔。> show tag keys from cpu

name: cpu

tagKey

------

host

region

6,Field

相当于实际记录的数据值,也是采用key=value形式,多个 tag 之间用 ',' 分隔> show field keys

name: cpu

fieldKey fieldType

-------- ---------

value   float

7,Retention Policy

存储策略,InfluxDB 会自动清理数据,可以设置数据保留的时间,默认会创建存储策略 autogen (保留时间为永久),之后用户可以自己设置,例如保留最近 30 天的数据。-- 查看默认策略

> show retention policies on mydb

name   duration shardGroupDuration replicaN default

----   -------- ------------------ -------- -------

0s       168h0m0s           1        true-- 创建新的策略

create retention policy "rp\_day\_30" on "mydb" duration 30d replication 1 default-- 修改策略

alter retention policy "rp\_day\_30" on "mydb" duration 20d replication 1 default

三,Influxdb api使用

1,首先配置influxdb的properties配置,如下:# influxDB

spring.influx.url\=http://192.168.60.201:8086

spring.influx.user\=admin

spring.influx.password\=admin

spring.influx.database\=mydb

2,添加influx java config@Configuration

@Slf4j

public class InfluxConfig {

@Value("${spring.influx.url}")

private String influxDBUrl;

@Value("${spring.influx.user}")

private String userName;

@Value("${spring.influx.password}")

private String password;

@Value("${spring.influx.database}")

private String database;

/**

* 异步插入:

* enableBatch这里第一个是point的个数,第二个是时间,单位毫秒

* point的个数和时间是联合使用的,如果满100条或者60 * 1000毫秒

* 满足任何一个条件就会发送一次写的请求。

*/

@Bean(name = "influxDB")

public InfluxDB influxdb() {

InfluxDB influxDB = InfluxDBFactory.connect(influxDBUrl, userName, password);

try {

influxDB.setDatabase(database).enableBatch(100, 1000 * 60, TimeUnit.MILLISECONDS);

} catch (Exception e) {

log.error("fail enableBatch:", e);

} finally {

//设置默认策略

influxDB.setRetentionPolicy("autogen");

}

//设置日志输出级别

influxDB.setLogLevel(InfluxDB.LogLevel.BASIC);

return influxDB;

}

}

3,抽象influxdb api接口,提供埋点事件接口@Component

@Slf4j

public class InfluxMonitor {

private ConcurrentLinkedDeque eventDeque = new ConcurrentLinkedDeque<>();

private static final String measurement = "Event";

private static final String eventName = "EventName";

private static final String eventCount = "EventCount";

private static AtomicInteger eventSize = new AtomicInteger();

private static ExecutorService executor = Executors.newFixedThreadPool(16);

@Value("${spring.influx.database}")

private String database;

@Autowired

private InfluxDB influxDB;

/**

* 多线程异步处理

*/

public InfluxMonitor() {

for (int i = 0; i < 8; i++) {

executor.submit((Runnable) () -> {

while (true) {

try {

Thread.sleep(100);

int size = 2000;

Point point;

BatchPoints batchPoints = BatchPoints.database(database).build();

while ((point = eventDeque.pollLast()) != null && size-- > 0) {

eventSize.getAndDecrement();

batchPoints.point(point);

}

if (batchPoints.getPoints().size() > 0) {

influxDB.write(batchPoints);

}

} catch (Exception e) {

log.error("influxDB:", e);

}

}

});

}

}

/**

* 多线程处理件

*/

public void produce(Point point) {

if (eventSize.getAndIncrement() < 5000) {

eventDeque.offerFirst(point);

}

}

/**

* 创建订单事件

*/

public void createOrderEvent(String messageCode, CreateOrderDTO order) {

Map tags = new HashMap<>();

tags.put("messageCode", messageCode);

tags.put("channel", order.getChannel());

this.logEvent("createOrder", new HashMap<>(), tags);

}

/**

* 发送数据

*

* @param logEventName 事件类型 如:创建订单

* @param fields influx field 指标如: 下单次数

* @param tags influx tags 查询索引

*/

public void logEvent(String logEventName, Map fields, Map tags) {

try {

tags.put(eventName, logEventName);

fields.put(eventCount, 1);

Point point = Point.measurement(measurement)

.tag(tags)

.fields(fields)

.build();

this.produce(point);

} catch (Exception e) {

log.error("influx log event:", e);

}

}

}

4,添加controller模拟下单接口@RestController

@RequestMapping(value = "/influx")

@Slf4j

public class InfluxController {

@Autowired

private InfluxMonitor influxMonitor;

@PostMapping("/createOrder")

public Object createOrder(@RequestBody CreateOrderDTO createOrder) {

log.info("订单业务处理..............");

String messageCode = "200";

influxMonitor.createOrderEvent(messageCode, createOrder);

return Boolean.TRUE;

}

}

5,使用postman测试,下一节我们使用可视化页面展示

四,可视化工具Grafana介绍

Grafana 是以纯 Javascript 开发的前端工具,用于访问 InfluxDB,自定义报表、显示图表等,Grafana下载地址。

安装wget https://dl.grafana.com/oss/release/grafana-7.1.2-1.x86\_64.rpm

sudo yum install grafana-7.1.2-1.x86\_64.rpm

修改配置 : vim /etc/grafana/grafana.ini[server]

# Protocol (http, https, h2, socket)

;protocol = http

# The ip address to bind to, empty will bind to all interfaces

http_addr = 192.168.60.201

# The http port to use

http_port = 3000

启动检查systemctl start grafana-server ## 启动grafana服务

systemctl status grafana-server ## 检查启动状态

在浏览器中访问我们配置的ip及端口,本文配置的为:http://192.168.60.201:3000,默认的用户名和密码是admin/admin,首次登陆提醒你修改密码即可

配置数据源(官网地址)Grafana支持多种数据源如:MySQL,Graphite,InfluxDB,Elasticsearch等,本文说的是influxDB,当然使用的就是InfluxDB了,我们看到有很多可选的数据源如下:

下面是本地基于InfluxDB的配置,主要是url,database等一些基本配置

Grafana像写sql一样统计展示不同的面板,非常方便,下面就是以下单次数及各渠道下单分布创建不同的面板来展示Grafana的强大!FROM 指定目标

autogen:我们代码中指定的存储策略

Event :我们代码中指定的measurement

EventName:指定的tags中的一个,本文中就是创建订单事件 createOrder

SELECT 查询指标

field(EventCount) : 指定的fields中的一个,也是我们需要监控的指标,本文中就是下单次数,我默认指定了一次接口调用存储了一次EventCount=1

sum():这个就不多说了相当于mysql中的求和,计算的就是前面指定的field

GROUP BY 分组

time($_interval):面板上指定的时间

ALIAS BY 查询结果别名,本文中就是下单成功次数

Grafana支持很多复杂的查询,这里就不一一演示了,最后看下我们做的面板效果图,InfluxDB的性能是非常好的近实时的,我们通过选择不同的时间来查看业务埋点监控看板

java 11官方入门(第8版)教材

79.84元

包邮

(需用券)

去购买 >

influxdb java api使用_Influxdb入门使用相关推荐

  1. akka java api中文_akka入门 (1):akka简介

    这个akka入门系列大量参考了akka文档.主要是翻译+自己的一些理解.这里对akka文档吐一下槽,它的文档初看上去感觉挺详细的.但是很多示例代码都是片段,对初学者来说甚至都无法运行起来,所以我这里会 ...

  2. kafka java api 删除_Kafka入门系列—6. Kafka 常用命令及Java API使用

    常用命令 启动Zookeeper ./zkServer.sh start-foreground 可选参数: ./zkServer.sh {start|start-foreground|stop|res ...

  3. influxdb java api使用_java使用influxDB数据库的详细源码

    此文实例给亲们分享了java使用influxDB数据库的具体代码,供大家参考,具体内容如下 1.pom.xml中导入jar包依赖 org.influxdb influxdb-java 2.5 2.编写 ...

  4. mybatis入门(五)之Java API

    转载自   mybatis Java API Java API 既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了.MyBatis 的 Java API 就是你收获你所 ...

  5. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

    大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...

  6. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作...

    一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 ...

  7. ElasticSearch入门-搜索(java api)

    ElasticSearch入门-搜索(java api) package com.qlyd.searchhelper;import java.util.Map;import net.sf.json.J ...

  8. zookeeper入门学习之java api会话建立《四》

    在上一篇zk中简单玩了下api的连接创建会话,也总是留下了很多坑,就是那些引申开来,搞不明白的问题.有时候想追究起来,问题总是那么无穷无尽,有时候问题比答案更有力度吧,到最后都是些哲学问题吗?存在的这 ...

  9. MyBatis——Java API

    Java API 既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了. MyBatis 的 Java API 就是你收获你所做的努力的地方.正如你即将看到的,和 JDB ...

  10. Java数据持久层框架 MyBatis之API学习八(Java API详解)

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...

最新文章

  1. 从ubuntu中文论坛转载的一片超好的文章,慢慢学习中
  2. HelloFresh迁移至新的API网关,实现微服务架构
  3. 第二天学习Java的笔记
  4. 走进缓存的世界(一) - 开篇
  5. 董付国老师1900页系列Python教学PPT阅读地址汇总
  6. 该怎么输出log?!
  7. 解决 No converter found for return value of type 的问题
  8. Python内置函数一览表
  9. 说说我的专业计算机作文,说说我自己作文(精选11篇)
  10. 微信企业号和微信公众号使用js-sdk说明和注意事项
  11. 包你笑,笑话之三 超强情侣对话
  12. java jsf 入门_JSF入门实战
  13. 安卓Android基于百度云平台人脸识别学生考勤签到系统设计
  14. python count函数时间复杂度_Python之时间复杂度
  15. 更改 IE 代理服务器的设置
  16. 你还在为博客访问量少而发愁么?
  17. RACH Procedure Log Analysis
  18. C# AForge设置摄像头参数(含代码)
  19. python数列翻转_Python 翻转列表
  20. 如何写好一份MRD文档

热门文章

  1. 日常生活 之 有哪些道理是你慢慢才明白的?
  2. ubuntu安装xbox手柄的驱动程序
  3. 黑莓装Linux系统,“黑莓的Linux桌面管理器”──Barry的使用
  4. 热敏打印机数据截取+追加打印二维码
  5. 增长黑客理论(AARRR)模型
  6. bitcoin全节点搭建
  7. linux下无法删除文件夹,解决linux上无法删除文件的方法(疑难文件)
  8. macos系统镜像iso_Windows10操作系统iso镜像、微软正版软件下载站:MSDN,我告诉你...
  9. 华为已找到安卓才“替代品”?马云马斯克激辩人工智能未来;微软说:麻将AI系统终获突破;扭亏!中兴通讯上半年净利14.71亿……...
  10. 3D MAX2014 安装教程(个人亲自示例)