首页 > 其他分享 >InfluxDB 安装与使用

InfluxDB 安装与使用

时间:2023-06-02 12:07:38浏览次数:42  
标签:00 使用 influxdb 默认 InfluxDB time print 安装


InfluxDB 安装与使用

版本:1.8.10

系统:ubuntu 16.04

web:chronograf

1.安装

mkdir <database_dir>

cd <database_dir>

#添加仓库
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -

source /etc/lsb-release

echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list


sudo apt-get update && sudo apt-get install influxdb

sudo service influxdb start

2.配置

指定配置文件地址

influxd -config /etc/influxdb/influxdb.conf

开启认证

[http]  
  enabled = true  
  bind-address = ":8086"  
  auth-enabled = true
  log-enabled = true  
  write-tracing = false  
  pprof-enabled = false  
  https-enabled = false  
  https-certificate = "/etc/ssl/influxdb.pem"

重启

sudo service influxdb restart

创建admin用户

influx
#创建admin给予所有权限
CREATE USER admin WITH PASSWORD [REDACTED] WITH ALL PRIVILEGES
auth
admin
admin
成功

3.安装web管理

a.安装
#安装chronograf
sudo apt-get install chronograf

#参数
sudo chronograf -help

#默认是8888 和宝塔冲突了 改下端口
sudo chronograf --port 9010
b.使用

打开 http://:9010 输入 账号密码

InfluxDB 安装与使用_服务器

4使用

插入数据

curl -i -XPOST "http://localhost:8086/write?db=science_is_cool" --data-binary 'weather,location=us-midwest temperature=82 1465839830100400200'

5.常见错误

a. invalid boolean

字符串需要用双引号包住

b. invalid field format

数据格式应当按照

<table_name>,<tag_key>=<tag_value>,<tag_key>=<tag_value> <field_key>=<field_value>,<field_key>=<field_value> timestamp

tag 和 filed 和 timestrap 中间有空格分割

c.查询的时候 where条件 tag-value 需要用单引号引起
d.InfluxDBClientError Request Entity Too Large
vim /etc/influxdb/influxdb.conf
#max-body设置为0
max-body-size = 0
#重启influxdb
sudo service influxdb restart
e.MemoryError
#插入大量数据的时候会报错

插入完数据 close()一下
f.mysql influxdb大批量数据导入造成influxdb崩溃

之前使用的是http,换成udp连接方式就好了

每次write后关闭链接

6.python连接influxDB

参数

  • host ( str ) – 连接到 InfluxDB 的主机名,默认为 ‘localhost’
  • port ( int ) – 连接到 InfluxDB 的端口,默认为 8086
  • 用户名( str ) – 要连接的用户,默认为 ‘root’
  • 密码( str ) – 用户的密码,默认为 ‘root’
  • pool_size ( int ) – urllib3 连接池大小,默认为 10。
  • database ( str ) – 要连接的数据库名称,默认为 None
  • ssl ( bool ) – 使用 https 而不是 http 连接到 InfluxDB,默认为 False
  • verify_ssl ( bool ) – 验证 HTTPS 请求的 SSL 证书,默认为 False
  • timeout ( int ) – 请求将等待您的客户端建立连接的秒数,默认为 None
  • retries ( int ) – 客户端在中止前将进行的尝试次数,默认为 3 0 - 尝试直到成功 1 - 仅尝试一次(不重试) 2 - 最多两次尝试(包括一次重试) 3 - 最多三次尝试(默认选项)
  • use_udp ( bool ) – 使用 UDP 连接到 InfluxDB,默认为 False
  • udp_port ( int ) – 连接到 InfluxDB 的 UDP 端口,默认为 4444
  • proxies ( dict ) – 用于请求的 HTTP(S) 代理,默认为 {}
  • path ( str ) – 要连接的服务器上 InfluxDB 的路径,默认为 ‘’
  • cert ( str ) – 用于相互 TLS 身份验证的客户端证书信息的路径。您可以指定本地证书用作包含私钥和证书的单个文件,或作为两个文件路径的元组,默认为无
  • gzip ( bool ) – 使用 gzip 内容编码来压缩请求
  • session ( requests.Session ) – 允许新的客户端请求使用现有的请求会话,默认为 None
  • headers ( dict ) – 添加到请求的标头,将添加“Content-Type”和“Accept”,除非它们已经存在,默认为 {}
  • socket_options ( list ) - 使用自定义 tcp 套接字选项,如果未指定,则从加载默认值 HTTPConnection.default_socket_options

实例

# -*- coding: utf-8 -*-
"""Tutorial on using the InfluxDB client."""

