1 简介
在InfluxDB1.x中,提供了对Prometheus远程写入API的支持。InfluxDB2.0版本没有提供支持相同的API。然而,随着Telegraf 1.19的发布,Telegraf现在包含了一个Prometheus远程写解析器,可用于摄取这些指标并将其输出到InfluxDB 1.x或InfluxDB2.0。
2 安装influxdb2
2.1 下载influxdb2
可以去官方提供的地址选择合适版本
https://repos.influxdata.com/rhel/7/x86_64/stable/
wget https://repos.influxdata.com/rhel/7/x86_64/stable/telegraf-1.31.0-1.x86_64.rpm
wget https://repos.influxdata.com/rhel/7/x86_64/stable/influxdb2-2.7.10-1.x86_64.rpm
2.2 安装influxdb2
yum localinstall -y influxdb2-2.7.10-1.x86_64.rpm
#配置文件中的配置项非常少
#BoltDB数据库的路径。BoltDB是用Go编写的键值存储。InfluxDB使用BoltDB存储数据,包括组织和用户信息、UI数据、REST资源和其他键值数据。
#持久存储引擎文件的路径,InfluxDB在磁盘上存储所有时间结构合并树(TSM)数据。
2.3 启动influxdb2服务
systemctl start influxdb.service
systemctl status -l influxdb.service
2.4 配置influxdb2
第一步我们安装并启动好Influxdb数据库之后,接下来就是配置数据库,默认是没有用户名密码的,我们可以通过配置界面进行初始化配置。
1. 访问InfluxDB2管理界面,ip:8086 ,将会出现以下界面:
http://192.168.137.128:8086
2、点击GET STARTED按钮进入到用户配置界面,填写用户名/密码,Organization Name(工作区组织名称),填写Bucket Name,Bucket相当于Mysql数据库的库名。
3、点击CONTINUE按钮之后会出现一个api token记住这个token,在api调用时需要用到
4、点击QUICK START 按钮,就可以进入到Influxdb后台管理界面了
5、修改数据清理策略
配置完账号密码可以通过api查看配置
http://192.168.137.128:8086/api/v2/config
{
"config": {
"assets-path": "",
"bolt-path": "/var/lib/influxdb/influxd.bolt",
"e2e-testing": false,
"engine-path": "/var/lib/influxdb/engine",
"feature-flags": null,
"flux-log-enabled": false,
"hardening-enabled": false,
"http-bind-address": ":8086",
"http-idle-timeout": 180000000000,
"http-read-header-timeout": 10000000000,
"http-read-timeout": 0,
"http-write-timeout": 0,
"influxql-max-select-buckets": 0,
"influxql-max-select-point": 0,
"influxql-max-select-series": 0,
"instance-id": "",
"log-level": "info",
"metrics-disabled": false,
"nats-max-payload-bytes": 0,
"nats-port": 0,
"no-tasks": false,
"pprof-disabled": false,
"query-concurrency": 1024,
"query-initial-memory-bytes": 0,
"query-max-memory-bytes": 0,
"query-memory-bytes": 0,
"query-queue-size": 1024,
"reporting-disabled": false,
"secret-store": "bolt",
"session-length": 60,
"session-renew-disabled": false,
"sqlite-path": "/var/lib/influxdb/influxd.sqlite",
"storage-cache-max-memory-size": 1073741824,
"storage-cache-snapshot-memory-size": 26214400,
"storage-cache-snapshot-write-cold-duration": "10m0s",
"storage-compact-full-write-cold-duration": "4h0m0s",
"storage-compact-throughput-burst": 50331648,
"storage-max-concurrent-compactions": 0,
"storage-max-index-log-file-size": 1048576,
"storage-no-validate-field-size": false,
"storage-retention-check-interval": "30m0s",
"storage-series-file-max-concurrent-snapshot-compactions": 0,
"storage-series-id-set-cache-size": 0,
"storage-shard-precreator-advance-period": "30m0s",
"storage-shard-precreator-check-interval": "10m0s",
"storage-tsm-use-madv-willneed": false,
"storage-validate-keys": false,
"storage-wal-fsync-delay": "0s",
"storage-wal-max-concurrent-writes": 0,
"storage-wal-max-write-delay": 600000000000,
"storage-write-timeout": 10000000000,
"store": "disk",
"strong-passwords": false,
"template-file-urls-disabled": false,
"testing-always-allow-setup": false,
"tls-cert": "",
"tls-key": "",
"tls-min-version": "1.2",
"tls-strict-ciphers": false,
"tracing-type": "",
"ui-disabled": false,
"vault-addr": "",
"vault-cacert": "",
"vault-capath": "",
"vault-client-cert": "",
"vault-client-key": "",
"vault-client-timeout": 0,
"vault-max-retries": 0,
"vault-skip-verify": false,
"vault-tls-server-name": "",
"vault-token": ""
}
}
2.5 安装telegraf
yum localinstall -y telegraf-1.31.0-1.x86_64.rpm
2.6 配置telegraf
vim /etc/telegraf/telegraf.conf
#配置HTTP侦听器的端口及其侦听路径
[[inputs.http_listener_v2]]
# ## Address and port to host HTTP listener on
service_address = ":12345"
# ## Paths to listen to.
paths = ["/receive"]
# ## Data format to consume.
data_format = "prometheusremotewrite"
#添加InfluxDB输出插件
[[outputs.influxdb_v2]]
urls = ["http://192.168.137.128:8086"]
token = "jfAlf3UtdbT1sZqWMKaMrxVTUwPS8lSqZW0VHmyCgpk60WbNCod_uynF8k8w_at7qb2zfjtfiVKNkUIOKOSUrg=="
organization = "prometheus"
bucket = "prometheus"
2.7 启动telegraf
systemctl start telegraf.service
systemctl status telegraf.service -l
3 配置prometheus使用influxdb
1、配置prometheus
remote_write:
- url: "http://192.168.137.128:12345/receive"
2、重新加载prometheus
curl -X POST http://192.168.137.131:9090/-/reload
4 数据查看
5 配置grafana使用influxdb2
官网只写了如何从prometheus写入到influxdb,没写远程读取,配置grafana直接使用influxdb2作为数据源
数据查询
from(bucket: "prometheus")
|> range(start: v.timeRangeStart, stop:v.timeRangeStop)
|> filter(fn: (r) =>
r._measurement == "prometheus_remote_write" and
r._field == "znode_count"
)