Docker 安装prometheus(容器监控)

  • prometheus是由谷歌研发的一款开源的监控软件 https://www.cnblogs.com/zqj-blog/p/10871033.html
  • 参考文章 https://www.jianshu.com/p/93c840025f01

下载镜像

docker pull prom/prometheus:v2.15.0

目录结构

[root@centos01 prometheus]# pwd
/data/prometheus
[root@centos01 prometheus]# tree
.
└── prometheus.yml
  • prometheus.yml
global:scrape_interval:   15sscrape_configs:
- job_name:       'springboot-app'scrape_interval: 10smetrics_path: '/actuator/prometheus'static_configs:- targets: ['192.168.0.2:9082']labels:application: 'springboot-app'- job_name: 'prometheus'scrape_interval: 5sstatic_configs:- targets: ['localhost:9090']

安装

docker run -d \
-p 9192:9090 \
-v /data/prometheus:/etc/prometheus/ \
-v /etc/localtime:/etc/localtime:ro \
--privileged=true \
--name group_prometheus prom/prometheus:v2.15.0

Docker 安装grafana (依赖prometheus)

下载镜像

docker pull grafana/grafana:6.5.2

目录结构

[root@centos01 grafana]# pwd
/data/grafana
[root@centos01 grafana]# tree
.
├── dashboard.json
├── grafana.ini
└── provisioning└── datasources└── datasource.yml
  • dashboard.json
  • grafana.ini 示例:
#################################### SMTP / Emailing ##########################
# 配置邮件服务器
[smtp]
enabled = true
# 发件服务器
host = smtp.qq.com:465
# smtp账号
user = 2486524340@qq.com
# smtp 密码
password = gjicistsyhsddhge
# 发信邮箱
from_address = 2486524340@qq.com
# 发信人
from_name = jojo
  • datasource.yml
# config file version
apiVersion: 1##删除默认的Prometheus数据源
deleteDatasources:
- name: PrometheusorgId: 1## 配置数据源
datasources:
- name: Prometheustype: prometheusaccess: proxyorgId: 1url: http://192.168.0.13:9192basicAuth: falseisDefault: trueversion: 1editable: true

快速安装

docker run -d \
-p 3000:3000 \
--name group_grafana_1 grafana/grafana:6.5.2

完整安装

docker run -d \
-p 3000:3000 \
-v /data/grafana/provisioning/:/etc/grafana/provisioning/ \
-v /etc/localtime:/etc/localtime:ro \
--privileged=true \
--name group_grafana_1 \
-e "GF_SECURITY_ADMIN_PASSWORD=password" \
-e "GF_USERS_ALLOW_SIGN_UP=false" \
grafana/grafana:6.5.2docker run -d \
-p 3000:3000 \
-v /data/grafana/grafana.ini:/etc/grafana/grafana.ini \
-v /data/grafana/provisioning/:/etc/grafana/provisioning/ \
-v /etc/localtime:/etc/localtime:ro \
--privileged=true \
--name group_grafana_1 \
-e "GF_SECURITY_ADMIN_PASSWORD=password" \
-e "GF_USERS_ALLOW_SIGN_UP=false" \
grafana/grafana:6.5.2

web管理

  • 控制台: http://192.168.0.13:3000/ 快速安装没有密码,完整安装的密码是admin/password
  • 新建数据源 http://192.168.0.13:3000/datasources ,选择prometheus
Data Sources/Prometheus
-----------------------------Settings------------------------------
url : http://192.168.0.13:9192
...
save & test
  • 下载dashboard.json http://119.23.50.122/grafana/dashboard.json
  • 导入dashboard 打开: http://192.168.0.13:3000/dashboard/import 图表的数据格式文件(官方下载地址: https://grafana.com/grafana/dashboards )
填写:
Name: app应用图表
Prometheus: Prometheusimport
  • 配置通知 http://192.168.0.13:3000/alerting/notification/new
  • 配置异常时告警
  • 自定义图表

Prometheus 客户端

基本配置

  • pom.xml
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
  • application.yml
management:endpoints:promethus:enable: trueweb:exposure:include:- prometheus- info- health
  • 开放对应的端点,即promethues抓取数据的接口,EndpointRequest.toAnyEndpoint()
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;/*** @author zhang3* description TODO*/
@Configuration
@Slf4j
public class CustomResourceServerConfig extends ResourceServerConfigurerAdapter {@Overridepublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests().requestMatchers(EndpointRequest.toAnyEndpoint()).permitAll().anyRequest().authenticated();}
}

自定义监控指标(监控图表)

  • PrometheusMetricsConfig.java 监控指标 管理
import io.micrometer.prometheus.PrometheusMeterRegistry;
import io.prometheus.client.Counter;
import io.prometheus.client.Summary;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author zhang3* description 监控指标 管理*/
@Configuration
public class PrometheusMetricsConfig {@Autowiredprivate PrometheusMeterRegistry prometheusMeterRegistry;/*** 自定义 Counter 监控指标*/@Beanpublic Counter requestCount() {return Counter.build("is_request_count", "count request by service").labelNames("service", "method", "code").register(prometheusMeterRegistry.getPrometheusRegistry());}/*** 自定义 Summary 监控指标*/@Beanpublic Summary requestLatency() {return Summary.build("is_request_latency", "monite request latency by service").quantile(0.5, 0.05).quantile(0.9, 0.01).labelNames("service", "method", "code").register(prometheusMeterRegistry.getPrometheusRegistry());}
}
  • 声明一个拦截器,进行计数
