一、背景:近期学习部署prometheus监控系统,经研究发现prometheus提供docker运行模式。根据我的经验,能够使用docker模式构建系统一定多快好省。

二、环境:

1、centos7.5虚拟机一台,分配4G内存,拟作prometheus服务器,ip:192.168.0.208

2、centos8.0虚拟机一台,分配2G内存,拟作node-exporter客户机,ip:192.168.0.202

3、两台机器都在不同的实体机上,已安装docker-ce软件

三、部署过程

1、服务器(考虑安装prometheus服务器和node-exporter客户端):

(1)pull服务器镜像:

docker pull prom/prometheus

(2)pull客户端镜像:

docker pull prom/node-exporter

(3)配置prometheus.yml

mkdir -p /root/prometheus/prometheus-data          #prometheus的工作目录和数据目录

mkdir -p /root/prometheus/node-exporter-data       #node-exporter的数据目录

cd /root/prometheus

vi promethe.yml

内容如下:

...

scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']

- job_name: 'prometheus-node-exporter'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['192.168.0.208:9100']

- job_name: 'node-dell5460'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['192.168.0.202:9100']

(4)运行prometheus服务

[root@ELK prometheus]# docker run -d -p 9090:9090 -v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml -v $PWD/prometheus-data:/prometheus  --hostname ELK.localdomain --name prometheus prom/prometheus

说明:

-p 9090:9090     #服务端口对应到宿主机的相同端口

-v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml    #容器内/etc/prometheus/prometheus.yml配置文件挂载到宿主机/root/prometheus目录下。

-v $PWD/prometheus-data:/prometheus    #容器内prometheus工作目录挂载到宿主机的/root/prometheus/prometheus-data目录下。

--hostname ELK.localdomain   #容器的主机名称(ELK.localdomain是208机的主机名),若不加这个选项,docker会自动把容器的短id号作为容器主机名,在web页面就会发生无法访问的问题。

测试:curl http://localhost:9090/metrics

(5)运行node-exporter

[root@ELK prometheus]# docker run -d   --net="host"   --pid="host"   -v "/root/prometheus/node-exporter-data:/host:ro,rslave"   prom/node-exporter   --path.rootfs=/host

测试:curl http://192.168.0.208:9100/metrics

2、node-exporter客户机

(1)pull客户端镜像

docker pull prom/node-exporter

(2)运行node-exporter

[root@ELK prometheus]# docker run -d   --net="host"   --pid="host"   -v "/home/node-exporter-data:/host:ro,rslave"   prom/node-exporter   --path.rootfs=/host

3、访问测试:

在浏览器中输入网址:http://192.168.0.208:9090

四、使用

1、metric的表现形式是键值对{k,v}

2、metrics的页面说明:

#HELP 关于指标的说明

#TYPE 指标的类型,常见gauge,conter等类型

键  值     以空格隔开

3、把metrics页面存在的键拷贝后粘贴到graph页面的搜索栏中即可看到值或图形。

4、在搜索栏中可灵活应用各类函数,如rate、increase、sum、topk、等等

例:

rate(node_cpu_seconds_total{mode="user"}[1m])   #1分钟内用户态cpu时间每秒增加量

rate(node_cpu_seconds_total{mode="system",instance="192.168.0.208:9100",job="prometheus-node-exporter"}[1m])

(1-(sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by(instance))  /  (sum(increase(node_cpu_seconds_total[1m])) by(instance)))*100   #每台机器1分钟内cpu负荷

topk(3,rate(node_network_receive_bytes_total[5m]))  #网络5分钟内平均每秒接收字节数前3位的数据展示

5、关于web页面的时间显示问题,默认页面显示的是UTS时区时间,与本地时间相差8小时。这是因为Prometheus 为避免时区混乱,在所有组件中专门使用 Unix Time 和 Utc 进行显示。不支持在配置文件中设置时区,也不能读取本机 /etc/timezone 时区。prometheus在新版web页面已提供本地时区时间显示功能,可点击web页面右上角“Try experimental React UI”切换到新版页面,在新版页面上部勾选“Use local time”即可。

附:更多的函数参考https://prometheus.io/docs/prometheus/latest/querying/functions/

