Greenplum监控解决方案
基于Prometheus+Grafana+greenplum_exporter+node_exporter实现
关联图
一、基本概念
1.Prometheus
Prometheus时序数据库:存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合,lPrometheus Server, 负责从 Exporter 拉取和存储监控数据,并提供一套灵活的查询语言(PromQL)供用户使用。
lExporter, 负责收集目标对象(host, container…)的性能数据,并通过 HTTP 接口供 Prometheus Server 获取。
l可视化组件,监控数据的可视化展现对于监控方案至关重要。以前 Prometheus 自己开发了一套工具,不过后来废弃了,因为开源社区出现了更为优秀的产品 Grafana。Grafana 能够与 Prometheus 无缝集成,提供完美的数据展示能力。
lAlertmanager,用户可以定义基于监控数据的告警规则,规则会触发告警。一旦 Alermanager 收到告警,会通过预定义的方式发出告警通知。支持的方式包括 Email、PagerDuty、Webhook 等。
2. Grafana 介绍
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。
1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
2、支持数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
3、通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
二、Greenplum监控的实现
2.1Prometheus安装
源码编译安装(推荐官网https://prometheus.io/download/)
2.1.1下载源码包文件
$ cd usr/local/src/tools/ #自定义文件下载目录
命令下载(服务器可访问外网状态)
$ wget https://github.com/prometheus/prometheus/releases/download/v2.27.1/prometheus-2.27.1.linux-amd64.tar.gz
注:下载到本地通过第三方工具上载到服务器指定位置(服务器不可访问外网)
解压文件到自定义目录
tar -zxvf prometheus-2.27.1.linux-amd64.tar.gz -C /usr/local/
mv prometheus-2.27.1.linux-amd64/ prometheus #修改文件名便于管理
cd /usr/local/prometheus/
解压后文件目录
2.1.2创建用户用于管理启动prometheus服务
$ groupadd prometheus
$ useradd -g prometheus -m -d /var/lib/prometheus -s /sbin/nologin prometheus
$ chown prometheus.prometheus -R /usr/local/prometheus
2.1.3启动prometheus
注:启动方式有以下两种建议选择第二种执行方式便于管理服务
1.直接执行prometheus命令
cd /usr/local/prometheus
nohup ./prometheus &
ps -ef | grep prometheus #检查后台进程
##### 2.配置系统systemd服务
(注:如启动失败查看当前系统服务启动日志cat /var/log/messages 如已按上述命令启动需kill掉当前后台运行进程才能重新运行下列启动命令)
cat > /usr/lib/systemd/system/prometheus.service <<EOF
[Unit]
Description=prometheus
After=network.target
[Service]
Type=simple #默认
User=prometheus #管理启动用户
ExecStart=/usr/local/prometheus/prometheus -- config.file=