hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

你必需晓得的容器监控 (3) Prometheus

2019-11-18杂谈搜奇网46°c
A+ A-

本篇已到场《.NET Core on K8S进修实践系列文章索引》,可以点击检察更多容器化手艺相干系列文章。上一篇引见了Google开辟的容器监控东西cAdvisor,然则其供应的操纵界面较为大略,且不支撑监控多Host,实用性有待进步。因而,本篇会引见一个盛行的生产级监控东西,不,正确说来应当是一个监控计划,它就是Prometheus!

# 试验环境:阿里云ECS主机(两台),CentOS 7.4

一、Prometheus简介

1.1 关于Prometheus

  Prometheus是由SoundCloud开辟的开源监控体系的开源版本。2016年,由Google提议的云原生基金会CNCF (Cloud Native Computing Foundation) 将其归入为其第二大开源项目(第一大开源项目是Kubernetes)。Prometheus供应了一整套的包含监控数据汇集存储处置惩罚可视化和告警完全解决计划

  Prometheus官网地点:https://prometheus.io/

  Prometheus GitHub:https://github.com/prometheus/prometheus/

1.2 Prometheus架构

  Prometheus在其官方github上贴出的其架构图以下:  

   为了更轻易明白这个架构,这里我们采纳园友Cloud Man(他也是本文参考资料《天天5分钟玩转Docker》作者)总结的下图,它去掉了一些部份,只保存了最重要的组件,可以协助我们防止注重力疏散。

   从上图看来,我们偏重须要关注以下几个中心组件:

  (1)Prometheus Server:担任从Exporter中拉取和存储监控数据,并供应一套查询言语(PromQL)供用户运用。

  (2)Exporter:担任网络目的对象(如Host或Container)的机能数据,并经由过程HTTP接供词Prometheus Server猎取。

  (3)可视化组件 Grafana:猎取Prometheus Server供应的监控数据并经由过程Web UI的体式格局圆满展现数据。

  (4)AlertManager:担任依据告警划定规矩和预定义的告警体式格局发出比方Email、Webhook之类的告警。

1.3 Prometheus数据模型

  Prometheus 中存储的数据为时候序列,是由 metric 的名字和一系列的标签(键值对)唯一标识的,差别的标签则代表差别的时候序列。

  • metric 名字:该名字应当具有语义,平常用于示意 metric 的功用,比方:http_requests_total, 示意 http 要求的总数。个中,metric 名字由 ASCII 字符,数字,下划线,以及冒号构成,且必需满足正则表达式 [a-zA-Z_:][a-zA-Z0-9_:]*。
  • 标签:使同一个时候序列有了差别维度的辨认。比方 http_requests_total{method="Get"} 示意一切 http 要求中的 Get 要求。当 method="post" 时,则为新的一个 metric。标签中的键由 ASCII 字符,数字,以及下划线构成,且必需满足正则表达式 [a-zA-Z_:][a-zA-Z0-9_:]*。
  • 样本:现实的时候序列,每一个序列包含一个 float64 的值和一个毫秒级的时候戳。

  时候序列花样:

<metric name>{<label name>=<label value>, ...}

  示例:

api_http_requests_total{method="POST", handler="/messages"}

  之前有分享过另一个时序数据库InfluxDB,它也是一个不错的时序数据库,常常用来作为监控数据的存储。OK,关于Prometheus的简介就到这儿,下面那我们最先着手将Prometheus开端用起来。

二、Prometheus实践

2.1 试验环境申明

  此次试验会搭建一个基于Prometheus的监控体系,用于监控两台阿里云ECS主机,监控目的为Host和容器两个条理。

主机 IP 运转组件
阿里云ECS1 47.102.140.100 Prometheus Server、Grafana、Exporter(Node Exporter & cAdvisor)
阿里云ECS2 47.102.140.101 Exporter(Node Exporter & cAdvisor)

Note:Prometheus支撑多种Exporter,这里我们运用Node Exporter 和 cAdvisor。个中,Node Exporter用于网络Host相干数据,cAdvisor用于网络容器相干数据。Node Exporter 和 cAdvisor 会运转在一切试验主机上。  

2.2 运转Node Exporter

  在两台主机上实行以下敕令运转Node Exporter:

docker run -d -p 9100:9100 \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
prom/node-exporter \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

  实行胜利后,会建立一个Node Exporter的容器实例,接见两台主机的地点 http://[Your Host IPs]:9100/metrics,你可以看到以下图所示的信息:

   假如能看到上图,申明你的Node Exporter可以为Prometheus供应当Host的监控数据了。

2.3 运转cAdvisor

  这部份我们在上一篇《容器监控(2)cAdvisor》中已引见过了,这里我们继承在这两台主机中实行以下敕令装置运转cAdvisor(假如已运转了,就没必要再实行了):

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

  一样,我们也可以经由过程接见 http://[Your Host IPs]:8080/metrics 来检察cAdvisor供应的监控数据,以下图所示:

   假如能看到上图,申明你的cAdvisor可以为Prometheus供应当Host的监控数据了。

2.4 运转Prometheus Server

  这里我们在主机A(表中的ECS1)上实行以下敕令来运转Prometheus Server:

