开始一个软件,从读懂它的配置文件开始。以下是读取3.1配置文档的笔记
总结来说,influxdb的配置文件可配置的地方几乎没有。参数性能调优貌似不存在,其中是否开启,是否记录日志都占据了好多部分。额外需要关注的是data章节有一些关于fsync的设置默认是0,还有默认的max-series-per-database和max-value-per-tag默认都存在限制。暂时不太清楚原理是什么(更新:因为influxdb最大的软肋就在series的数量上。tag的数据都保存在内存。所以有极大的限制。可以看到官方硬件要求,100万的series需要4-6核心CPU,8-32GB内存,iops要求1000+。对比一下influxdb提供的云服务,100万的series需要每月1500刀!!!)。当保存大量数据的时候肯定会报错,另外默认的慢查询日志是没有打开的。对于请求。默认没有限制最大的返回内容数。以及限制单个查询响应的时间

使用配置文件

  • 使用influxd config查看默认的配置
  • 使用influxd -config config_path或者INFLUXDB_CONFIG_PATH启动

环境变量

配置优先级为: 环境变量 > 文件配置 > 默认设置

全局选项

  1. reporting-disabled 发送数据统计给influxdb
  2. bind-address 绑定监听地址(RPC)
  3. GOMAXPROCS 最大进程数

[meta]

  1. dir meta数据保存地址(一般设置一个base_dir)
  2. retention-autocreate 自动创建保留策略。默认永久保留
  3. logging-enabled 开启meta日志记录

[data]

  1. dir 数据保存地址
  2. index-version 决定分片索引保存内存还是磁盘
  3. wal-dir 预写日志保存地址
  4. wal-fsync-delay 预写日志刷新延迟(非ssd磁盘建议0-100ms)
  5. trace-logging-enabled TSM引擎和WAL日志
  6. query-log-enabled 是否记录查询日志
  7. cache-max-memory-size 最大缓存容量,占满会拒绝写入
  8. cache-snapshot-memory-size 缓存快照大小。满后会将内存内容写入到TSM文件
  9. cache-snapshot-write-cold-duration 如果一个分片没有被写入或者删除会被写入到TSM文件的时间
  10. compact-full-write-cold-duration 同上,没有写入或者删除的压缩时间
  11. max-concurrent-compactions 并发压缩进程数
  12. max-series-per-database 每个数据库最大的series数量。超过会500错误。0表示无限制(为什么需要限制呢?)
  13. max-values-per-tag 每个tag索引的值个数(同疑问为什么限制为十万)

[coordinator]

  1. write-timeout 写入超时时间10秒
  2. max-concurrent-queries 最大并发查询数默认无限制
  3. query-timeout 查询超时时间默认无限制
  4. log-queries-after 慢查询检测。为慢查询则记录日志
  5. max-select-point 最大的points数量。默认无限制
  6. max-select-series 最大的series数量。默认无限制
  7. max-select-buckets 最大的GROUP BY time()数量。默认无限制

[retention]

  1. enable 设置为false则禁止删除数据
  2. check-interval 检查周期默认三十分钟

[shard-precreation]

  1. enable 开启数据到达前先创建shard
  2. check-interval 检查周期
  3. advance-period 预创建shard的最大时间

[admin]

官方完全废弃,不可用。由xx替代(注:还是用grafana吧)

[monitor]

系统自身监控。默认数据会保存到_internal数据库

  1. store-enabled 是否存储监控信息
  2. store-database 保存数据库的名称
  3. store-interval 记录间隔。默认十秒

[subscriber]

这个部分是控制Kapacitor如何接收数据。应该没什么用处

  1. enabled
  2. http-timeout
  3. insecure-skip-verify
  4. ca-certs
  5. write-concurrency
  6. write-buffer-size

[http]

除了RPC调用。就是RESTFUL方式的api读写了

  1. enable 是否打开
  2. bind-address 绑定地址
  3. auth-enabled 打开验证
  4. realm JWT验证相关
  5. log-enabled 记录日志
  6. write-tracing 应该是调试使用。会记录写入的payload
  7. pprof-enabled 开启性能记录
  8. https-enabled 开启https
  9. https-certificate https证书
  10. https-private-key https私钥
  11. shared-secret 用于JWT的签名。想想单机应该是用不到的
  12. max-row-limit 最大单次可以上传的point,默认无限制
  13. max-connection-limit 最大可连接数,默认无限制
  14. unix-socket-enabled 开启unix域连接
  15. bind-socket 绑定socket域
  16. max-body-size 最大body长度,默认25MB,超过大小返回http413请求实体过大错误

[[graphite]]

(service plugin)设置一个或多个graphite数据监听器

  1. enabled 启用graphite
  2. database  数据库名称
  3. retention-policy 保留策略
  4. bind-address 绑定地址
  5. protocol 协议tcp或udp
  6. consistency-level 一致性级别
  7. batch-size
  8. batch-pending
  9. batch-timeout
  10. udp-read-buffer
  11. separator

[[collectd]]

(service plugin)同上,设置监听collectd数据

  1. enabled
  2. bind-address
  3. database
  4. retention-policy
  5. typesdb
  6. security-level
  7. auth-file
  8. batch-size
  9. batch-pending
  10. batch-timeout
  11. read-buffer

[[opentsdb]]

(service plugin)同上,设置监听opentsdb数据

  1. enabled
  2. bind-address
  3. database
  4. retention-policy
  5. consistency-level
  6. tls-enabled
  7. certificate
  8. log-point-errors
  9. batch-size
  10. batch-pending
  11. batch-timeout

[[udp]]

(service plugin)除了RPC、HTTP、附带UDP

  1. enabled
  2. bind-address
  3. database
  4. retention-policy
  5. batch-size
  6. batch-pending
  7. batch-timeout
  8. read-buffer
  9. precision

[continuous_queries]

持续查询

  1. enabled  开启
  2. query-stats-enabled 默认关闭,将执行统计写入到默认的监控数据库
  3. log-enabled 记录日志
  4. run-interval 查找执行间隔