zoukankan      html  css  js  c++  java
  • InfluxDB部署和使用

      InfluxDB的安装方式非常简单,直接从官网下载rpm包后,安装就行

    # influxdb时序数据库安装包
    wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpm
    
    # 采集和上报工具
    wget https://dl.influxdata.com/telegraf/releases/telegraf-1.14.5-1.x86_64.rpm
    
    # 图形化管理系统
    wget https://dl.influxdata.com/chronograf/releases/chronograf-1.8.4.x86_64.rpm
    
    # 实时数据分析和处理
    wget https://dl.influxdata.com/kapacitor/releases/kapacitor-1.5.5-1.x86_64.rpm
    

      InfluxDB软件包提供的几个程序

    influx:命令行工具
    infulxd:服务器程序
    influx_inspect:数据检查工具
    influx_stress:压力测试工具
    influx_tsm:数据库格式转换工具
    

      Influx命令参数

    # 显示程序版本
    -version
    # 指定要连接主机的地址/主机名
    -host 'host name'
    # 指定连接主机的端口号  
    -port 'port #'
    # 以socket方式连接influxdb
    -socket 'unix domain socket'
    # 指定要连接的数据库名
    -database 'database name'
    # 认证密码
    -password 'password'
    # 认证用户
    -username 'username'
    # 启用https连接
    -ssl
    # 当使用https连接到集群时,不使用ssl验证
    -unsafeSsl
    # 直接执行命令
    -execute 'command'
    # 指定调用REPL时使用的查询语言
    -type 'influxql|flux'
    # 指定服务器响应数据的格式
    -format 'json|csv|column'
    # 指定时间戳格式,支持rfc3339、h、m、s、ms、u、ns       
    -precision 'rfc3339|h|m|s|ms|u|ns'
    # 指定写入一致性级别
    -consistency 'any|one|quorum|all'
    # 以友好的方式显示JSON
    -pretty
    # 从之前的备份文件中还原备份数据
    -import
    # 设置数据导入时每秒允许导入多少条时序数据,默认0,不做限制
    -pps
    # 需要还原的备份文件存储路径
    -path
    # 设置为true时,表示支持导入压缩格式的备份文件
    -compressed
    

      Influxd命令参数

    # 数据备份
    backup
    #显示influxd的默认配置信息
    config
    #显示帮助信息
    help
    #还原之前通过backup命令备份的数据
    restore
    #运行程序,默认参数
    run
    #显示influxd的版本信息
    version
    

      InfluxDB配置文件

    # 配置是否上报influxdb使用信息到usage.influxdata.com,默认false
    reporting-disabled = false
    # RPC服务监听地址,用于数据备份通信等,默认监听8088端口
    bind-address = "127.0.0.1:8088"
    
    # META节点配置信息如下
    [meta]
    # META数据和raft数据库的存储目录
      dir = "/data/influxdb/meta"
    # 是否在创建数据库时创建默认保留策略autogen,默认true
      retention-autocreate = true
    # 是否开启META日志,默认true
      logging-enabled = true
    
    # DATA节点配置信息如下
    [data]
    # TSM文件存储目录
      dir = "/data/influxdb/data"
    # 分片索引类型
      index-version = "inmem"
    # WAL文件存储目录
      wal-dir = "/data/influxdb/wal"
    # 在同步写入之前等待的总时间,默认0秒
      wal-fsync-delay = "0s"
    # 检查写请求中的表名、标签键、标签值是否具有有效的UNICODE字符,会影响性能,默认false
      validate-keys = false
    # 是否开启日志查询,默认true
      query-log-enabled = true
    # 分片缓存最大值,超过该值时拒绝写入,默认1G,单位byte
      cache-max-memory-size = 1073741824
    # 设置快照大小,超过该值会写入到TSM格式的文件中,默认25MB
      cache-snapshot-memory-size = 26214400
    # TSM引擎快照写入磁盘延时,默认10分钟
      cache-snapshot-write-cold-duration = "10m0s"
    # TSM文件在压缩前可以存储的最大时间,默认4小时
      compact-full-write-cold-duration = "4h0m0s"
    # TSM压缩写入磁盘的速率限制(字节/秒)
      compact-throughput = 50331648
    # TSM压缩写入磁盘的峰值速率限制(字节/秒)
      compact-throughput-burst = 50331648
    # 设置数据库的时间序列最大值,0不限制,默认100000
      max-series-per-database = 1000000
    # 设置一个标签键对应标签值的最大数量,0不限制,默认100000
      max-values-per-tag = 100000
    # TSM压缩的最大并发数,默认0
      max-concurrent-compactions = 0
    # WAL文件压缩到TSI索引文件的阀值,默认1M,字节
      max-index-log-file-size = 1048576
    # TSI索引引擎用于存放处理后的时序结果的内部缓存大小
      series-id-set-cache-size = 100
    # TSM引擎和WAL模块的调试日志记录,提供了更详细的输出,默认false
      trace-logging-enabled = false
    # 如果为true,MMAP的建议值MADV_WILLNEED会提供给内核
      tsm-use-madv-willneed = false
    
    # Coordinator配置信息如下
    [coordinator]
    # 写超时阈值,默认值为10秒
      write-timeout = "10s"
    # 最大并发查询数,默认0,不限制
      max-concurrent-queries = 0
    # 查询操作超时阈值,默认0,不限制
      query-timeout = "0s"
    # 慢查询超时阈值,超时后生成一条慢查询日志,默认0秒,禁用该功能
      log-queries-after = "0s"
    # 一次select操作可以处理的最大时序数据记录条数,默认0,不限制
      max-select-point = 0
    # 一次select操作可以处理的最大时间序列线数量,默认0,不限制
      max-select-series = 0
    # 一次select操作可以创建的group by时间段的最大数量,默认0,不限制
      max-select-buckets = 0
    
    # 保留策略配置信息如下
    [retention]
    # 是否开启保留策略功能,默认为true
      enabled = true
    # 检查时间间隔,默认30分钟
      check-interval = "30m0s"
    
    # 分片预创建配置信息如下
    [shard-precreation]
    # 是否开启分片预创建服务,默认true
      enabled = true
    # 检查时间间隔,默认10分钟
      check-interval = "10m0s"
    # 创建分片组的最大提前时间间隔,默认30分钟
      advance-period = "30m0s"
    
    # Monitor配置信息如下
    [monitor]
    # 是否开启monitor功能,默认true
      store-enabled = true
    # 默认数据库名
      store-database = "_internal"
    # 统计时间间隔,默认10秒
      store-interval = "10s"
    
    # subscriber配置信息如下
    [subscriber]
    # 是否开启subcriber服务,默认true
      enabled = true
    # HTTP通信超时阈值,默认时间30秒
      http-timeout = "30s"
    # 是否准许接入自签名证书的HTTPS连接,默认false
      insecure-skip-verify = false
    # 设置CA证书的存储目录
      ca-certs = ""
    # 设置并发数,默认40
      write-concurrency = 40
    # 设置写缓存大小,默认1000
      write-buffer-size = 1000
    
    # HTTP服务配置信息如下
    [http]
    # 是否开启HTTP服务
      enabled = true
    # HTTP服务绑定地址端口
      bind-address = ":8086"
    # 是否开启认证,默认false
      auth-enabled = true
    # 是否开启http请求日志,默认true
      log-enabled = true
    # 当启用HTTP请求日志时,是否关闭HTTP写请求日志
      suppress-write-log = false
    # 是否开启写操作日志,如果打开,每一次写操作都会打开日志,默认false
      write-tracing = false
    # 是否开启flux查询协议,默认false
      flux-enabled = false
    # 是否开启flux查询日志,默认false
      flux-log-enabled = false
    # 是否开启pprof,默认true
      pprof-enabled = true
    # 是否开启pprof并绑定localhost:6060,默认false
      debug-pprof-enabled = false
    # 是否启用HTTPS功能,默认false
      https-enabled = false
    # 设置HTTPS证书的路径
      https-certificate = "/etc/ssl/influxdb.pem"
    # 设置HTTPS私钥的存储路径
      https-private-key = ""
    # 配置查询返回最大行数,默认0,不限制
      max-row-limit = 0
    # 配置最大连接数,默认0,不限制
      max-connection-limit = 0
    # 用于JWT签名的共享秘钥,无默认值
      shared-secret = ""
    # 配置realm,默认值为InfluxDB
      realm = "InfluxDB"
    # 是否启用socket通信,默认false
      unix-socket-enabled = false
    # socket权限
      unix-socket-permissions = "0777"
    # socket路径
      bind-socket = "/var/run/influxdb.sock"
    # 客户端请求主体的最大值,以字节为单位
      max-body-size = 25000000
    # HTTP请求日志的存储目录
      access-log-path = ""
    # 并发处理的写请求的最大数量,默认0,不限制
      max-concurrent-write-limit = 0
    # 排队等待处理的写请求的最大数量,默认0,不限制
      max-enqueued-write-limit = 0
    # 在队列中等待处理的写请求超时阈值,单位秒
      enqueued-write-timeout = 30000000000
    
    # logging配置信息如下
    [logging]
    # 日志格式,默认auto,其他可选格式logfmt和json
      format = "auto"
    # 日志级别,默认info,其他可选级别error、warn、debug
      level = "info"
    # 当程序启动时,是否禁用打印LOGO信息,默认false
      suppress-logo = false
    
    #Graphite接入配置信息如下
    [[graphite]]
    # 是否启用该模块,默认false
      enabled = false
    # 绑定地址
      bind-address = ":2003"
    # 数据库名称
      database = "graphite"
    # 配置保留策略
      retention-policy = ""
    # 通信协议
      protocol = "tcp"
    # 批处理阈值,默认值5000
      batch-size = 5000
    # 在内存中等待批处理的最大数
      batch-pending = 10
    # 批处理等待阈值,默认1秒
      batch-timeout = "1s"
    # 一致性级别
      consistency-level = "one"
    # 多个表名间的连接符
      separator = "."
    # UDP读缓存的大小,0表示使用操作系统提供的值
      udp-read-buffer = 0
    
    # CollectD接入配置信息如下
    [[collectd]]
    # 是否启用该模块,默认false
      enabled = false
    # 绑定地址
      bind-address = ":25826"
    # 数据库名
      database = "collectd"
    # 配置保留策略
      retention-policy = ""
    # 批处理阈值,默认5000
      batch-size = 5000
    # 在内存中等待处理的阈值,默认10
      batch-pending = 10
    # 批处理等待阈值,默认10秒
      batch-timeout = "10s"
    # UDP读缓存的大小,默认0,使用操作系统提供的值
      read-buffer = 0
    # DB文件存放的位置
      typesdb = "/usr/share/collectd/types.db"
    # 安全级别,默认none
      security-level = "none"
    # 认证文件存放位置
      auth-file = "/etc/collectd/auth_file"
    # 处理方式split和join
      parse-multivalue-plugin = "split"
    
    # OPENTSDB配置信息如下
    [[opentsdb]]
    # 是否启用该模块
      enabled = false
    # 绑定地址
      bind-address = ":4242"
    # 存储数据库名
      database = "opentsdb"
    # 保留策略
      retention-policy = ""
    # 一致性级别,默认one
      consistency-level = "one"
    # 是否开启TLS,默认false
      tls-enabled = false
    # 证书存放路径
      certificate = "/etc/ssl/influxdb.pem"
    # 批处理阈值,默认1000
      batch-size = 1000
    # 在内存中等待批处理的最大数
      batch-pending = 5
    # 批处理等待阈值,默认1秒
      batch-timeout = "1s"
    # 当检测到数据格式异常时,输出错误日志,默认true
      log-point-errors = true
    
    # UDP配置信息如下
    [[udp]]
    # 是否启用该模块,默认false
      enabled = true
    # 绑定地址
      bind-address = ":8089"
    # 数据库名称
      database = "udp"
    # 保留策略
      retention-policy = ""
    # 批处理阈值,默认5000
      batch-size = 5000
    # 在内存中等待批处理的最大数,默认10
      batch-pending = 10
    # UDP读缓存的大小,默认0,使用操作系统提供的值
      read-buffer = 0
    # 批处理等待阈值,默认1秒
      batch-timeout = "1s"
    # 解析时间戳的精确值,默认纳秒
      precision = ""
    
    # 连续查询配置信息如下
    [continuous_queries]
    # 是否开启日志,默认true
      log-enabled = true
    # 是否启用该模块,默认true
      enabled = true
    # 是否记录连续查询执行的统计信息,默认false
      query-stats-enabled = false
    # 连续查询定是运行的时间间隔,默认1秒
      run-interval = "1s"
    
    # TLS配置信息如下
    [tls]
    # 支持TLS协议的最低版本
      min-version = ""
    # 支持TLS协议的最高版本
      max-version = ""
    

      线上配置

    [meta]
      dir = "/data/influxdb/meta"
      logging-enabled = true
    [data]
      dir = "/data/influxdb/data"
      wal-dir = "/data/influxdb/wal"
      series-id-set-cache-size = 100
    [coordinator]
      query-timeout = "10s"
      log-queries-after = "10s"
    [retention]
    [shard-precreation]
    [monitor]
    [http]
      enabled = true
      flux-enabled = true
      flux-log-enabled = true
      bind-address = ":18086"
      auth-enabled = true
      log-enabled = false
      access-log-path = ""
    [logging]
      format = "auto"
      level = "warn"
      suppress-logo = true
    [subscriber]
    [[graphite]]
    [[collectd]]
    [[opentsdb]]
    [[udp]]
      enabled = true
      bind-address = ":8089"
      database = "udp"
      retention-policy = ""
    [continuous_queries]
    [tls]  

      认证授权

    # 开启认证需要在配置文件中开启
    [http]
    auth-enabled = true
    
    # 创建管理员账户
    > create user admin with password '123456' with all privileges
    > show users
    
    # 创建普通用户
    > create user tony with password '1234556'
    
    # 授权
    # GRANT [READ,WRITE,ALL] [ON <DATABASE>] TO <USERNAME>
    # 赋予读、写权限时必须指定数据库
    # ALL表示所有权限,如果不指定数据库表示赋予超级管理员权限,如果指定数据库,表示赋予数据库的所有权限
    # 赋予tony超级管理员权限
    > GRANT ALL TO 'tony'
    # 赋予tony对influx数据库的读权限
    > GRANT READ ON 'influx' TO 'tony'
    
    # 查看授权
    > SHOW GRANTS FOR tony
    
    # 取消授权
    # REVOKE [READ,WRITE,ALL] [ON <DATABASE>] FROM <USERNAME>
    # 取消tony的超级管理员权限
    > REVOKE ALL FROM 'tony'
    
    # 修改密码
    > SET PASSWORD FRO 'tony' = '123456'
    
    # 删除用户
    > DROP USER 'tony'
    

      influxdb运行日志

    systemctl方式启动的influxdb,运行日志是由journalctl接管,想要查看日志可以使用journalctl -u influxdb查看

    https://docs.influxdata.com/influxdb/v1.8/troubleshooting/frequently-asked-questions/#where-can-i-find-influxdb-logs

       命令行执行SQL

    #查询
    $ influx -port 18086 -host 127.0.0.1 -username admin -password 123456 -database 'jiande' -execute 'SELECT * FROM machine_alert_log' 
    
    #插入
    #what:表名
    #machine_id,msg_code:带索引的键
    #create_time,id,msg_value,serial_num:不带索引的键
    $ influx -port 18086 -host 127.0.0.1 -username admin -password 123456 -database 'jiande' -execute 'insert what,machine_id=110,msg_code=yes create_time=1587214268123,id=666,msg_value=0,serial_num=0'
    

      备份恢复

    # 备份 influxd backup
    # -portable:在线备份
    # -database:指定数据备份
    # PATH:备份文件的目录
    $ influxd backup -portable -database jiande /data/backup/
    
    #恢复 influxd restore 
    # -portable:在线恢复
    # -database:指定数据库
    # PATH:恢复文件的目录
    $ influxd restore -portable -database jiande /data/back/
    

      数据保留策略(注意:删除之前的保留策略会一并删除之前保留策略下的数据,如果不想删除之前的数据要使用alter修改策略)

    # https://cloud.tencent.com/developer/article/1546922
    # 查看数据库的保留策略
    > show retention policies on telegraf
    name    duration shardGroupDuration replicaN default
    ----    -------- ------------------ -------- -------
    autogen 0s       168h0m0s           1        true
    
    name 策略名称:默认autogen
    duration 持续时间: 0s 代表无限制
    shardGroupDuration shardGroup数据存储时间:shardGroup是InfluxDB的一个基本存储结构, 应该大于这个时间的数据在查询效率上应该有所降低。
    replicaN 副本个数:1 代表只有一个副本
    default 是否默认策略:true 代表设置为该数据库的默认策略
    
    # 查看保留策略下的数据
    > select * from "autogen".cpu limit 2;
    
    # 新建一个策略
    CREATE RETENTION POLICY "策略名称" ON 数据库名 DURATION 时长 REPLICATION 副本个数;
    
    # 新建一个策略并且直接设置为默认策略
    CREATE RETENTION POLICY "策略名称" ON 数据库名 DURATION 时长 REPLICATION 副本个数 DEFAULT;
    > CREATE RETENTION POLICY "role_01" ON telegraf DURATION 1h REPLICATION 1 DEFAULT;
    
    # 修改策略
    ALTER RETENTION POLICY "策略名称" ON "数据库名" DURATION 时长 SHARD DURATION 时长
    ALTER RETENTION POLICY "策略名称" ON "数据库名" DURATION 时长 SHARD DURATION 时长 DEFAULT
    
    # 删除策略
    drop retention POLICY "策略名" ON "数据库名"
    

      

      

      

      

      

      

    初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
  • 相关阅读:
    java 简单的spring boot 服务器和文件上传接口(exceeds its maximum报错)
    nodeJs 远程服务器的部署和简单静态Web服务器
    Electron 搭建文件浏览器
    Electron项目的搭建和electron-builder打包
    Nexus搭建私服
    fiddler 抓包工具,抓取微信公众号直播回放视频; blob视频下载;微信视频号内容抓取
    二进制的原码,反码,补码,移码
    《RocketMQ源码系列》mq启动流程
    一条查询sql执行流程
    《springboot源码系列》——内置tomcat启动原理
  • 原文地址:https://www.cnblogs.com/forlive/p/13224946.html
Copyright © 2011-2022 走看看