docker run -d -p 9090:9090 \
  -v /edc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
  --name prometheus \
  prom/prometheus

  另外,这里的prometheus.yml 是Prometheus Server的设置文件,须要事前编辑好并放到指定目录下(这里是/edc/prometheus/目录下)让docker可以读取到,内容以下:

global:
  scrape_interval: 15s
  evaluation_interval: 15s
  external_labels:
    monitor: 'edc-lab-monitor'

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

rule_files:
  # - "first.rules"
  # - "second.rules"
  
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['47.102.140.100:9090']
  
  - job_name: 'host'
    static_configs:
      - targets: ['47.102.140.100:9100','47.102.140.101:9100']

  - job_name: 'container'
    static_configs:
      - targets: ['47.102.140.100:8080','47.102.140.101:8080']

  这里须要注重的设置是scrape_configs中的static_configs,内里定义了Prometheus会从哪些Exporter中抓取监控数据,这里指定了两台云主机的Node Exporter与cAdvisor。

  实行胜利后,Prometheus容器已建立好了,接见这台ECS1的地点:http://[ECS1 Host IP]:9090/metrics,以下图所示:

   然后,我们直接接见http://[ECS1 Host IP]:9090,会进入Prometheus主页:

   单击菜单Status => Targets,会看到一切监控的目的Exporters:

   可以看到一切监控目的的状况都是Up,示意Prometheus Server可以一般猎取监控数据。

2.5 运转Grafana

  这里我们继承在主机A(ECS1)上实行以下敕令运转Grafana:

docker run -d -i -p 3000:3000 \
-e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
-e "GF_SECURITY_ADMIN_PASSWORD=secret" \
grafana/grafana

  -e "GF_SECURITY_ADMIN_PASSWORD=secret" 则指定了Admin用户的暗码为secret,这里你也可以随你的志愿改成你可以记得住的。

  实行胜利后,我们可以经由过程接见:http://[ECS1 Host IP]:3000 看到以下Grafana的登录界面

  下面几个步骤用于初始化设置Grafana让其可以展现监控数据仪表盘Dashboard:

  Step1.上岸以后进入主页,挑选指导页,从"add data source"最先,第一步挑选时序数据库,这里挑选Prometheus

  Step2.设置Prometheus Server地点及Name,完成后点击“Save&Test”:

  Step3.回到指导主页,挑选Add Dashboard按钮,进入Dashboard页,挑选Import Dashboard,进入下图:

   这里挑选的Dashboard,你可以在grafana的dashboard官网的搜刮你喜好的关于Docker监控主题的种种Dashboard款式。这里我们要做的就是将其ID(这里我挑选的一个Docker监控的dashboard ID是193,其他的我不记得了)复制到图中的文本框中(固然,你也可以下载json并粘贴进去)。

  Step4.Grafana辨认以后,就会显现其概况让你确认。在确认页挑选Prometheus的数据源,这里挑选我们方才增加的数据源,然后点击Import即可完成导入。

   完成以上导入Dashboard步骤以后,这里我的Dashboard列表有了三个Dashboard:

  这里我们重要关注第一个(Docker-Monitor)和第三个(Host-Monitor),先来看第一个Dashboard,它重如果为我们展现Docker条理的监控面板:

   从上图可以看到两台Host中的一切容器监控数据一览无遗。

   第三个面板(Host-Monitor)的展现面板以下图所示:

   在上图中,我们挑选的分组是Host,它重如果网络来自Node-Exporter中反应的基于Host的监控数据,可以实时展现Host的症结目标。不过,它每次只能显现单台Host的数据,我们可以经由过程切换Host IP下拉列表检察差别Host的机能数据。

  另外,我们平常会将其投屏到事情区的电视上,所以我们可以点击下面这个按钮以投屏形式显现在电视上,供全部团队实时检察。

三、监控东西大比较

  这里我们依然援用Cloud Man总结的一张表来看看:

   毫无疑问,Prometheus作为生产级的监控计划,对其他几个东西形成了压倒性的上风。而事实上,Prometheus + Grafana + cAdvisor这一套计划也是人人普遍采纳的构造。

四、小结

  本文起首简朴引见了Prometheus及其架构,然后经由过程搭建基于Prometheus + cAdvisor + Grafana的监控体系,可以完成关于多台云主机的机能监控(包含Host和容器两个条理的数据)。固然,Prometheus另有许多的设置和好玩的处所比方Alert Manager可以实时发送告警关照等,笔者也只是开端把玩,另有许多东西不知道。背面我会分享引入K8S后,连系Prometheus + cAdvisor + Grafana完成K8S集群的监控,敬请期待。

参考资料

Cloud Man,《天天5分钟玩转Docker容器手艺》

无涯,《从零最先搭建Prometheus自动监控告警体系》

三无程序员,《Prometheus》

虎纠卫,《监控神器-普罗米修斯Prometheus》

项思凯,《Prometheus引见详解》

rj-bai,《Prometheus+Grafana打造全方位监控体系》

GeekerLou,《云原生监控体系Prometheus》

Cloud Man,《一文搞懂种种容器监控计划》

 

作者:周旭龙

出处:https://edisonchou.cnblogs.com

本文版权归作者和博客园共有,迎接转载,但未经作者赞同必需保存此段声明,且在文章页面显著位置给出原文链接。

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
你必需晓得的容器监控 (3) Prometheus

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282300.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>