第10章 探针监控 探针监控可以在应用程序的外部进行探测。你可以查询应用程序的外部特征:它是否响应开放端口上的轮询请求并返回正确的数据或响应码。 探针监控的一个示例是执行ICMP ping或echo检查并确认你已收到响应。 这种类型的探针监控也称为黑盒监控,因为我们将内部应用程序视为黑盒 ---- 10.1 探针架构 Prometheus通过运行Blackbox exporter来进行探测,该exporter会探测远程目标并暴露在本地端点上收集的任何时间序列 ,然后Prometheus作业将从这些端点中抓取指标 监控探针有三个约束: 它们需要能够访问到被探测的资源 探针需要放置在可以测试资源的正确位置上。 控制台包含exporter自身的指标,以便同时监控exporter本身 ---- 10.6 创建Prometheus作业 现在创建Prometheus作业抓取exporter指标 代码清单:http_probes
0x00 Prometheus容器监控解决方案 Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的。它是一个独立的开放源码项目,并且独立于任何公司。 不同于传统的运维监控工具,Prometheus是面向容器和微服务的监控系统,采用基于时间序列的存储方式,监控采集更加精确,监控频率更高,和容器和微服务兼容性更好。 随着目前容器和微服务的使用日趋广泛,Prometheus的应用范围将会越来越广。 0x01 Prometheus架构 Prometheus是面向容器和微服务的监控系统,对容器和微服务的兼容性好。 也通过中间网关支持push模型 通过服务发现或者静态配置,来发现目标服务对象 支持多种多样的图表和界面展示,grafana也支持它 Prometheus相对比其他监控的优势: 监控数据的精细程度高,采集精度可以达到 Grafana展示Prometheus监控的数据 如下是Prometheus支持的报警渠道,支持邮件,Pageduty,Wehooks,微信等。
mysql_exporter:用于收集MySQL性能信息 安装 > wget https://github.com/prometheus/mysqld_exporter/releases/download > vim /usr/local/prometheus/prometheus.yml scrape_configs: # 添加作业并命名 - job_name: 'mysql' # 静态添加 node static_configs: # 指定监控端 - targets: ['127.0.0.1:9104'] 重启prometheus服务 > systemctl reload prometheus.service 查看监控端 访问:https://rumenz.com:9090/targets Granfana 导入Mysql 监控 选择Import,Load框输入7362 效果展示 相关文章系统监控Prometheus安装和基本配置 系统CUP,内存,硬盘监控之node_exporter安装配置
# scrape_timeout is set to the global default (10s). /prometheus 正常的情况下,你可以看到以下输出内容: level=info ts=2018-10-23T14:55:14.499484Z caller=main.go:554 msg="Starting for connections" address=0.0.0.0:9090 level=info ts=2018-10-23T14:55:14.507999Z caller=main.go:564 msg file" filename=prometheus.yml level=info ts=2018-10-23T14:55:14.509509Z caller=main.go:650 msg="Completed loading of configuration file" filename=prometheus.yml level=info ts=2018-10-23T14:55:14.509537Z caller
例如,一个事务的99百分位数为10毫秒,这很容易理解:99%的事务在10毫秒或更短时间内完成,1%的事务处理时间超过10毫秒 百分位数是识别异常值的理想选择。 对于每秒10万个样本的示例,我们知道按时间序列收集的每个样本在磁盘上占用大约1到2个字节。 _tcp.example.com 300 IN SRV 10 1 9100 webapp1. _prometheus. _tcp.example.com 300 IN SRV 10 1 9100 webapp2. _prometheus. _tcp.example.com 300 IN SRV 10 1 9100 webapp3. 当Prometheus查询目标时,它会通过DNS服务器查找example.com域。
Prometheus+Grafana监控SpringBoot项目业务指标监控 1、SpringBoot项目配置 2、prometheus添加配置 3、Grafana配置 1、SpringBoot项目配置 Order order = null; try { if (orderAmount.compareTo(BigDecimal.valueOf(10 )) < 0) { throw new Exception("金额小于10时,模拟订单失败的情况"); } order = : 10s scrape_timeout: 10s metrics_path: '/actuator/prometheus' static_configs: - targets /prometheus 页面可以看到在上面 OrderServiceImpl 中添加的统计指标。
systemctl daemon-reload systemctl start elasticsearch_exporter systemctl enable elasticsearch_exporter 修改prometheus 配置 vim /etc/prometheus/prometheus.yml ... - job_name: 'elasticsearch_cluster' static_configs: - 重新加载prometheus配置
使用Prometheus监控cAdvisor cAdvisor将容器统计信息公开为Prometheus指标。 默认情况下,这些指标在/metrics HTTP端点下提供。 可以通过设置-prometheus_endpoint命令行标志来自定义此端点。 要使用Prometheus监控cAdvisor,只需在Prometheus中配置一个或多个作业,这些作业会在该指标端点处刮取相关的cAdvisor流程。 访问prometheus targets,确保是up状态 ? 查看图标监控仪表盘 ? 但是这个模板,无法选择根据主机选择。推荐另外一个模板,它是可以选择主机的。
1、Jenkins安装插件 2、配置插件 3、Prometheus配置 4、Grafana配置 Jenkins是一个非常好的持续集成工具,本文记录Prometheus对Jenkins进行监控,并通过 Grafana展示监控数据的过程 1、Jenkins安装插件 在Jenkins上安装插件,使Jenkins能够暴露指标给Prometheus收集,这个插件名称叫Prometheus metrics 设置完成后重启Jenkins服务,并且访问jenkins的url查看指标情况 https://jenkinsurl/prometheus ? 3、Prometheus配置 修改Prometheus的配置文件,新增对Jenkins的数据采集,本文中的Prometheus和Jenkins均部署在k8s集群 # vim prometheus-configmap.yaml 至此,通过Prometheus监控Jenkins完成
而提及Kafka的监控,历来都是个头疼的事情,Kafka的开源社区在监控框架上并没有投入太多的精力。 Eagle(目前使用中) Kafka Center(最近才开源,没有做测试) Prometheus + Grafana 以上开源监控方案,各有千秋,Kafka Manager,Kafka Eagle, 适合基本的Kafka监控。 如果企业已经使用上Prometheus,也非常方便将Kafka的监控集成到Prometheus上。 模板导入效果,后续可以根据自身业务进行修改,Prometheus上可以配置Kafka的报警策略。在dashboard上,可以跟Kafka主机的监控结合起来放到一个页面。 ?
监控是基础设施,监控的重要性可想而知,但在平常工作中,很多监控做的大而全,指标繁杂,告警颇多,其实抓住重要的黄金指标,保持简单的架构就是最好的,今天来研究一番prometheus。 因为prometheus是基于mertric的监控,所以不适用于日志logs、事件event、调用链tracing等监控,默认是pull模型,需要合理规划网络,最好不要转发,对于集群化以及水平扩展需要合理选择方案 Prometheus属于CNCF项目,有比较丰富的开源生态,和传统zabbix监控不同,提供了丰富的exporter满足各种业务需求,可以看到官方以及第三方的exporter,也可以自己编写exporter node-exporter: Prometheus 官方项目,采集机器指标如 CPU、内存、磁盘。 blackbox_exporter: Prometheus 官方项目,网络探测,dns、ping、http监控 process-exporter: 采集进程指标 node-problem-detector
为了能让这些条件更加充足,我们需要不断的收集数据,分析数据,监控数据,进而优化能优化的点。Prometheus 在这方面就为我们提供了很好的监控方案。 什么是 Prometheus? 另外,这些监控数据大多数时候是跟统计相关的,比如数据与时间的分布情况等,这需要有专业的度量知识。而这些正是 Prometheus 的擅长所在。 ):将指标进行量化平均,得到类似在 0~10ms 之间的请求数有多少,而 10~20ms 之间的请求数又有多少的直方图 Summary(摘要):histogram 在客户端是简单的分桶和分桶计数,由于 如果监控的数据发现问题,那么需要我们配置告警发现,快速处理。 Prometheus 配置 关于 Prometheus 的使用相信网上有很多详细教程,此处不再说明。 另外,由于 Prometheus 是奔着简单易拓展目的设计的,所以在分布式存储、集群、多租户等方面基本没有涉及,它更专注于实时监控。
对接grafana https://grafana.com/grafana/dashboards/9701
1、监控的堆栈: 业务逻辑 应用程序 操作系统 2、Prometheus 是 Pull的方式 3、USE方法:针对每一个资源,检查使用率、饱和度和错误。 流量:每秒HTTP的请求数或DB的事务数 错误:请求失败的速率 饱和度: 5、警报和通知: 哪些问题需要通知 谁需要被告知 如何告知 多久告知一次 何时停止告知 6、可视化:Prometheus+Grafana ---- 7、Prometheus架构 ?
某日需要为服务搭建一个监控系统来采集应用埋点上报的指标,经过一番对比,最终选择了 Prometheus 来作为我们的业务监控,因为它具有以下优点: 支持 PromQL(一种查询语言),可以灵活地聚合指标数据 code="200",env="test"} 查询结果会是一个瞬时向量: http_requests{host="host1",service="web",code="200",env="test"} 10 ,可以用以下的 PromQL: increase(http_requests{host="host1",service="web",code="200",env="test"}[:5m]) 要计算过去10 分钟内第90个百分位数: histogram_quantile(0.9, rate(employee_age_bucket_bucket[10m])) 在 Prometheus 中,一个指标(即拥有唯一的标签集的 解决了 Prometheus 的高可用,再来关注一下 Prometheus 如何对监控目标进行采集,当监控节点数量较小时,可以通过 Static Config 将目标主机列表写到 Prometheus
response_size } 运行 mtail --progs /etc/mtail --logs '/var/log/apache/*.access' prometheus配置 ? ?
介绍 随着k8s集群上面服务越来越多,大家更加关心的问题反而是服务能不能更稳定,这时候监控作用就体现出来了,下面主要说一下harbor是怎么用prometheus来监控的。 metadata: name: harbor namespace: monitor labels: app: harbor spec: revisionHistoryLimit: 10 name: harbor namespace: monitor spec: ports: - port: 9107 selector: app: harbor 部署完了之后,在prometheus
Prometheus(由go语言开发)是一套开源的监控&报警&时间序列(按照时间排序)数据库的组合。适合监控docker 容器。 因为kubernetes(俗称k8s)的流行带动了prometheus的发展。 它可以监控主机,服务,容器 https://prometheus.io/docs/introduction/overview/ 时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、 支持多种多样的图表和界面展示,可以使用第三方的工具来展示内容,如grafana 监控原理 Prometheus Server负责定时在目标上抓取metrics(指标)数据, 每个抓取目标[主机 也就是说prometheus会将获取到的监控数据打包成一个可访问的web页面,通过访问指定的url来确定主机的状态 Pull方式的优势是能够自动进行上游监控和水平监控,配置更少,更容易扩展,更灵活,更容易实现高可用
[管理员] Prometheus 实战 | Prometheus 概述 Prometheus(由 go 语言开发)是一套开源的监控&报警&时间序列数据库的组合。 适合监控 docker 容器。因为 kubernetes 的流行带动了 prometheus 的发展。 ②Prometheus 界面 通过浏览器访问 http:// 服务器 IP:9090 就可以访问到 Prometheus 的主界面: 默认只监控了本机一台,点 Status→点 Targets→可以看到只监控了本机 通过浏览器访问 http:// 被监控端 IP:9100/metrics 就可以查看到 node_exporter 在被监控端收集的监控信息: 回到 Prometheus 服务器的配置文件里添加被监控机器的配置段 : 回到 web 管理界面→点 Status→点 Targets→可以看到多了一台监控目标: 练习:加上本机 prometheus 的监控。
监控目标,可以采用服务发现或静态配置的方式。 支持多种统计数据模型,图形化友好。 client libraries,用于对接 Prometheus Server, 可以查询和上报数据。 push gateway ,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。 例如 Prometheus server 中 prometheus_local_storage_series_chunks_persisted, 表示 Prometheus 中每个时序需要存储的 chunks 例:时间在2018-01-01T20:10:30.781到2018-01-01T20:11:00.781范围内,间隔15秒,up的数据 [logstash@CP-ITSM-OMC-ZSC05 supervisor query=up&start=2018-01-01T20:10:30.781Z&end=2018-01-01T20:11:00.781Z&step=15s‘ {“status”:”success”,”data