热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Docker下Prometheus和Grafana三部曲之一:极速体验

开源监控工具Prometheus目前广为使用,配合Grafana即可直观展现监控数据,但对于初学者来说搭建这样一个系统要花费些时间,或者有

开源监控工具Prometheus目前广为使用,配合Grafana即可直观展现监控数据,但对于初学者来说搭建这样一个系统要花费些时间,或者有时也想要快速搭好系统使用其功能,今天的实战中,我们在Docker环境下快速搭建和体验一个典型的业务监控系统,包括prometheus、node-exporter、cadvisor、grafana、业务后台服务(springboot);

本文是《Docker下Prometheus和Grafana三部曲》系列的第一篇,整个系列包含以下内容:

  1. 极速体验,也就是本文;
  2. 细说Docker相关开发,介绍在Docker环境搭建整个环境的细节;
  3. 自定义监控项的开发和展示配置;

三部曲所有文章链接


  1. 《Docker下Prometheus和Grafana三部曲之一:极速体验》;
  2. 《Docker下Prometheus和Grafana三部曲之二:细说Docker编排》;
  3. 《Docker下Prometheus和Grafana三部曲之三:自定义监控项开发和配置》;

环境信息

本次实战的环境信息如下:

  1. 操作系统:CentOS 7.6.1810
  2. Docker:17.03.2-ce
  3. node-exporter:0.17.0 (docker容器,不需要您准备)
  4. prometheus:2.8.0 (docker容器,不需要您准备)
  5. cadvisor:0.28.0 (docker容器,不需要您准备)
  6. grafana:5.4.2 (docker容器,不需要您准备)
  7. springboot:1.5.19.RELEASE (docker容器,不需要您准备)

本次实战的电脑是CentOS系统,IP地址为192.168.1.101

操作步骤简介

实战由以下几步组成:

  1. 一行命令创建所有容器;
  2. 取得Grafana的API KEY,创建图表时要用到;
  3. 一行命令创建所有图表;
  4. 体验监控系统;

接下来开始实战吧。

创建容器

登录CentOS服务器,新建一个文件夹,在里面执行以下命令就能将所有容器创建好:

wget https://raw.githubusercontent.com/zq2599/blog_demos/master/prometheusdemo/files/prometheus.yml && \
wget https://raw.githubusercontent.com/zq2599/blog_demos/master/prometheusdemo/files/docker-compose.yml && \
docker-compose up -d

上述命令会下载容器编排脚本和prometheus的配置文件,然后创建容器,控制台输出如下信息(如果本地没有相关的镜像还会显示下载镜像的信息):

[root@hedy prometheus_blog]# wget https://raw.githubusercontent.com/zq2599/blog_demos/master/prometheusdemo/files/prometheus.yml && \
> wget https://raw.githubusercontent.com/zq2599/blog_demos/master/prometheusdemo/files/docker-compose.yml && \
> docker-compose up -d
--2019-03-09 23:05:28-- https://raw.githubusercontent.com/zq2599/blog_demos/master/prometheusdemo/files/prometheus.yml
正在解析主机 raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.228.133
正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|151.101.228.133|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1173 (1.1K) [text/plain]
正在保存至: “prometheus.yml”100%[==================================================================================================================================================================>] 1,173 --.-K/s 用时 0s 2019-03-09 23:05:28 (162 MB/s) - 已保存 “prometheus.yml” [1173/1173])--2019-03-09 23:05:28-- https://raw.githubusercontent.com/zq2599/blog_demos/master/prometheusdemo/files/docker-compose.yml
正在解析主机 raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.228.133
正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|151.101.228.133|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1727 (1.7K) [text/plain]
正在保存至: “docker-compose.yml”100%[==================================================================================================================================================================>] 1,727 --.-K/s 用时 0s 2019-03-09 23:05:29 (108 MB/s) - 已保存 “docker-compose.yml” [1727/1727])Creating network "prometheus_blog_default" with the default driver
Creating node-exporter ... done
Creating prometheusdemo ... done
Creating cadvisor ... done
Creating prometheus ... done
Creating grafana ... done

取得Grafana的API KEY

现在要取得Grafana的授权KEY,有了这个KEY就能通过脚本快速创建数据源和各种监控报表了,具体操作如下:

  1. 浏览器访问Grafana页面:http://192.168.1.101:3000
  2. 用户名admin,密码secret;
  3. 在左侧的设置菜单中,点击"API keys",如下图:
    在这里插入图片描述
  4. 如下图,点击按钮"+New API Key":
    在这里插入图片描述
  5. 在创建API key的页面,输入key名称admin,Role选择Admin,然后点击"Add"按钮,如下图:
    在这里插入图片描述
  6. 弹出的窗口会显示新建的API Key,下图红框1中的内容就是我们后面会用到的API Key,请保存下来,红框2中的命令是获取首页信息的,可以执行一下试试,成功了表示这个API Key是有效的:
    在这里插入图片描述

创建监控图表

执行以下命令即可创建监控图表,注意把192.168.1.101替换为您的CentOS机器的IP地址,如果是在当前机器上操作就用127.0.0.1,把xxxxxxxxx替换为前面步骤中取得的API Key,例如我的是eyJrIjoieHpHeUVoODFiMDNiZE13TDdqUGxNS1NoN0dhVGVVc04iLCJuIjoiYWRtaW4iLCJpZCI6MX0=:

