了解Prometheus

标签(空格分隔): 监控


介绍

Prometheus是用来收集存储服务器的实时数据(比如:CPU、硬盘、服务响应、日志等),通过其丰富的运算函数,可以计算得到很多的服务性能指标(比如:CPU占用率、api响应时长、api返回500数量等),可用于集成监控告警系统中。

架构图

基本原理

Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。

关键流程

1.Prometheus Daemon负责定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。Prometheus采用PULL的方式进行监控,即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据。

2.Prometheus在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。

3.Prometheus通过PromQL和其他API可视化地展示收集的数据。Prometheus支持很多方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模版引擎等等。Prometheus还提供HTTP API的查询方式,自定义所需要的输出。

4.PushGateway支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。

5.Alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。

Exporter的概念

exporter是Prometheus的一类数据采集组件的总称,负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取,默认的抓取地址为 http://current_ip:9100/metrics

node-exporter是Prometheus官方推荐的exporter,类似的还有

  • HAProxy exporter
  • Collectd exporter
  • SNMP exporter
  • MySQL server exporter

    ...

运行

1.启动node_exporter容器

node-exporter是Prometheus官方推荐的exporte

docker run --name node_exporter -d -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)($|/)"

2.编辑配置文件prometheus/prometheus.yml

global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'webservers'
static_configs:
- targets: ['<node exporter node IP>:9100']

3.启动prometheus容器

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

4.访问prometheus web

http://localhost:9090/

最新文章

  1. mysql分表的3种方法
  2. Linux进程含义知多少
  3. hihoCode 1078 : 线段树的区间修改
  4. 深入浅出 RPC - 浅出篇+深入篇
  5. 《C++ Primer 4th》读书笔记 第4章-数组和指针
  6. 说说通信设置方式之hostonly
  7. 深入理解C++中的explicitkeyword
  8. CPU使用率计算
  9. 黑马程序员——Java高级应用(一)
  10. net开发过程中Bin目录net开发过程中Bin目录下面几种文件
  11. 18.app后端如何实现LBS
  12. sql查询重复值
  13. pandas(三)
  14. 如何快速地开发一个微信小程序
  15. [转帖]Runtime, Engine, VM 的区别是什么?
  16. appium-doctor
  17. Centos7最小化安装
  18. 安装vm tools时出现如下问题 The path &quot;/usr/bin/gcc&quot; is not valid path to the
  19. libXext.so.6: cannot open shared object file:
  20. sencha touch 在安卓中横屏、竖屏切换 应用崩溃问题

热门文章

  1. 八大排序算法~冒泡排序【加变量flag的作用】
  2. Docker安装和常用配置【Linux】
  3. ThinkPHP3.2.3 语言包切换中英文切换
  4. P5311 [Ynoi2011] 成都七中
  5. [考试总结]noip18
  6. Python自动化测试面试题-用例设计篇
  7. IE浏览器 查看Form对象
  8. Drupal 远程代码执行漏洞(CVE-2019-6339)
  9. Spring Boot从入门到精通(十一)集成Swagger框架,实现自动生成接口文档
  10. python UI自动化之鼠标事件