prometheus监控方案
简介
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','....']
- 1
- 2
- 3
- 4
services如果不配置默认会显示出所有的服务,包含了consul agent服务。
运行,默认端口9090
./prometheus -config.file=prometheus.yml &
- 1
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>
- 1
- 2
- 3
- 4
- 5
该工程已经把consul的服务注册功能整合进去。没有注销服务功能。
2. 增加启动参数
-javaagent:${WORK_DIR}/lib/jmx_prometheus_javaagent-0.7.jar=scorer:1234:${WORK_DIR}/bin/scorer.yaml
- 1
javaagent参数解释如下:
-javagent:path/agent.jar=serviceName:servicePort:path/conf.yaml
- 1
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 &
- 1
解释如下:
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]
- 1
可视化
prometheus官方的dashboard不怎么给力,目前将grafana集成了进去。grafana可以自定义数据源,并且保存多个dashboard,针对不同的系统可以使用不同的dashboard来进行监控。
prometheus监控方案的更多相关文章
- 【译】Kubernetes监控实践(2):可行监控方案之Prometheus和Sensu
本文介绍两个可行的K8s监控方案:Prometheus和Sensu.两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪K8s关键组件的性能.定位故障.接收预警. 拓展阅读:Kubernetes监控 ...
- Kubernetes 监控方案之 Prometheus Operator(十九)
目录 一.Prometheus 介绍 1.1.Prometheus 架构 1.2.Prometheus Operator 架构 二.Helm 安装部署 2.1.Helm 客户端安装 2.2.Tille ...
- 050.集群管理-Prometheus+Grafana监控方案
一 Prometheus概述 1.1 Prometheus简介 Prometheus是由SoundCloud公司开发的开源监控系统,是继Kubernetes之后CNCF第2个毕业的项目,在容器和微服务 ...
- Prometheus 系统监控方案 二 安装与配置
下载Prometheus 下载最新安装包,本文说的都是在Linux x64下面内容,其它平台没尝试过,请选择合适的下载. Prometheus 主程序,主要是负责存储.抓取.聚合.查询方面. Aler ...
- 14、Docker监控方案(Prometheus+cAdvisor+Grafana)
上一篇文章我们已经学习了比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控.这节课来学习Prometheus+cAdvisor+Grafana组合. cAdvisor ...
- 斌哥的 Docker 进阶指南—监控方案的实现
过去的一年中,关于 Docker 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减.另一方面,大家的注意力也渐 ...
- 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)
前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...
- 详解k8s一个完整的监控方案(Heapster+Grafana+InfluxDB) - kubernetes
1.浅析整个监控流程 heapster以k8s内置的cAdvisor作为数据源收集集群信息,并汇总出有价值的性能数据(Metrics):cpu.内存.网络流量等,然后将这些数据输出到外部存储,如Inf ...
- 详解k8s原生的集群监控方案(Heapster+InfluxDB+Grafana) - kubernetes
1.浅析监控方案 heapster是一个监控计算.存储.网络等集群资源的工具,以k8s内置的cAdvisor作为数据源收集集群信息,并汇总出有价值的性能数据(Metrics):cpu.内存.netwo ...
随机推荐
- POJ 2549:Subsets(哈希表)
[题目链接] http://poj.org/problem?id=2549 [题目大意] 给出一个数集,从中选择四个元素,使得a+b+c=d,最小化d [题解] 我们对a+b建立Hash_table, ...
- 【bzoj2839】【集合计数】容斥原理+线性求阶乘逆元小技巧
(上不了p站我要死了,侵权度娘背锅) Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取 ...
- mysql增加和删除字段
时间字段: `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `last_update_time` t ...
- mysql悲观锁中的共享锁和排他锁
概述: 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改. 排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一 ...
- .Net解析html文档类库HtmlAgilityPack完整使用说明
在前几篇文章中([搜房网房产数据采集程序demo--GeckoWebBrowser实例] )都有提到一个解析html的C#类库HtmlAgilityPack, 今天终于有时间整理一下,并把Demo分享 ...
- 如何暂停sqlserver数据订阅服务
原文:如何暂停sqlserver数据订阅服务 从 Management Studio 启动和停止快照代理或日志读取器代理 在 Management Studio 中连接到发布服务器,然后展开服务器节点 ...
- MySQL 5.7.17 Group Replication 初始
http://blog.csdn.net/mchdba/article/details/53957248
- 如何使用Delphi编写Modbus RTU CRC16的校验码
在工业控制中,Modbus RTU CRC16的校验码用的比较广泛,包括本人富士产品中,PC与伺服电机以及PC与VP系列的变频器的Modbus RTU通讯中都使用到了CRC16. 而对CRC1 ...
- 如何在AutoCAD中将卫星底图变为有坐标参考信息的
这篇博文首先没有图,主要是博主太懒了,不想再截图,我把过程说清楚也可以的.特此说明. (1)将下载好的瓦片拼接好大的地图 (2)将其导入到ArcGIS中,定义其地理坐标,如WGS84:然后将其其投影为 ...
- Multithreading and Grand Central Dispatch on iOS for Beginners Tutorial
Have you ever written an app where you tried to do something, and there was a long pause while the U ...