[prometheus]基于influxdb2实现远端存储
前言
Prometheus自带的时序数据库胜在使用方便,缺点在于难以维护,如果数据有问题,可能需要删除存储目录、重建目录再重启Prometheus,才能恢复正常。而且Prometheus自带的时序数据库不适合存储大量历史数据,也无法灵活扩展。为此,Prometheus提供了远端存储的方案,可以将数据存储到InfluxDB、OpenTSDB等时序数据库中。
在InfluxDB 2之前,InfluxDB提供远端写的API供Prometheus直接写数据,InfluxDB 2之后,需要通过 telegraf 才能将 Prometheus的监控数据存储到 InfluxDB 中。
环境
- Prometheus版本:2.38
- InfluxDB版本:2.3.0
- Telegraf版本:1.23
- node_exporter版本:1.3.1
- Grafana版本:8.3.3
- 系统版本:CentOS 7
- docker版本:19.03
安装influxdb
- docker拉取镜像
docker pull influxdb:2.3.0
- 生成配置文件
# 创建挂载目录
mkdir -p /home/apps/influxdb/{conf,data}
docker run --rm influxdb:2.3.0 influxd print-config > /home/apps/influxdb/conf/config.yml
- 创建容器
docker run --name influxdb -p 8086:8086 \
-v /home/apps/influxdb/data:/var/lib/influxdb2 \
-v /home/apps/influxdb/conf/config.yml:/etc/influxdb2/config.yml \
-d influxdb:2.3.0
- 浏览器访问 IP:8086 ,配置账户、bucket等。并获取token
安装telegraf
- docker拉取镜像
docker pull telegraf:1.23
- 生成配置文件
mkdir -p /home/apps/telegraf/conf
docker run --rm telegraf:1.23 telegraf config > /home/apps/telegraf/conf/telegraf.conf
- 修改配置文件,示例。主要是 "
outputs.influxdb_v2
"、"inputs.http_listener_v2
"和"inputs.prometheus
"这三块配置,其它都是默认的。篇幅限制,默认的注释全部删了,可导出默认配置后自行查看。默认未注释“outputs.influxdb
”,需要注释掉。
[global_tags]
[agent]
interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "0s"
flush_interval = "10s"
flush_jitter = "0s"
precision = "0s"
hostname = ""
omit_hostname = false
[[outputs.influxdb_v2]]
urls = ["http://192.168.0.20:8086"]
token = "gXnmZO4ILBSHa0eivemfvXEz6EiAtv8kktKxn7Hz2sQ6ItUtfbyjCaRiSStIFJDzUV2wR2cfUE8Dkb6yLN1bIQ=="
organization = "rainux"
bucket = "prometheus"
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
core_tags = false
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.diskio]]
[[inputs.kernel]]
[[inputs.mem]]
[[inputs.processes]]
[[inputs.swap]]
[[inputs.system]]
[[inputs.http_listener_v2]]
service_address = ":1234"
paths = ["/receive"]
data_format = "prometheusremotewrite"
[[inputs.prometheus]]
urls = ["http://192.168.0.20:9100/metrics"]
- 创建容器
docker run -p 1234:1234 \
-v /home/apps/telegraf/conf/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
--name=telegraf -d telegraf:1.23
安装prometheus
- docker或者二进制安装都行。这里用的二进制安装方式,安装比较简单,此处不再赘述,可参考底部的链接"搭建基本的Prometheus监控系统"。prometheus.yml配置示例如下。
# my global config
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["192.168.0.20:9090"]
remote_write:
- url: "http://192.168.0.20:1234/receive"
- 启动prometheus
nohup /home/apps/prometheus/prometheus --config.file=/home/apps/prometheus/prometheus.yml --web.listen-address=:9100 > /dev/null 2>&1 &
安装node_exporter
- docker或者二进制安装都行。这里用的二进制安装方式,安装比较简单,此处不再赘述,可参考底部的链接"搭建基本的Prometheus监控系统"。
- 启动
nohup /home/apps/node_exporter/node_exporter --web.listen-address=":9090" > /dev/null 2>&1 &
安装grafana
- docker安装
docker pull grafana/grafana:latest
docker -p 3000:3000 --name grafana grafana/grafana:latest
- 使用默认账密 admin/admin 在浏览器登录grafana的控制台。(IP:3000)
- 添加prometheus的数据源
- 导入ID为10242的dashboard(其它ID:12633)
参考
- 简书 - rekca - prometheus+influxdb2.0+grafana打造监控系统
- 官方文档 - telegraf - v1.23 configuration
- 官方文档 - Prometheus Remote Write Support with InfluxDB 2.0
- Rainux - 搭建基本Prometheus监控系统
- 陈金窗、刘政委、张其栋、郑少斌 - 《Prometheus监控技术与实践》,机械工业出版社
本文来自博客园,作者:花酒锄作田,转载请注明原文链接:https://www.cnblogs.com/XY-Heruo/p/16610259.html