influx踩坑指南

spring中的配置:

spring:
  influx:
    url: http://localhost:8086
    user: tony
    password: 123456

pom.xml中的依赖配置:

	<dependency>
            <groupId>com.influxdb</groupId>
            <artifactId>influxdb-client-java</artifactId>
            <version>6.7.0</version>
        </dependency>

增加配置类,工具类influxDBClient注入容器:


@Configuration
public class InfluxDBConfig {

    @ConfigurationProperties(prefix = "spring.influx")
    @Bean
    public InfluxDBClient influxDBClient(InfluxDbProperties influxDbProperties) {
        String serverURL = influxDbProperties.getUrl(),
                username = influxDbProperties.getUser(),
                password = influxDbProperties.getPassword();
        String retentionPolicyName = "thirty_days";
        String databaseName="uny";
        InfluxDBClient  influxDBClient = InfluxDBClientFactory.createV1(serverURL, username, 		password.toCharArray(),databaseName,retentionPolicyName);
        return influxDBClient;
    }

}

装配使用:

	@Resource
    private InfluxDBClient influxDBClient;

    @Override
    public List<Cpu> selectChartDataList(TimeSearchDTO DateZoneParams) {

        String sql = "select * from cpu " ;
        if( DateZoneParams != null ){
            sql = sql + " where time > '"+ DateZoneParams.getStartTime() +" 00:00:00' and time <'"+ 	DateZoneParams.getEndTime() +" 23:59:59' ";
        }
        //返回实体
        List<Cpu> dataList = InfluxUtil.query(influxDBClient,Cpu.class, sql);
        return dataList;
    }

常用方法:

package com.ruoyi;

import com.influxdb.client.InfluxDBClient;
import com.influxdb.client.WriteApiBlocking;
import com.influxdb.client.domain.WritePrecision;
import com.ruoyi.quartz.domain.server.QzServer;
import com.ruoyi.quartz.task.ServerTask;
import com.ruoyi.uny.entity.Cpu;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

@SpringBootTest
public class InfluxdbTest {

    @Autowired
    ServerTask serverTask;

    @Resource
    private InfluxDBClient influxDBClient;

    @Test
    void contextLoads() throws Exception{
        System.out.println("-------------->>>>>>>>>>>111");
//        //返回实体
//        String sql = "select * from cpu where ip='192.168.101.200' " ;
//        List<Cpu> dataList = InfluxUtil.query(influxDBClient,Cpu.class, sql);
//        dataList.forEach(System.out::println);


        WriteApiBlocking writeApi = influxDBClient.getWriteApiBlocking();
        for (int i = 0; i < 100; i++) {
            QzServer qzServer = new QzServer();
            qzServer.copyTo();
            Cpu cpu = new Cpu();
            cpu.setIp(qzServer.getQzSys().getComputerIp())
                    .setMemUsed(qzServer.getMem().getUsed())
                    .setMemFree(qzServer.getMem().getFree())
                    .setMemUsage(qzServer.getMem().getUsage())
                    .setCpuUsed( qzServer.getQzCpu().getUsed())
                    .setCpuTotal(qzServer.getQzJvm().getTotal())
                    .setJvmUsage(qzServer.getQzJvm().getUsage());
//                .setTime(Instant.now());
            写入对象
            writeApi.writeMeasurement( WritePrecision.MS, cpu);
            Thread.sleep(1000);
        }
    }
}

踩坑指南:

com.influxdb.exceptions.ForbiddenException
	at com.influxdb.internal.AbstractRestClient.responseToError(AbstractRestClient.java:119)
	at com.influxdb.internal.AbstractQueryApi$1.onResponse(AbstractQueryApi.java:220)
	at com.influxdb.internal.AbstractQueryApi.query(AbstractQueryApi.java:247)
	at com.influxdb.internal.AbstractQueryApi.query(AbstractQueryApi.java:199)
	at com.influxdb.internal.AbstractQueryApi.queryRaw(AbstractQueryApi.java:153)
	at com.influxdb.client.internal.QueryApiImpl.queryRaw(QueryApiImpl.java:955)
	at com.influxdb.client.internal.QueryApiImpl.queryRaw(QueryApiImpl.java:675)
	at com.influxdb.client.internal.QueryApiImpl.queryRaw(QueryApiImpl.java:613)
	at com.influxdb.client.internal.QueryApiImpl.queryRaw(QueryApiImpl.java:603)
	at com.ruoyi.quartz.task.ServerTask.saveServerDataToInfluxDB(ServerTask.java:79)

java客户端查询报上述错误:
代码块

打开服务根目录下的influxdb.conf文件,去掉这一行的注解(前面的#):
flux-enabled = true

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要搭建influx-proxy,您需要遵循以下步骤: 1. 安装并配置influxdb和grafana。 2. 下载并安装influx-proxy。 3. 在influx-proxy的配置文件配置influxdb和grafana的地址、端口和凭据等信息。 4. 启动influx-proxy服务。 以下是更详细的步骤: 1. 安装并配置influxdb和grafana 您可以按照influxdb和grafana的官方文档进行安装和配置。在安装完成后,请确保您已经创建了数据库,并且可以使用influx命令行工具或grafana管理界面进行查询和写入数据。 2. 下载并安装influx-proxy 您可以从influx-proxy的GitHub页面下载最新的二进制文件,并将其解压到您的服务器上。在解压后,您可以将二进制文件移动到任何您想要的位置。 3. 配置influx-proxy 在influx-proxy的解压目录中,您会找到一个名为config.yml的文件。您需要编辑此文件,并配置以下信息: ``` influxdb: url: "http://influxdb.example.com:8086" username: "influx_username" password: "influx_password" database: "influx_database" grafana: url: "http://grafana.example.com:3000" username: "grafana_username" password: "grafana_password" ``` 请根据您的情况修改上述配置信息。请确保在配置文件中指定的influxdb和grafana帐户具有查询和写入数据的权限。 此外,您可以根据需要配置其他选项,如influx-proxy的监听端口、日志级别和缓存大小等。 4. 启动influx-proxy 在完成配置后,您可以启动influx-proxy服务。您可以通过运行以下命令来启动服务: ``` ./influx-proxy -config config.yml ``` 请将config.yml替换为您的配置文件的位置。如果一切正常,您应该能够看到类似以下的输出: ``` INFO[0000] Starting InfluxDB Proxy on :8080 ``` 现在,您可以使用influx-proxy的地址和端口来查询和写入influxdb。例如,您可以使用类似以下的命令查询数据: ``` curl "http://influx-proxy.example.com:8080/query?q=SELECT%20*%20FROM%20cpu_load" ``` 这将返回类似以下的响应: ``` { "results": [ { "statement_id": 0, "series": [ { "name": "cpu_load", "columns": [ "time", "value" ], "values": [ [ "2021-01-01T00:00:00Z", 0.5 ], [ "2021-01-02T00:00:00Z", 0.7 ] ] } ] } ] } ``` 祝你好运!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值