import argparse

from influxdb import InfluxDBClient


def main(host='localhost', port=8086):
    """Instantiate a connection to the InfluxDB."""
    user = 'root'
    password = 'root'
    dbname = 'example'
    dbuser = 'smly'
    dbuser_password = 'my_secret_password'
    query = 'select Float_value from cpu_load_short;'
    query_where = 'select Int_value from cpu_load_short where host=$host;'
    bind_params = {'host': 'server01'}
    json_body = [
        {
            "measurement": "cpu_load_short",
            "tags": {
                "host": "server01",
                "region": "us-west"
            },
            "time": "2009-11-10T23:00:00Z",
            "fields": {
                "Float_value": 0.64,
                "Int_value": 3,
                "String_value": "Text",
                "Bool_value": True
            }
        }
    ]

    client = InfluxDBClient(host, port, user, password, dbname)

    print("Create database: " + dbname)
    client.create_database(dbname)

    print("Create a retention policy")
    client.create_retention_policy('awesome_policy', '3d', 3, default=True)

    print("Switch user: " + dbuser)
    client.switch_user(dbuser, dbuser_password)

    print("Write points: {0}".format(json_body))
    client.write_points(json_body)

    print("Querying data: " + query)
    result = client.query(query)

    print("Result: {0}".format(result))

    print("Querying data: " + query_where)
    result = client.query(query_where, bind_params=bind_params)

    print("Result: {0}".format(result))

    print("Switch user: " + user)
    client.switch_user(user, password)

    print("Drop database: " + dbname)
    client.drop_database(dbname)
    client.close()


def parse_args():
    """Parse the args."""
    parser = argparse.ArgumentParser(
        description='example code to play with InfluxDB')
    parser.add_argument('--host', type=str, required=False,
                        default='localhost',
                        help='hostname of InfluxDB http API')
    parser.add_argument('--port', type=int, required=False, default=8086,
                        help='port of InfluxDB http API')
    return parser.parse_args()


if __name__ == '__main__':
    args = parse_args()
    main(host=args.host, port=args.port)

7.mysql 对比 sqlite 对比 influxdb

#数据量  3600w
select * from env_data_his_dust_meter_2 where mn = '20200409000010'
mysql->总数据为637849-查询时间为-19.649017333984375
sqlite->总数据为637849-查询时间为-6.131999254226685
influxdb->总数据为636689-查询时间为-7.540003776550293

select * from env_data_his_dust_meter_2 where mn = '20200409000010' and create_time > '2021-10-01 00:00:00'
mysql->总数据为193088-查询时间为-7.801991701126099
sqlite->总数据为193088-查询时间为-1.8469734191894531
influxdb->总数据为192484-查询时间为-2.0109972953796387
# -*- coding: utf-8 -*-
# !/usr/bin/env python
# @Time    : 2022/2/12 14:59 
# @Author  : mtl
# @Desc    : ***
# @File    : contrast.py
# @Software: PyCharm
import time
from influxdb import InfluxDBClient
from db_tool import getInfoToSqlAll, insert
from main import sql_db

"""
select * from env_data_his_dust_meter_2 where mn = '20200409000010'
mysql->总数据为637849-查询时间为-19.649017333984375
sqlite->总数据为637849-查询时间为-6.131999254226685
influxdb->总数据为636689-查询时间为-7.540003776550293

select * from env_data_his_dust_meter_2 where mn = '20200409000010' and create_time > '2021-10-01 00:00:00'
mysql->总数据为193088-查询时间为-7.801991701126099
sqlite->总数据为193088-查询时间为-1.8469734191894531
influxdb->总数据为192484-查询时间为-2.0109972953796387
"""
def mysql_vs_sqlite():
    # #mysql
    t1 = time.time()
    sql = "select * from env_data_his_dust_meter_2 where mn = '20200409000010' and create_time > '2021-10-01 00:00:00' "
    result = getInfoToSqlAll(sql)
    t2 = time.time()
    print(f"mysql->总数据为{len(result)}-查询时间为-{t2 - t1}")
    #
    # result = []
    # #sqlite
    t1 = time.time()
    sd = sql_db()
    sql = "select * from env_data_his_dust_meter_2 where mn = '20200409000010' and create_time > '2021-10-01 00:00:00' "
    result = sd.get(sql)
    t2 = time.time()
    print(f"sqlite->总数据为{len(result)}-查询时间为-{t2 - t1}")

    #influxdb
    t1 = time.time()
    client = InfluxDBClient(host='192.168.1.10', port=8086, username='admin', password='admin', database='mydb')
    result = client.query("select * from env_data_his_dust_meter where mn = '20200409000010' and time > '2021-10-01 00:00:00' ")
    t2 = time.time()
    print(f"influxdb->总数据为{len(list(result.get_points()))}-查询时间为-{t2 - t1}")