使用docker方式构建prometheus监控的学习的更多相关文章

  1. 使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库

    一.背景 在平时开发过程当中需要针对 MySQL 数据库进行监控,这里我们可以使用 Grafana 和 Prometheus 来实现监控功能.Grafana 是一款功能强大的仪表盘面板,支持多种数据源 ...

  2. Prometheus监控数据格式学习

    本文大纲: • prometheus metrics的概念• k/v的数据形式• prometheus exporter的使⽤(pull形式采集数据)• prometheus pushgateway的 ...

  3. centos7下安装docker(17.4docker监控----prometheus)

    Prometheus是一个非常优秀的监控工具.准确的说,应该是监控方案.Prometheus提供了监控数据搜集,存储,处理,可视化和告警一套完整的解决方案 Prometheus架构如盗图: 官网上的原 ...

  4. Prometheus监控学习笔记之Prometheus监控简介

    0x00 Prometheus容器监控解决方案 Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的.它是一个独立的开放源码项目,并且独立于任何公司.不同 ...

  5. 【集群监控】Docker上部署Prometheus+Alertmanager+Grafana实现集群监控

    Docker部署 下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.re ...

  6. Prometheus监控Docker Swarm集群(一)

    Prometheus监控Docker Swarm集群(一) cAdvisor简介 为了解决容器的监控问题,Google开发了一款容器监控工具cAdvisor(Container Advisor),它为 ...

  7. 从零开始学习Prometheus监控报警系统

    Prometheus简介 Prometheus是一个开源的监控报警系统,它最初由SoundCloud开发. 2016年,Prometheus被纳入了由谷歌发起的Linux基金会旗下的云原生基金会( C ...

  8. Docker系列——Grafana+Prometheus+Node-exporter服务器监控平台(一)

    在最近的博文中,都是介绍监控平台的搭建,其实并不难,主要是需要自己动手操作,实践一番就会了. 有天在想,云上的服务器,是不是也可以搭建一个监控平台,所以就捣鼓了一下,不过遗憾的是,使用阿里云开源的插件 ...

  9. Docker镜像构建的两种方式

    关于Docker里面的几个主要概念 这里用个不太恰当的比方来说明. 大家肯定安装过ghost系统,镜像就像是ghost文件,容器就像是ghost系统.你可以拿别人的ghost文件安装系统(使用镜像运行 ...

随机推荐

  1. E. XOR Guessing 交互题 Educational Codeforces Round 71 (Rated for Div. 2)

    E. XOR Guessing 交互题. 因为这个数最多只有14位 0~13,所以我们可以先处理后面7位,然后再处理后面7位. 因为异或的性质,如果一个数和0异或,那么就等于本身. 所以我们第一次异或 ...

  2. 搬东西 dp

    搬东西 现有n个扁担以及一辆货车,扁担一次挑两个货物,货车可以装K个货物,货车只能运送一次货物. 现在qwb要把总共2n+k个货物搬到某个地方.现在qwb想选K个货物让货车先运走,然后剩下的2n个货物 ...

  3. 【MySQL基础总结】常用函数库

    常用函数库 数学函数 分类及含义 示例 字符串函数 分类及含义 示例 日期时间函数 分类及含义 示例 条件判断函数 分类及含义 示例 系统函数 分类及含义 加密函数 分类及定义 其他常用函数 分类及含 ...

  4. 目前校园百晓生APP与CSDN软件的对比

    不忘初心.注入灵魂 设计之初 在做校园百晓生该APP时,初心是为校园的同学提供便捷的查询校园信息的服务,确实目前的软件已经实现了该功能,但是总感觉缺少一些灵魂,感觉大部分人渴望的重点在于信息而不是自己 ...

  5. [hdu4416 Good Article Good sentence]后缀自动机SAM

    题意:给出串A和串集合B={B1,B2,...,Bn},求串A的所有不同子串中不是B中任一串的子串的数目. 思路:把A和B中所有字符串依次拼接在一起,然后构造后缀自动机,计算每个状态的R集合元素的最大 ...

  6. 10JAVA基础-常用类02

    Arrays 工具类,构造方法私有 //将数组转变为字符串 String str = Arrays.toString(int[] value); //对于原数组进行排序,升序 Arrays.sort( ...

  7. md5函数

    0x01 <?php error_reporting(0); $flag = 'flag{test}'; if (isset($_GET['username']) and isset($_GET ...

  8. 这么简单的ES索引生命周期管理,不了解一下吗~

    对于日志或指标(metric)类时序性强的ES索引,因为数据量大,并且写入和查询大多都是近期时间内的数据.我们可以采用hot-warm-cold架构将索引数据切分成hot/warm/cold的索引.h ...

  9. 黑马程序员_毕向东_Java基础视频教程——进制(随笔)

    进制的特点 进制的由来 任何数据在计算机中都是以二进制的形式存在.二进制最早由电信号演变而来. 一个整数在内存中一样也是二进制,但是使用一大串的0 1组成的二进制数进行使用很麻烦所以就想把一大串缩短点 ...

  10. vue element-ui el-form-item 循环渲染,验证表单内容

    data里面如下图: