简介

prometheus 是一个开源的系统监控和告警的工具包,其采用pull方式采集时间序列,通过http协议传输。

架构

每个应用都通过javaagent向外提供一个http服务暴露出自己的JMX信息。当应用启动的时候就会向consul注册服务,注册成功后,prometheus就能把这个应用加入监控对象列表,进行数据收集并跟踪服务的状态。

部署

prometheus

官网下载prometheus-1.2.1.linux-amd64.tar.gz, 解压到/services/apps/目录下,修改配置文件 prometheus.yml,在 scrape_config节点下增加以下内容:

- job_name: 'consul-node'
    consul_sd_configs:- server: 'localhost:8500'
        services: ['scorer','file-proxy','....']

services如果不配置默认会显示出所有的服务,包含了consul agent服务。

运行,默认端口9090

./prometheus -config.file=prometheus.yml &

prometheus jmx exporter

jmx exporter是prometheus和JMX的桥梁。
在我们的工程里面,它是以Java Agent的方式运行,它的功能是收集本地的JVM信息,并通过HTTP服务暴露出来。引用的方式为:

1. 在pom.xml中增加依赖

<dependency><groupId>io.prometheus</groupId><artifactId>jmx_prometheus_javaagent</artifactId><version>0.7</version>
</dependency>   

该工程已经把consul的服务注册功能整合进去。没有注销服务功能

2. 增加启动参数

-javaagent:${WORK_DIR}/lib/jmx_prometheus_javaagent-0.7.jar=scorer:1234:${WORK_DIR}/bin/scorer.yaml

javaagent参数解释如下:

-javagent:path/agent.jar=serviceName:servicePort:path/conf.yaml

service 指的是http service,如指定servicePort为1234,在应用启动之后,可以在http://host:1234/metrics获取到metrics信息。在conf.yaml里配置JMX的收集策略,完整的yaml配置。

consul agent

prometheus可以静态的配置监控对象,也可以采用动态的服务发现机制。为了部署更方便,我们采用的是现在更为流行的服务发现解决方案consul。其只包含了一个二进制的命令文件,把它拷贝到PATH( echo $PATH 可以查看 )就可以运行。
运行命令为:

consul agent -server -data-dir data &

解释如下

  • consul agent 启动一个consul agent进程。 该进程负责维护集群成员信息、注册服务、运行检查、查询响应等等。而且,consul集群的每一个节点上都必须有agent进程运行。

  • -server **agent有两种模式:server与client。**server模式包含了一致性的工作:保证一致性和可用性(在部分失败的情况下),响应RPC,同步数据到其他节点代理。client 模式用于与server进行通信,转发RPC到服务的代理agent,它仅保存自身的少量一些状态,是非常轻量化的东西。本身是相对无状态的。

  • -data-dir 指定一个文件夹用于存储该agent的状态,在以server模式运行时,尤其重要。

一些其他的可选参数

  • -node 指定该节点的名称,默认为主机名
  • -http-port 指定端口接收http请求,用于默认端口8500被占用的情况。
  • -config-dir 指定一个或多个文件夹用于agent启动时加载配置文件,加载顺序由文件名的字母顺序决定。

consul 运行起来后,server会通过8500端口与prometheus通信。

使用

consul 启动

consul agent -server –data-dir=/services/data/consul/ –join 10.18.1.12&

注销服务

curl http://localhost:8500/v1/agent/service/deregister/172.17.42.1

查询该agent上面注册的服务

curl http://localhost:8500/v1/agent/services?pretty

查询集群上面所有的服务

curl http://localhost:8500/v1/catalog/services?pretty

查询

参见prometheus官网提供的查询表达式,简而言之,标签过滤用{},时间范围选择用[],如下例。

http_request_total{job="prometheus"}[5m]

可视化

prometheus官方的dashboard不怎么给力,目前将grafana集成了进去。grafana可以自定义数据源,并且保存多个dashboard,针对不同的系统可以使用不同的dashboard来进行监控。

prometheus监控方案相关推荐

  1. 基于 eBPF 的 prometheus 监控方案

    基于 eBPF 的 prometheus 监控方案 1. 前言 2. ebpf_exporter 环境搭建 3. Prometheus 与 Grafana 配置 4. ebpf_exporter 代码 ...

  2. 阿里云容器Kubernetes监控(七) - Prometheus监控方案部署

    前言 Prometheus是一款面向云原生应用程序的开源监控工具,作为第一个从CNCF毕业的监控工具而言,开发者对于Prometheus寄予了巨大的希望.在Kubernetes社区中,很多人认为Pro ...

  3. 基于 Prometheus 和 Zabbix 实现容器云平台整体监控方案

    一. 概述 容器云成为IT的主要基础设施平台,以Docker为代表的容器技术,加上以Kubernetes为代表的容器编排技术,是目前最流行的容器云建设方案.云平台的特点是快速部署.弹性伸缩.动态调整. ...

  4. 【Flink 监控系列】Flink on yarn 任务实时监控最佳实践(Prometheus + Grafana)打造企业级监控方案

    我们都知道 Flink 任务是一个 7*24 小时不停运行的任务,所以对于任务的实时监控就显得尤为重要,因为任务运行的状态对于我们来说是一个黑盒,比如任务是否挂掉,是否存在反压,使用的内存,CPU 等 ...

  5. 14、Docker监控方案(Prometheus+cAdvisor+Grafana)

    上一篇文章我们已经学习了比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控.这节课来学习Prometheus+cAdvisor+Grafana组合. cAdvisor ...

  6. 第 10 章 容器监控 - 078 - Docker 最常用的监控方案

    Docker 最常用的监控方案 当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要. Docker 自带的几个监控子命令: ps .top .stats 功能更 ...

  7. 简单、有效、全面的Kubernetes监控方案

    简介:近年来,Kubernetes作为众多公司云原生改造的首选容器化编排平台,越来越多的开发和运维工作都围绕Kubernetes展开,保证Kubernetes的稳定性和可用性是最基础的需求,而这其中最 ...

  8. 云计算监控—Prometheus监控系统(文末赠书)

    陈金窗 刘政委 张其栋 郑少斌 读完需要 20 分钟 速读仅需 7 分钟 本文摘自于<Prometheus 监控技术与实战>一书,从云计算时代的业务特点出发,探讨了云计算监控的目标和挑战, ...

  9. python分布式框架celery项目开发_本项目在 Celery 分布式爬虫的基础上构建监控方案 Demo...

    CrawlerMonitor UPDATE: 2020.4.14 Introduction 本项目在 Celery 分布式爬虫的基础上构建监控方案 Demo,在编写 Statsd + InfluxDB ...

最新文章

  1. 如何成为一名无人驾驶工程师
  2. bootstrap课程1 bootstrap为什么这么火
  3. backup(full,diff,log)备份并清理过时备份
  4. 【OpenCV】cv::Mat对单个像素的访问和操作
  5. java 栈内存结构_JVM内存结构概念解析
  6. 如何在国内下载Eclipse及其插件
  7. 1_Excel实战_自动录入另一个表格对应的数据
  8. hdu 4323 Magic Number dp 多校联合赛(三)第四题
  9. Redis设计思路学习与总结
  10. INVEST模型生境质量评价之威胁源数据处理
  11. 王家林大咖清华新书预发布:《企业级AI技术内幕:深度学习框架开发+机器学习案例+Alluxio解密》之盘古人工智能框架多层次神经网络的实现
  12. 用python写一个自动注册脚本_python实现自动登录
  13. 【BZOJ2565】最长双回文串 Manacher
  14. Jmeter如何进行接口测试-实操
  15. 分治算法解大整数相乘问题
  16. 手把手教你做20道菜全套教程
  17. ​stp文件转iges
  18. 人人网2015研发笔试卷C
  19. 学习日记·C语言学习-函数
  20. 英国脱欧,微测带您了解进入英国市场需要CE、UKCA还是UK(NI)标志?

热门文章

  1. python烦恼_老男孩教育教你,如何摆脱Python学习中的烦恼?
  2. 香港物理服务器和香港云服务器有什么区别?
  3. 基于darknet-yolov4训练自己的数据集
  4. 傻子都能看懂的——信息熵(香农熵)
  5. MATLAB实现各种熵:香农熵、条件熵、模糊熵、样本熵等
  6. 解决java发送邮件无主题且邮件内容乱码问题
  7. 国人近视手术白皮书重磅发布,过去两年近视手术量增长近75%
  8. 笔记系列-----oracle中表的几种类型
  9. SQLite Expert Professional 3.5 注册
  10. Mybatis的#{}与${}占位符