说明
prometheus-postgresql-adapter
最新版本是2018-10-17
发布的v0.4.1
- 不保证
ctrl+c
和ctrl+v
能直接跑起来 - 仅用于验证功能
- 记录实验操作过程
实验环境
主机名 | IP地址 | 说明 |
---|---|---|
timescaledb | 172.16.80.201 | 部署TimescaleDB和prometheus-postgresql-adapter |
prometheus | 172.16.80.202 | 部署prometheus和node_exporter |
部署TimescaleDB
参考文档
添加YUM源
- 使用清华大学的RPM文件
1 | yum install -y https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm |
- 替换YUM源地址
1 | sed -e 's,download.postgresql.org/pub,mirrors4.tuna.tsinghua.edu.cn/postgresql,g' -i /etc/yum.repos.d/pgdg-redhat-all.repo |
安装PostgreSQL10
1 | yum install -y postgresql10 \ |
安装TimescaleDB
1 | yum install -y timescaledb_10 |
安装pg_prometheus
- 安装编译环境
1 | yum install -y postgresql10-devel make gcc make |
- 下载源代码
1 | wget -O - https://github.com/timescale/pg_prometheus/archive/0.2.1.tar.gz | tar xz |
- 切换目录
1 | cd pg_prometheus-0.2.1 |
- 编译安装
1 | export PATH=/usr/pgsql-10/bin:$PATH |
初始化数据库
- 切换到
postgres
用户
1 | su - postgres |
- 初始化数据库
1 | /usr/pgsql-10/bin/initdb --encoding=UTF-8 \ |
配置数据库
postgresql.conf
最重要的是添加
shared_preload_libraries = 'timescaledb, pg_prometheus'
1 | ----------------------------- |
pg_hba.conf
1 | TYPE DATABASE USER ADDRESS METHOD |
启动数据库
1 | systemctl enable postgresql-10.service |
创建Prometheus数据库
- 登录数据库
1 | psql -U postgres |
- 创建用户
1 | CREATE ROLE prometheus WITH LOGIN PASSWORD 'prometheus_password'; |
- 创建数据库
1 | create database prometheus owner prometheus; |
- 切换数据库
1 | \connect prometheus ; |
- 添加Extension
1 | CREATE EXTENSION pg_prometheus; |
- 授权
1 | grant all on SCHEMA prometheus TO prometheus; |
- 创建表
只使用pg_prometheus
1 | SELECT create_prometheus_table('metrics'); |
TimescaleDB可以实现时序数据库的功能,带来更强的性能和可扩展性。
如果postgresql已经安装了TimescaleDB的Extension,则会自动启用TimescaleDB。
可以显式的让pg_prometheus使用TimescaleDB扩展。
1 | SELECT create_prometheus_table('metrics',use_timescaledb=>true); |
部署Adapter
下载二进制文件
1 | wget -O - https://github.com/timescale/prometheus-postgresql-adapter/releases/download/0.4.1/prometheus-postgresql-adapter-0.4.1-linux-amd64.tar.gz | tar xz |
拷贝到PATH目录
1 | mv prometheus-postgresql-adapter /usr/local/bin/ |
创建systemd服务
- /usr/lib/systemd/system/prometheus-postgresql-adapter.service
1 | [Unit] |
启动Adapter
1 | systemctl daemon-reload |
部署Prometheus
参考文档
环境准备
1 | 创建prometheus配置目录 |
下载软件包
1 | wget -O - https://github.com/prometheus/prometheus/releases/download/v2.9.2/prometheus-2.9.2.linux-amd64.tar.gz | tar xz |
拷贝到PATH目录
1 | cd prometheus-2.9.2.linux-amd64 |
配置prometheus
- /etc/prometheus/prometheus.yml
1 | global: |
创建systemd服务
- /usr/lib/systemd/system/prometheus.service
1 | [Unit] |
启动prometheus
1 | systemctl daemon-reload |
部署node_exporter
下载软件包
1 | wget -O - https://github.com/prometheus/node_exporter/releases/download/v0.18.0/node_exporter-0.18.0.linux-amd64.tar.gz | tar xz |
拷贝到PATH目录
1 | cd node_exporter-0.18.0.linux-amd64 |
创建systemd服务
- /usr/lib/systemd/system/node_exporter.service
1 | [Unit] |
启动node_exporter
1 | systemctl daemon-reload |
测试验证
查看Adapter日志
1 | journalctl -u prometheus-postgresql-adapter.service -f |
输出示例
1 | Month Day HH:mm:ss timescaledb prometheus-postgresql-adapter[6953]: node_xfs_block_map_btree_records_inserted_total{device="sda1",instance="localhost:9100",job="node-exporter"} 0 1563284554124 |
查看网卡ens33总流量
PromQL
1 | node_network_transmit_bytes_total{device="ens33"} |
SQL
1 | prometheus=> SELECT time, value AS "total transmitted bytes" |
输出示例
1 | time | total transmitted bytes |
查系统最近24小时的5min平均负载
PromQL
只能返回一个值
1 | node_load5 |
SQL
1 | prometheus=> SELECT time_bucket('5 minutes', time) AS five_min_bucket, name, avg(value) |
输出示例
1 | five_min_bucket | name | avg |