docker部署Prometheus+Grafana+node-exporter

Prometheus

Prometheus介绍

Prometheus(普罗米修斯)是一个开源的系统监控和报警系统。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。

Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。

Prometheus应该是为数不多的适合Docker、Kubernetes环境的监控系统之一。

输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus。

高效的存储,每个采样数据占3.5 bytes左右,300万的时间序列,30s间隔,保留60天,消耗磁盘大概200G

Prometheus组件

  • • Prometheus Server: 用于收集和存储时间序列数据

  • • Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。

  • • Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端,所有向promtheus server提供监控数据的程序都可以被称为exporter

  • • Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。

  • • Grafana:监控仪表盘,可视化监控数据

  • • pushgateway: 各个目标主机可上报数据到pushgateway,然后prometheus server统一从pushgateway拉取数据。

docker部署Prometheus+Grafana+node-exporter
image.png

从上图可发现,Prometheus整个生态圈组成主要包括prometheus server,Exporter,pushgateway,alertmanager,grafana,Web ui界面,Prometheus server由三个部分组成,Retrieval,Storage,PromQL

  • • Retrieval负责在活跃的target主机上抓取监控指标数据

  • • Storage存储主要是把采集到的数据存储到磁盘中

  • • PromQL是Prometheus提供的查询语言模块。

Prometheus工作流程

1)Prometheus server可定期从活跃的(up)目标主机上(target)拉取监控指标数据,目标主机的监控数据可通过配置静态job或者服务发现的方式被prometheus server采集到,这种方式默认的pull方式拉取指标;也可通过pushgateway把采集的数据上报到prometheus server中;还可通过一些组件自带的exporter采集相应组件的数据;

2)Prometheus server把采集到的监控指标数据保存到本地磁盘或者数据库;

3)Prometheus采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的报警发送到alertmanager

4)Alertmanager通过配置报警接收方,发送报警到邮件,微信或者钉钉等

5)Prometheus 自带的web ui界面提供PromQL查询语言,可查询监控数据

6)Grafana可接入prometheus数据源,把监控数据以图形化形式展示出来

实战

环境

服务器 部署应用
本地mac Prometheus,Grafana,node-exporter
centos node-exporter

本地机器部署Prometheus+Grafana+node-exporter,远程服务器也部署一个node-exporter。

docker部署Prometheus+Grafana+node-exporter
image.png

部署node-exporter

本地机器环境搭建


# 本地创建node-exporter,生产可加上 --restart=always 
docker run -d -p 9100:9100 
  -v "/Users/dongfengfan/docker/node-exporter/proc:/host/proc:ro" 
  -v "/Users/dongfengfan/docker/node-exporter/sys:/host/sys:ro" 
  -v "/Users/dongfengfan/docker/node-exporter/:/rootfs:ro" 
  --name node-exporter 
  prom/node-exporter
 
# 远程centos创建node-exporter,生产可加上 --restart=always 
docker run -d -p 9100:9100 
  -v "/root/docker/node-exporter/proc:/host/proc:ro" 
  -v "/root/docker/node-exporter/sys:/host/sys:ro" 
  -v "/root/docker/node-exporter/:/rootfs:ro" 
  --net="host" 
  --name node-exporter 
  prom/node-exporter

查看node-exporter是否部署成功 访问 http://127.0.0.1:9100/metrics

docker部署Prometheus+Grafana+node-exporter
image.png
docker部署Prometheus+Grafana+node-exporter
image.png

部署Prometheus

创建 prometheus.yml

global:
  scrape_interval:     60s
  evaluation_interval: 60s
 
scrape_configs:
  - job_name: prometheus
    static_configs:
        #本地服务器加端口
      - targets: ['localhost:9090']
        labels:
          instance: prometheus
 
  - job_name: localhost-node-exporter
    static_configs:
        #监控本地服务器ip+端口,因为是本地docker启动,所以ip使用host.docker.internal
      - targets: ['host.docker.internal:9100']
        labels:
          instance: localhost-node-exporter
  - job_name: myaliyun
    static_configs:
      #监控远程服务器
      - targets: ['139.196.45.28:9100']
        labels:
          instance: myaliyun

启动prometheus

docker run  -d 
  -p 9090:9090 
  -v /Users/dongfengfan/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  
  --name prometheus 
  prom/prometheus

访问http://127.0.0.1:9090/targets,三个任务已经全部监控上了

docker部署Prometheus+Grafana+node-exporter
image.png

部署Grafana

mkdir /Users/dongfengfan/docker/grafana

docker run -d 
  -p 3000:3000 
  --name=grafana 
  -v /Users/dongfengfan/docker/grafana:/var/lib/grafana 
  --name grafana 
  grafana/grafana

访问 http://127.0.0.1:3000/
默认会先跳转到登录页面,默认的用户名和密码都是admin
登录之后,它会要求你重置密码。你还可以再输次admin密码

docker部署Prometheus+Grafana+node-exporter
image.png

进入首页点击 Add data source

docker部署Prometheus+Grafana+node-exporter
image.png

选择Prometheus

docker部署Prometheus+Grafana+node-exporter
image.png

配置url为Prometheus地址,我这里因为Grafana和Prometheus都部署在本地docker,所以访问ip使用host.docker.internal

docker部署Prometheus+Grafana+node-exporter
image.png

拉到最下面选择 save & test

# Node Exporter for Prometheus Dashboard 中文版

访问地址:https://grafana.com/grafana/dashboards/8919/revisions
我下载了两个比较下有啥不同

docker部署Prometheus+Grafana+node-exporter
image.png

导入数据

docker部署Prometheus+Grafana+node-exporter
image.png

上传模版

docker部署Prometheus+Grafana+node-exporter
image.png

到这里基本就结束了,我们来看一下效果。

docker部署Prometheus+Grafana+node-exporter
image.png
docker部署Prometheus+Grafana+node-exporter
image.png
docker部署Prometheus+Grafana+node-exporter
image.png
docker部署Prometheus+Grafana+node-exporter
image.png

后面有时间再出一篇文章,如何监控mongo,redis,mysql等中间件。

更多技术文章可以查看我的博客地址:http://fandf.top


原文始发于微信公众号(好好学技术):docker部署Prometheus+Grafana+node-exporter

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/219687.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!