Heron+Prometheus+Grafana实现集群可视化监测

写在前面

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.

image

如上,我们在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的使用见其文档,使用的参考见:

  1. https://blog.csdn.net/hfut_wowo/article/details/78536022
  2. 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简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值