基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐

基于Promethues与Grafana的Greenplum分布式数据监控的实现

标签(空格分隔): greenplum系列


[toc]

一:前言

Greenplum是面r v J [ 2 q 1 j数据仓库应用的分布式关系型MPP数据库G L J k #基于PostgreSQL开发,跟PostgreSQL的兼容性非常好,大部分PostgreSQL客户端工具及PostgreSQL应用都能运行在Greenplum平台上。GPCC是Gre6 d i i v @enplum数据库官方商业版的数据库监控软件,对于只能用得起开源的用户来说,只能考虑其他的监控方案了。本文里介绍一种基于Promethues与Grafana的Greenplum分布式数据库i M J %控的实现方案。

二、Promethues与Grafana简介

2.1、Prometheus简介

Promethk & N ? j P { X WeuM - | Q s ~ Ss是由SoundCloud开发的开源监控[ f 8 0报警系统和时序列数据库(TSDB),使用Go语言开发。Prometheus目前在开源社区相当活跃。Pro5 w (metheus性能也足够支撑上万台规模的集群。其架构图如下:

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐

Prometheus Server, 负责从 Exporter 拉取和存储监控数据,并提供一套灵活的查^ y A询语言(PromQL)供用户使用。
Exporter, 负责收集目标; W , R对象(host, container…)的性能数据,并通过 HTTP 接口供 Prometheus Server 获取。
可视化组件,监控数据的可视化展现对于监控方案至关重要。以前 Prometheus 自己开发了一套工具,不过后来废弃了,因为开源社区出现了更为优秀的产品 Grafana。
Grafana 能够与 Prometheus 无缝集成,提供完美的数据展示能力。
Alertmanager,用户可以定义基于监控数据的告警规则,* M { v J规则会触发告警。一旦 Alermanager 收到告警,会通过预定义的方式发出告警通知。支持的方式包括 Email、Pa1 } % z b agerDuty、Webhook 等.

2.2、- r U 3Grafana简介

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:
1、展示方式* ` x d:快速灵活的@ w R ) 5 h & n {客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式O B @ S;
2、数据源:Graphite,InfluxDB,OpenTSDB,Promethe# o @ O ~ X Cus,Elasticsearch,CloudWatch和KairosDB等;
3、通知提醒:以可视方式定义最重要指标的警报规则,GS n w % P 6rafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至m Z N G 7 $ C ,自定义数据源;
5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

三、Greenplum监控的实现

3.1 greenplum的监控

Greenplum的监控可类似于PostgreSQL } +  } 5 c T w来实现,但又存在差异,不同点在于:
要实现一个Greenplum的Exporter指标采集器a = i ;;
使用Grafana绘p U n 6 W w X Q制一个可视化状态图;
基于Prometheus配置报警规则(w ) w z N本文此部分略);

3.2 greeplum 的grafana的采集

这里类比PostgreSQL数据库的Exporter实现方法,实现了一个Greenplum的ExQ % r k $ & o ? ]porter,项目地址为:
https://github.cN X 8  Y & =om/tan^ b & z 5 L f !gyibo/greenplum| [ p r E U R_exporter
在W v # J & { O cgreenplum_expoter里主Z ^ J ~要扩展了实现了客户连接信息、账号连接信息、Segment存储信息、集群节点同步状态、数据库锁监控等相关指标,具D [ :体指标如下:

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐

四:prometheus 的安装:

Pt y * w [ m B Lrometheus本身也是一个导出器(exporter)a Z p T,提供了关于内存使用0 ! & T ^ _ - + D、垃圾收集以及自身性能
与健康状态等各种主机级指标。
prometheus官网下载址:
https://prometheus.io/download/
wget https://github.com/prometheus/prometheus/release/ ^ t a B cs/download/v2.21.0/prometheus-2.21.0.linux-aF 6 Y ; p 0 [md64.tar.gz
# tar xf prometheU O 8 - v ^us-2.21.0.linux-amd64.tar.gz
# mv prometheus-2.21.0.linux-amd64 /usr/local/prometheus
# chmod +x /usr/local/prometheus/prom*
# cp -rp /usr/local/proN ` _ L i z S J *metheus/promtool /usr/bin/

cd /usr/local/prometheus/
vim prometheu0 |  - es.yml
-----
# 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 def& ? 2 , Sault is every 1 minute.
# scrape_tim$ 3 d & &eout is set to tq $ 4 $he global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rul* w c N 7es once and period= * ? ^ : ^ , :ically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rulo { i X 8 !es.` + i v Nyml"
# A5 i + ; scrape configuration containing exactly one endpoint to scrape:
# Here i! 3 Qt's Prometheus itself.
scrape_configs:c ~ ? (
# The job nV . ] O 6 lame is added as0 , ! 1 1 D ? R V a label `job=<job_name>` to any timeseries scraped from this config.
- job_name:J Q I O v D  'prometheus'
# metrics_path defaults to '/metrics'
# scheme defauN | s z : Olts to 'http'6 h w y.
static_configs:
- targets: [) x  9 }'localhost:909& [ S C C w0']
- job_name: 'greenplum'
static_configs:
- targets: ['192.168.100.11:9297']
labels:
app: master01
nodename: node01} ? b k , z 6 8.flyfish.cn
role: master
- targets: ['192.168.100.12:9297']
labels:
app: node02
nodena, M j / G ,me: node02.flyfish.cn
role: standby
- targets: ['192.168.100.13:9297']
labels:
app: node03
nodename: node03.flyfish.cn
role: node
- targets: ['192.168.100.14:X G U Q9298 g = 3 p W -7']
labels:
app: node04
nodename: node04.flyfish.cn
r* @ [ : dole: node
- targets: ['192.168.100.15:9297']
labels:
app: node05
nodename: node05.{ i Z L c I sflyfish.cn
role: node
-----

启动:
cd /usr/local/prometheus/
./prometheus --config.file=prometheus.yml &

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐

五:安装Greenplum-Expoter

1、下载安装包
wget https://github.com.cnpmjs.org/tangyibo/greenplum_e7 h m v } 7 * w Dxporter/releases/download/1.0/greenplum_exporter-1.0-1.x86_64.rpm
rpm -ivh greenplum_exporter-1.0-1.x86_64.rpm

2、配置数据库连接
修改vim /etc/systemd/system/3 s Ygreenplum_exporter.service文件中配置的greenplum数据库服务器的地址和gpadmin账号的密码。
----
[Unit]
Descripr A [tion=greenplum2 : A  g ] # g exporteV - E b  Hr
After=network.target
[Service]
Type=simple
User=prometheus
Environmei R 1 Tnt=GPDB_DATA_D , Z RSOURCE_URL=postgres://gpadmin:gpadm% z j i ]in@192.168.100.11:5432/postgres?sslmode=disaz q r 9ble
ExecStart=/usr/local/greenplum_exporJ 1 U U  ! |ter/bin/greenplum_exporter -h & E } / B x-log.levt  7 T L v /el=error
Restart=on-failure
[Install]
WantedBy=multi-usc t G P 3er.ta7 ^ z ^ l N W hrget
----

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐


启动Expoter程序
----
systD 8 8 z Cemctl daemon-reload
systemctln A / & start greenplum_exporter
systemctl status greenplum_exporter
----

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐


重启:promethues
ps -e@ x Sf |gre# - 6p promethus
kill -9 31 J y21
./r : C { u Fprometheus --config.file=prometheusO 6 t G.yml

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐


六: 安装 gr $ Q ( l ?afana

1、下载:
wget https://dl.grafana.com/oss/release Y R K z G x +/grafana-7.1.5-1.x86_64.rpm
rpm -ivh grafana-7# 9 G | ; T.1.5-1.x86_64.rpm
systemctl start grafana-sek 8 5 H d k ` H trver

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐


5、访问
访问地址:http://192.168.100.16:3000
用户名:admin
密码:admin

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐


使用Grafana绘制一个可视化状k ^ ( , ^ ? | @ [态图
根据以上监测指标,即可使用Grafana配置图Y ? h {像了,具体内容请见:
将下面中的数据
https://gitR 9 /  y Z 1 )hub.com/tangyibo/greenplum_e_ } : Z Bxporter/blob/master/grafana/gL [ 6 q ] I 0 4reenplu@ / x 9 Rm_dashboard.json
中配置的内容粘贴到上图红色框框内,点击load按钮加载。

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐

基于Promethues与Grafana的Greenplum分布式数据库监控的实现荐