import io.prometheus.client.Counter;
import io.prometheus.client.Summary;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** @author zhang3* description 声明一个拦截器,进行计数*/
@Component
public class StatInterceptor extends HandlerInterceptorAdapter {@Autowiredprivate Counter requestCount;@Autowiredprivate Summary requestLatency;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {request.setAttribute("startTime", System.currentTimeMillis());return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {String uri = request.getRequestURI();requestCount.labels(uri, request.getMethod(), String.valueOf(response.getStatus())).inc();Long duration = System.currentTimeMillis() - (Long)request.getAttribute("startTime");requestLatency.labels(uri, request.getMethod(), String.valueOf(response.getStatus())).observe(duration);}
}
  • 注册拦截器
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @author zhang3* description 注册拦截器*/
@Configuration
public class CustomWebConfig implements WebMvcConfigurer {@Autowiredprivate StatInterceptor statInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(statInterceptor).addPathPatterns("/**");}
}

prometheus-容器健康状况监控相关推荐

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

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

  2. Prometheus 容器化部署,配合Grafan画图工具监控节点

    Prometheus 容器化部署,配合Grafan画图工具监控节点 一.部署环境 主机名 IP地址 服务 prometheus 192.168.85.131 prometheus.grafana no ...

  3. Prometheus容器化部署,配合Grafan画图工具监控节点信息

    文章目录 Prometheus 容器化部署,配合Grafan画图工具监控节点 部署 Prometheus 部署 node_exporter 部署grafana Prometheus 容器化部署,配合G ...

  4. 在微服务架构下基于 Prometheus 构建一体化监控平台的最佳实践

    欢迎关注方志朋的博客,回复"666"获面试宝典 随着 Prometheus 逐渐成为云原生时代的可观测事实标准,那么今天为大家带来在微服务架构下基于 Prometheus 构建一体 ...

  5. prometheus之docker监控与告警系列(二)

    序 本系列主要介绍prometheus+cadvisor+alertmanager打造docker监控,主要监控指定docker容器是否挂掉 本节主要熟悉prometheus+Alertmanager ...

  6. 360容器平台监控实践

    女主宣言 360 近年来上线了容器云平台,给团队工作带来了一些便利,同时也给运维工作带来了很多挑战.InfoQ记者张婵10月30日采访整理,首发于公众号"高效开发运维". PS:丰 ...

  7. Docker 容器安装监控软件 cAdvisor

    介绍 Docker 容器的监控方案有很多,除了 Docker 自带的docker stats命令,还有很多开源的解决方案, 例如 sysdig.cAdvisor.Prometheus 等,都是非常优秀 ...

  8. Jmeter+Prometheus+Grafana性能监控平台:将JMeter压测数据输出到Prometheus

    前言 1.小编之前写过一篇文章详细讲解了如何搭建一个HTTP接口性能实时监控测试平台,是用Grafana+Influxdb+Jmeter组合实现的,可以参考我写的这篇博客https://editor. ...

  9. 作者领读 | Prometheus云原生监控

    撰文:朱政科 01 作者导读 昨天收到书,用了两天时间,我也亲自把这本书读完了一遍.今天写这篇文章的目的是带读者用正确的方式读这本书. <Prometheus云原生监控:运维与开发实战> ...

最新文章

  1. 感觉皮层实质性参与工作记忆的信息保存
  2. C++语言基础(11)-多态
  3. 【Guava】使用Guava的RateLimiter做限流
  4. 安装cv2(opencv-python)遇到的问题
  5. JMeter性能测试,完整入门篇(自己做测试了)
  6. 5 | Spatial-based GNN/convolution模型之DGC
  7. 1 企业实战(3) Redis服务部署和配置详解 (资源)
  8. Loaded runtime CuDNN library: 7103 (compatibility version 7100) but source was compiled with 7005 ..
  9. Linux 内核源码获取
  10. modbus tcp调试助手_wemos D1 arduino项目实战1-TCP协议连接Tlink平台①
  11. 两个不同网段的局域网如何互通_不同品牌的对讲机如何实现互通?
  12. 杰出人士的七种共性之5-独木求林
  13. Flink checkpoint机制以及恢复
  14. 图片裁剪为特定形状 ppt
  15. CCC认证介绍(转载)
  16. Python学习:小数/浮点数(float)类型详解
  17. Matlab学习笔记2011-09-16【数据分析】
  18. js 判断手机操作系统(ios或Android)
  19. Roof-line Model性能分析模型简介
  20. 利用MPLS解决BGP路由黑洞问题

热门文章

  1. pd.read_csv处理含中文的文件
  2. 三星支付存在漏洞可导致黑客进行交易劫持
  3. CAGD(计算机辅助几何设计)大作业
  4. layui追加或动态修改表单元素不生效
  5. PC上阅读电子书的软件:Sumatra PDF和calibre
  6. 微信消息收发与微信内部emoji表情转义
  7. centOS7 防火墙关闭 远程端口无法访问问题
  8. android 自定义园动画,Android 自定View实现仿QQ运动步数圆弧及动画效果
  9. 【分享】常用JS(2)
  10. 如何将一个HTML页面嵌套在另一个页面中