wget https://raw.githubusercontent.com/zq2599/blog_demos/master/prometheusdemo/files/import_dashboard.sh && \
./import_dashboard.sh 192.168.1.101 xxxxxxxxx

控制台会输出如下类似信息,表示数据源和图表都创建成功:

[root@hedy 10]# wget https://raw.githubusercontent.com/zq2599/blog_demos/master/prometheusdemo/files/import_dashboard.sh && \
> chmod a+x import_dashboard.sh && \
> ./import_dashboard.sh 192.168.1.101 eyJrIjoiSEduM2g1clFpaVZRNjRXTTBSek50aUp3OFM3bXUzVUciLCJuIjoiYWRtaW4iLCJpZCI6MX0=
--2019-03-09 23:46:27-- https://raw.githubusercontent.com/zq2599/blog_demos/master/prometheusdemo/files/import_dashboard.sh
正在解析主机 raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.108.133
正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|151.101.108.133|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:113606 (111K) [text/plain]
正在保存至: “import_dashboard.sh”100%[==================================================================================================================================================================>] 113,606 468KB/s 用时 0.2s 2019-03-09 23:46:28 (468 KB/s) - 已保存 “import_dashboard.sh” [113606/113606])grafana host [192.168.1.101]
api key [eyJrIjoiSEduM2g1clFpaVZRNjRXTTBSek50aUp3OFM3bXUzVUciLCJuIjoiYWRtaW4iLCJpZCI6MX0=]
start create datasource
{"datasource":{"id":2,"orgId":1,"name":"Prometheus","type":"prometheus","typeLogoUrl":"","access":"proxy","url":"http://prometheus:9090","password":"","user":"","database":"","basicAuth":false,"basicAuthUser":"","basicAuthPassword":"","withCredentials":false,"isDefault":false,"secureJsonFields":{},"version":1,"readOnly":false},"id":2,"message":"Datasource added","name":"Prometheus"}
start create host dashboard
{"id":3,"slug":"1-zhu-ji-ji-chu-jian-kong-cpu-nei-cun-ci-pan-wang-luo","status":"success","uid":"h1qcOBjmz","url":"/d/h1qcOBjmz/1-zhu-ji-ji-chu-jian-kong-cpu-nei-cun-ci-pan-wang-luo","version":1}
start create jvm dashboard
{"id":4,"slug":"spring-boot-1-x","status":"success","uid":"MP3cOBjmz","url":"/d/MP3cOBjmz/spring-boot-1-x","version":1}
start create customize dashboard
{"id":5,"slug":"ye-wu-zi-ding-yi-jian-kong","status":"success","uid":"Hl3cOBCmk","url":"/d/Hl3cOBCmk/ye-wu-zi-ding-yi-jian-kong","version":1}

至此,整个环境已经OK,一起来体验一下吧;

体验环境


  1. 查看prometheus的web页面,看配置的监控数据源是否有效,如下图,地址是:http://192.168.1.101:9090/targets
    在这里插入图片描述
    上图一共展示了四个数据源:
    a. http://prometheusdemohost:8080/prometheus 是个springboot框架的web应用;
    b. http://127.0.0.1:9090/metrics 是prometheus自身的数据;
    c. http://cadvisorhost:8080/metrics 是cadvisor的数据,用来监控docker容器的;
    d. http://node-exporterhost:9100/metrics 是当前宿主机的环境信息;

  2. 查看cAdvisor的web页面,可以看到docker的基本情况,如下图,地址是:http://192.168.1.101:8080
    在这里插入图片描述

  3. 访问业务web服务,这是个springboot框架的web应用,提供了一个web接口,返回一个带了时间的字符串,地址是:http://192.168.1.101:8081/greet

  4. 注意:每访问一次上述业务web接口,web应用都会上报一条记录到prometheus,所以建议您多访问几次改接口,后面可以再Grafana上看到改接口的请求量曲线图;

  5. 查看Grafana的监控图表,地址是:http://192.168.1.101:3000 ,如下图,可见数据源已经配置成了prometheus(前面的shell脚本中执行的):
    在这里插入图片描述

  6. 如下图,点击红框1中的"manage",即可见到右侧监控列表中出现了三项:
    在这里插入图片描述

  7. 从第一个"1.主机基础监控(cpu,内存,磁盘,网络)"看起,如下图,服务器的各项信息都能展示出来,注意红框中的内容要选择准确,可以截图一致即可:
    在这里插入图片描述

  8. 第二项"Spring Boot 1.x"主要是JVM和Spring Boot环境的相关信息,如下:
    在这里插入图片描述

  9. 第三项是业务代码中自己上报到prometheus的数据,这些可以和具体业务做绑定,做出更多定制化的内容(具体的开发细节后面的文章会讲到),如下图:
    在这里插入图片描述
    至此,基于Prometheus和Grafana的监控系统我们已经体验完毕了,希望能帮助您在短时间内对整个系统有个初步了解,接下来的章节将会解释如此简化的步骤是怎样做到的,请看《Docker下Prometheus和Grafana三部曲之二:细说Docker编排》;


欢迎关注我的公众号:程序员欣宸

在这里插入图片描述


推荐阅读
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
author-avatar
夫妇郭_390
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有