快速入门
本文介绍TSDB对接Prometheus方法。
前提条件
已购买(升级)TSDB实例。若2019年4月15日前购买的实例,可通过阿里云工单系统提工单,进行TSDB实例升级。
配置VPC网络。
确认Prometheus所在机器能够正常访问TSDB实例。
使用HTTP访问TSDB实例的地址,如果能够得到包含”Welcome to use the TSDB”的字符串,表示Prometheus所在机器能够正常访问TSDB实例。
操作步骤
安装Prometheus。
Prometheus用Golang实现,因此具有天然可移植性(支持Linux、Windows、macOS和Freebsd)。这里直接使用预编译的二进制文件部署,开箱即用。
Prometheus在不同操作系统下的二进制安装包,可以通过Prometheus的GitHub仓库下载,详情请参见GitHub仓库。这里以Linux系统为例进行安装,具体步骤如下。
Prometheus安装
wget https://github.com/prometheus/prometheus/releases/download/v2.3.0/prometheus-2.3.0.linux-amd64.tar.gz tar -zxvf prometheus-2.3.0.linux-amd64.tar.gz mv prometheus-2.3.0.linux-amd64 /usr/local/prometheus
验证安装
cd /usr/local/prometheus/ ./prometheus --version
若出现以下信息,表示安装成功
prometheus, version 2.3.0 (branch: HEAD, revision: 290d71791a507a5057b9a099c9d48703d86dc941) build user: root@d539e167976a build date: 20180607-08:46:54 go version: go1.10.2
配置Prometheus。
修改Prometheus配置
以TSDB实例的公网地址为ts-xxxxxxxxxxxx.hitsdb.rds.aliyuncs.com:3242为例。
在prometheus.yaml中添加以下内容。
# Remote write configuration (TSDB). remote_write: - url: "http://ts-xxxxxxxxxxxx.hitsdb.rds.aliyuncs.com:3242/api/prom_write" # Remote read configuration (TSDB). remote_read: - url: "http://ts-xxxxxxxxxxxx.hitsdb.rds.aliyuncs.com:3242/api/prom_read" read_recent: true
说明上面的配置中,“read_recent: true”表示近期数据也要读远程存储。因为Prometheus近期数据无论如何都是要读本地存储的,如果开启这个标志位,Prometheus会把本地和远程的数据进行Merge。开启这个标志位,可以方便验证读取远程TSDB是否正常工作。如果正式在生产环境,可以根据实际情况将“read_recent: true”去掉,可提升Prometheus的查询性能。
Prometheus完整的示例配置如下所示。
# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] # Remote write configuration (TSDB). remote_write: - url: "http://ts-xxxxxxxxxxxx.hitsdb.rds.aliyuncs.com:3242/api/prom_write" # Remote read configuration (TSDB). remote_read: - url: "http://ts-xxxxxxxxxxxx.hitsdb.rds.aliyuncs.com:3242/api/prom_read" read_recent: true
注意这里的配置仅仅是快速入门用,针对不同规格的TSDB实例,我们提供了Prometheus写入配置的最佳实践,用于实现Prometheus平稳的将监控样本数据写入TSDB,详情请参考Prometheus Remote Write配置的内容。
启动Prometheus
./promtheus
若出现以下信息,则表示启动成功。
level=info ts=2019-04-15T10:39:12.870828882Z caller=main.go:222 msg="Starting Prometheus" version="(version=2.3.0, branch=HEAD, revision=290d71791a507a5057b9a099c9d48703d86dc941)" level=info ts=2019-04-15T10:39:12.870926993Z caller=main.go:223 build_context="(go=go1.10.2, user=root@d539e167976a, date=20180607-08:46:54)" level=info ts=2019-04-15T10:39:12.870971602Z caller=main.go:224 host_details="(Linux 4.9.93-010.ali3000.alios7.x86_64 #1 SMP Fri Apr 20 00:18:51 CST 2018 x86_64 common-dev100081116006.eu95sqa (none))" level=info ts=2019-04-15T10:39:12.871010623Z caller=main.go:225 fd_limits="(soft=655350, hard=655350)" level=info ts=2019-04-15T10:39:12.872103134Z caller=main.go:514 msg="Starting TSDB ..." level=info ts=2019-04-15T10:39:12.87214458Z caller=web.go:426 component=web msg="Start listening for connections" address=0.0.0.0:9090 level=info ts=2019-04-15T10:39:12.877363461Z caller=main.go:524 msg="TSDB started" level=info ts=2019-04-15T10:39:12.877417508Z caller=main.go:603 msg="Loading configuration file" filename=prometheus.yml level=info ts=2019-04-15T10:39:12.879382462Z caller=main.go:500 msg="Server is ready to receive web requests."
写入和读取验证。
写入验证
通过TSDB实例的管理控制台界面的实例监控界面,观察写入的TPS是否有所变化来验证。刚开始没有任何数据写入时,写入的TPS为0,当TPS开始从0变为正数时,则说明Prometheus已经将数据上报到了TSDB中。
查询验证
本文提供Prometheus的示例配置中Prometheus监控指标采集目标是prometheus本身,因此这里以Prometheus采集到自身的一个监控指标“go_memstats_gc_cpu_fraction”为例进行查询认证,结果如下图所示。