prometheus监控方案

简介

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

架构

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

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中增加依赖

先把修改好的exporter jar(已经把consul的服务注册功能整合进去)给传到本地nexus上去,然后在maven中增加相应以来。

<repository>
    <id>repo.mxnt.com</id>
    <name>Maxent Repository</name>
    <url>http://supervisor:8081/nexus/content/repositories/public</url>
</repository>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>jmx_prometheus_javaagent</artifactId>
    <version>0.7</version>
</dependency>	

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配置](https://github.com/prometheus/jmx_exporter/blob/master/README.md)。

### 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通信。

### 部署完成
下图是服务启动后,在prometheus里展示的一些信息。
![Markdown](http://i1.piimg.com/1949/927f4bba6ee0cc39.jpg)

## 使用

### 查询

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

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

可以在开发环境搭建的[prometheus](http://10.18.1.12:9090)上面试手

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


![Markdown](http://i1.piimg.com/1949/be47130aebf5483b.jpg)

转载于:https://my.oschina.net/sonice/blog/783267

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值