if __name__ == '__main__':
    mysql_vs_sqlite()


标签:00,使用,influxdb,默认,InfluxDB,time,print,安装
From: https://blog.51cto.com/u_16015778/6401412

相关文章

  • 使用 wkhtmltopdf python html转pdf
    使用wkhtmltopdfpythonhtml转pdf文章目录使用wkhtmltopdfpythonhtml转pdf前言一、环境二、安装与配置1.首先安装pdfkit0.612.pythonhtml转pdf3.url转pdf遇到的问题总结前言使用wkhtmltopdfpythonhtml转pdf。一、环境pdfkit0.61python3.7二、安装与配置1.首先安装pdfk......
  • python 使用 openpyxl 操作 excel
    python使用openpyxl操作excel文章目录python使用openpyxl操作excel前言1.环境2.读取数据3.openpyxl前言二、使用zipfile、openpyxl、flask批量导出excelzip1.环境openyxl:3.0.6python:3.7.6pandas:1.3.52.读取数据#使用pandas读取数据#https://pandas.pydata.org/docs......
  • 使用you-get下载网站视频
    使用you-get下载网站视频you-get是一个跨平台命令行视频、音频与图像下载工具,支持常用的各种多媒体网站。文章目录使用you-get下载网站视频一、安装先决条件1.pip安装2.通过[Antigen](https://github.com/zsh-users/antigen)安装(适用于Zsh用户)3.GitHub下载4.GitHub克隆5.升级二......
  • 仙境传说RO:从零开始编译服务端开发环境搭建安装Pandas-rAthena
    仙境传说RO:从零开始编译服务端开发环境搭建安装Pandas-rAthena大家好,我是艾西今天跟大家分享下仙境传说RO开发脚本环境搭建。Pandas是RO的模拟器实际上是开源的一个叫做rAthenna的一个开源项目准备工具:Git2.25.0Setup建议放入D盘以免后期的麻烦(默认配置就好)TortoiseGit2.9.0.0......
  • Ubuntu 使用笔记
    Ubuntu使用笔记这篇学习笔记将用于记录本人在使用Ubuntu系统过程中的学习心得,它会被存储在在https://github.com/owlman/study_note项目的OperatingSystem/UNIX-like/Linux/目录下一个名为的Distribution目录中。使用Linux的动机和理由第一,非IE浏览器市场成熟了,比如网......
  • 安装.NET Framework4.5以上版本受阻怎么办?
    安装和卸载.NETFramework受阻疑难解答-.NETFramework|MicrosoftLearnWindowsRT8.1、Windows8.1和WindowsServer2012R2更新:2014年4月-Microsoft支持以上是安装.NETFramework4.5以上版本,遇到错误时的参考地址。......
  • 安装timesten(18.1.4)
    环境:OS:Centos7DB:18.1.4 1.下载软件包地址地址:https://edelivery.oracle.com/osdc/faces/SoftwareDelivery我这里下载的是V1035435-01.zip 2.解压到相应目录我这里是解压后迁移到/opt/目录[root@localhostcc]#unzipV1035435-01.zip[root@localhostcc]#unziptimes......
  • CentOS 7安装部署咖啡壶 chemex 开源资产管理系统
    一、简介    咖啡壶chemex是一款开源、高颜值的IT资产管理平台。资产管理、归属、追溯、盘点以及轻量的服务器状态面板。支持导出导入、LDAP、自定义字段等。    由于公司目前暂时没有资产管理系统平台,公司的网络设备类资产都是通过Excel表格来进行统计和维护,整个过程全靠......
  • 微软自动化框架Playwright学习和使用-脚本录制和回访过程
    接上回,可以使用 playwright inspector 来进行脚本录制。今天就说下具体的录制步骤。playwright inspector都会显示出来。   1.点击PlaywrightInspector中的 Record按钮,开始录制  2.点击 Record按钮后,Record按钮显示为红色,代表已经开始录制了。这时将鼠标移动到要测......
  • thinkphp安装使用教程
    1.thinkphp介绍thinkphp是php的开源框架,可以方便、快捷地开发web项目,项目运行在服务器上。实际使用thinkphp开发web项目时,需要将项目部署在Linux服务器上,涉及php、mysql安装配置等,在学习thinkphp时,可以有两种方案方案1:拥有实体服务器或者云服务器,可直接配置框架相关环境,进行学......