写在前面
Heron虽然提供了Heron UI这种可视化界面,但它只是很基础的一个拓扑管理和资源查看页面。Heron提供了可扩展的可视化接口,可以使用其他已经成熟的可视化工具,对Heron的各种监测指标进行可视化,支持例如:Prometheus等组件。这里使用Proemtheus+Grafana组件的结合,实现Heron集群的可视化监测。
原文创建于:20180821
Prometheus的下载和安装
Prometheus是一个成熟的可视化组件,支持自定义显示模板等多种可视化模式。而且,Heron也支持该组件的使用,因此这里首先在集群中的一台主机中进行Prometheus的安装和配置,这里选择的为Master节点。详细的Prometheus的介绍见:Prometheus DOC。
1. 下载和解压。在该下载地址中,下载对应OS的安装文件后,放置到自己合适的目录(Ubuntu),我这里放置的为:/home/yitian/prometheus:
将下载后的文件解压至当前目录中:
tar xvfz prometheus-*.tar.gz
2. 查看默认的配置文件。默认的配置文件位于解压目录的中的:prometheus.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 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: 'heron-prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
使用默认的配置,可以直接启动prometheus监测当前节点本地的一些系统资源,之后与Heron的集成也是通过该配置文件进行的。
3. 启动Prometheus server。命令如下:
yitian@heron01:~$ cd prometheus/prometheus-2.3.2.linux-amd64/
yitian@heron01:~/prometheus/prometheus-2.3.2.linux-amd64$ ./prometheus --config.file=prometheus.yml
启动完成后,Prometheus默认的访问端口为9090,在地址栏查看:http://localhost:9090 后出现如下页面:
此外,Prometheus提供了默认的监测绘图功能,只是绘制的图形比较ugly,如下:
至此,Prometheus的安装就已经完成了,后面将会进行Grafana的安装以及与Prometheus之间的集成,以使用Grafana的可视化功能美化和可用prometheus提供的监测数据。
Heron metrics sink的配置
Heron中可以指定自定义的Metrics Sink,也可以使用Heron默认提供的Prometheus metrics sink。这里使用默认的Prometheus metrics sink进行设置。步骤如下:
1. 在.heron/conf/local/metrics_sinks.yaml中,将prometheus_sink加入到文件开头的sinks列表中。
yitian@heron01:~$ cat .heron/conf/local/metrics_sinks.yaml
########### These all have default values as shown
# We would specify the unique sink-id first
sinks:
- file-sink
- tmaster-sink
- metricscache-sink
- prometheus-sink # 新加入的sink
2. 在metrics_sink.yaml文件中,去掉Prometheus_sink的配置参数注释:
### Config for prometheus-sink
prometheus-sink:
class: "com.twitter.heron.metricsmgr.sink.PrometheusSink"
port: 8080 # The port on which to run (either port or port-file are mandatory)
path: /metrics # The path on which to publish the metrics (mandatory)
flat-metrics: true # By default the web-sink will publish a flat "name -> value" json map
include-topology-name: true # Include topology name in metric name (default false)
metrics-cache-max-size: 1000000 # Max number of metrics cached and published (default 1000000)
metrics-cache-ttl-sec: 600 # Time in seconds after which a metric that was collected will stopped being published (default 600)
3. 配置heron-tracker配置文件:上述配置完成后,需要在.heron/conf/heron_tracker.yaml文件中,修改viz.url.format的路径,将该路径设置为对应的prometheus_sink的路径和端口,如下:
# This is a sample, and should be changed to point to corresponding dashboard.
#
# viz.url.format: "http://127.0.0.1/${CLUSTER}/${ENVIRON}/${TOPOLOGY}/${ROLE}/${USER}"
# 指定sink的端口和路径,分别是8080 /metrics
viz.url.format: "http://heron01:8080/metrics/${CLUSTER}/${ENVIRON}/${TOPOLOGY}/${ROLE}/${USER}"
4. 重启heron-tracker,查看heron-ui和prometheus的URL(需在之前确保prometheus已启动),Heron中Prometheus metrics sink的URL为:heron01:8080/metrics.
如上,我们在Heron中开启了Prometheus metrics sink,之后我们需要将Heron提供的prometheus sink与Prometheus进行整合。
整合Heron Prometheus sink和Prometheus
1. 修改Prometheus中的prometheus.yml配置文件(上述内容中提到的):
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'heron-prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['heron01:8080'] # 修改默认配置,改为现在的heron提供的Prometheus-sink的URL
注意:这里不需要在heron01:8080后面加上/metrics的后缀,因为默认会添加。
2. 重启Prometheus的服务:Ctrl+C杀死原有的进程,重新运行启动命令即可。
yitian@heron01:~/prometheus/prometheus-2.3.2.linux-amd64$ ./prometheus --config.file=prometheus.yml
3. 查看Prometheus的URL
在Prometheus的页面中可以看到Heron提供的一些监测信息已经显示成功了。这里就完成了Heron+Prometheus的整合,但使用Prometheus原始的graph页面绘制的监测图不太可用,下面进行Grafana的安装和整合。
Grafana的安装和使用
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它可以使用Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等作为数据源,并具有快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式等多种展示方式。同时支持Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
这里正是将Grafana用于Heron和Prometheus整合后的数据源,进行使用。这里只是介绍开始的使用方式,更深入的使用需要自己进行探索。
1. Grafana的下载和安装。
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.1.3_amd64.deb
sudo apt-get install -y adduser libfontconfig
sudo dpkg -i grafana_5.1.3_amd64.deb
2. 启动grafana服务:
sudo service grafana-server start
3. Web登录,grafana默认端口为3000,默认用户名和密码都是admin。http://heron01:3000.
4. 配置Prometheus为Grafana的数据源:
进行完如上操作,即可完成Prometheus+Grafana+Heron的集群可视化监测的工作。但Grafana中的使用仍需要一些操作,如下为经过整理后的Grafana dashboard:
详细Grafana的使用见其文档,使用的参考见:
- https://blog.csdn.net/hfut_wowo/article/details/78536022
- https://www.cnblogs.com/jugglee/p/8392015.html
在Heron+Prometheus+Grafana的集成后,有时需要node-exporter与Prometheus的整合,以监测集群中各个工作节点的资源使用情况。该部分内容如下:
下载安装node-exporter
1. 下载node-exporter,因为它是与Prometheus配合使用的,因此下载地址为:https://prometheus.io/download/。下载后解压至如下目录:
yitian@heron01:~/prometheus/node_exporter$ tar xvzf node_exporter-0.16.0.linux-amd64.tar.gz
2. 启动node-exporter,启动命令很简单,进入解压后的目录运行:
yitian@heron01:~/prometheus/node_exporter/node_exporter-0.16.0.linux-amd64$ ./node_exporter
3. 在浏览器中查看,node-exporter的默认端口为:9100,地址为:http://heron01:9100.
整合node-exporter和Prometheus
1. 编辑Prometheus的配置文件,配置node-exporter的url内容:
# 在原有内容的基础上添加如下内容
- job_name: 'node-exporter'
static_configs:
- targets: ['heron01:9100']
其中targets中列出的为配置了node-exporter的各个主机。如果集群中多台主机需要监测资源使用,则在target列出所有主机即可,例如:
- job_name: 'node-exporter'
static_configs:
- targets: ['heron02:9100','heron03:9100','heron04:9100','heron05:9100','heron06:9100','heron07:9100','heron08:9100','heron09:9100','heron10:9100','heron11:9100']
2. 重新启动Prometheus,方式同上。
3. 查看Prometheus的target:
此时,node-exporter与Prometheus的整合配置完成。这时,由于Grafana已经与Prometheus整合完成,可以直接到Grafana中设置node-exporter的数据显示面板。
总结相关URL记录
因为上涉及的各个组件中的默认端口很多,因此这里进行了一下汇总:
- Prometheus:heron01:9090
- Heron prometheus metrics sink: heron01:8080
- Grafana: heron01:3000
- Node exporter: heron01:9100
资料参考
- Prometheus下载:https://prometheus.io/download/
- Prometheus安装:https://prometheus.io/docs/prometheus/latest/getting_started/
- 使用Prometheus显示化监测Heron(Local) Topology运行时状态
- https://apache.github.io/incubator-heron/docs/operators/observability/prometheus/
- https://www.ibm.com/developerworks/cn/cloud/library/cl-lo-prometheus-getting-started-and-practice/index.html
- https://blog.csdn.net/u011537073/article/details/77455492
- Grafana dashboard的导入导出:https://blog.csdn.net/jailman/article/details/78957719