Prometheus(一):Web服务环境监控



写在前面

现每个后端的同学的日常都在跟服务(接口)打交道,维护老的比较大单体应用、按业务拆得相对比较细的新服务、无论企业内部用的,面向用户的前端的服务。流量大的有流量小的,有重要的有不那么重要的。

但是,不管怎样的服务,我们总思考过这样的问题:我能不能实时监控/查看服务的运行情况呢,服务一挂掉我马上能收到预警呢?这个问题的答案就是:服务监控。

服务监控一般包括两部分:

  1. 服务运行环境的监控。毕竟现在云环境所占比例越来越多不能单纯叫服务器(硬件)监控了。我们日常遇到的服务挂掉多少是运行环境出问题,宕机啊,网络,磁盘故障等。(本篇先聊聊这个);

  2. 服务本身的监控,也就是web应用的监控。下一篇再聊。

Prometheus简介

现在我们做监控一般是这样的:

  • 先搭个监控服务端

  • 各被监控客户端往服务端push数据(或服务端定时主动去客户端pull,我们现在就是这种模式)

  • 服务端把pull的数据存到时序数据库

  • 再搭建一个图形面板Grafana展示收集的监控数据

我们现在用的监控服务端是prometheus

 Prometheus官网地址:https://prometheus.io/

 Prometheus GitHub:https://github.com/prometheus/prometheus/

   Grafana Github: https://github.com/grafana/grafana

其实以上搭配几乎已经成业界标准(个人角度)

prometheus的架构

上一张prometheus架构图

大家可以花点时间看一下

其中

  • Exporter:负责收集目标对象(如Host或Container)的性能数据,并通过HTTP接口供Prometheus Server获取。每一个客户端都会提供一个 /metrics 的get接口

  • Prometheus Server:负责从客户端(Exporters)拉取和存储监控数据,并给用户通过PromQL查询。

  • 可视化组件 Grafana:获取Prometheus Server提供的监控数据并通过Web UI的方式展现数据的仪表盘。

  • AlertManager:负责根据告警规则和预定义的告警方式发出例如Email、Webhook之类的告警。

prometheus存储数据结构

我先贴个示例:

# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 3109478400
# HELP dotnet_total_memory_bytes Total known allocated memory
# TYPE dotnet_total_memory_bytes gauge
dotnet_total_memory_bytes 4289400
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 4.01
# HELP http_requests_in_progress The number of requests currently in progress in the ASP.NET Core pipeline. One series without controller/action label values counts all in-progress requests, with separate series existing for each controller-action pair.
# TYPE http_requests_in_progress gauge
http_requests_in_progress{method="GET",controller="",action=""} 1
# HELP process_num_threads Total number of threads
# TYPE process_num_threads gauge
process_num_threads 19

#HELP 是对监控指标(Metric)的注释说明

#TYPE 监控字段的类型 ,比如process_virtual_memory_bytes 是 gauge类型的监控(具体可看这里)

在形式上,所有的指标(Metric)都通过如下格式标示:

<metric name>{<label name>=<label value>, ...}

指标的名称(metric name)可以反映被监控样本的含义(比如,http_request_total - 表示当前系统接收到的HTTP请求总量)。指标名称只能由ASCII字符、数字、下划线以及冒号组成并必须符合正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*

标签(label)反映了当前样本的特征维度,通过这些维度Prometheus可以对样本数据进行过滤,聚合等。标签的名称只能由ASCII字符、数字以及下划线组成并满足正则表达式[a-zA-Z_][a-zA-Z0-9_]*

例如:

api_http_requests_total{method="POST", handler="/messages"}

也可以这样写(比较少见大家看第一种写法就好):

{__name__="api_http_requests_total",method="POST", handler="/messages"}

Prometheus Server环境搭建

运行环境:

我这里有两台测试的虚拟机 192.168.43.215192.168.43.216

因为这里是测试只用docker启动一台在215即可;

先准备配置文件:/etc/prometheus/prometheus.yml

global:scrape_interval: 15sevaluation_interval: 15sexternal_labels:monitor: 'edc-lab-monitor'alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093rule_files:# - "first.rules"# - "second.rules"scrape_configs:- job_name: 'prometheus_server'static_configs:- targets: ['192.168.43.215:9090']#主机数据收集- job_name: 'node-exporter'static_configs:- targets: ['192.168.43.215:9100','192.168.43.216:9100']#容器数据收集- job_name: 'cAdvisor'static_configs:- targets: ['192.168.43.215:9101','192.168.43.216:9101']

docker:

docker run -d -p 9090:9090 \-v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \--name prometheus \prom/prometheus

跑起来了

http://192.168.43.215:9090/targets

前面四个State=DOWN表示该数据收集节点挂了,这里因为我们还没运行起来

顺便说一下正式环境一般用集群,但是其实prometheus单机也有非常不错的性能。足以满足很多吞吐量不是非常夸张的监控需求。

节点数据收集--主机数据收集

来,开始收集主机数据了,用的是:node_exporter

215,216 都给安排上

docker run

docker run -d -p 9100:9100 \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
--name node-exporter \
prom/node-exporter \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

跑起来了

节点数据收集--docker容器数据收集

docker容器数据的收集用的是:cAdvisor

同样的,215,216 都给安排上

docker run

docker run \--volume=/:/rootfs:ro \--volume=/var/run:/var/run:rw \--volume=/sys:/sys:ro \--volume=/var/lib/docker/:/var/lib/docker:ro \--volume=/dev/disk/:/dev/disk:ro \--publish=9101:8080 \--detach=true \--name=cadvisor \google/cadvisor:latest

跑起来了

再看看prometheus server

http://192.168.43.215:9090/targets

可以看到之前State=DOWN的红色节点都绿油油起来了

数据都准备好了,来看看我们美美的仪表盘吧~

集成Grafana仪表盘

安装,只安装一个215就好了

依旧是 docker run

docker run -d --name=grafana -p 3000:3000 grafana/grafana

首次登录账户密码都是:admin 并会要求你重置

重置密码后进去主页

初始化数据源

点击“Add data source”,选择 Prometheus

注意填对 prometheus server 地址,点击底部的“保存 & 测试” 按钮

出现这个表示数据源添加成功

数据源添加好了,准备分别为主机监控和容器监控添加仪表盘;

选个合适的仪表盘

https://grafana.com/grafana/dashboards?search=docker 可以在这里顺便搜,选个合适自己的(当然也可以自己构建)

我为node_exporter选择id=8919,cadvisor选了id=11558,大佬们做好的仪表盘

import仪表盘

点击这个import

填入8919,后点击load

加载成功后继续点import

美滋滋

同样流程把cadvisor的11558也给安排上:

爽歪歪~~,当然还有更多选择,这里只是抛砖引玉,大家可以慢慢找个符合自己需求的仪表盘,实在找不到自己绘制也行。

总结

因为硬件、服务环境监控这些主要是运维的业务范畴,我就写简单带过。

下篇讲讲怎么在Asp.Net Core WebApi中集成。有时间也会多写写Alert预警等,先挖坑。

参考

主要还是跟随龙哥(Edison Zhou)步伐

https://www.cnblogs.com/edisonchou/p/docker_monitor_introduction_part3.html

https://www.cnblogs.com/edisonchou/p/docker_monitor_introduction_part2.html

https://yunlzheng.gitbook.io/prometheus-book/

https://www.cnblogs.com/catcher1994/p/13513184.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

acwing Linux 租云服务器环境配置

今天给大家讲解acwing Linux 租云服务器&环境配置&#xff0c;这里以阿里云为例子给大家讲解一下如何租用这个云服务器&#xff0c;现在有阿里云、华为云、腾讯云、京东云这么几个大的服务系统&#xff0c;我个人是喜欢华为云的嘻嘻&#xff0c;因为个人比较喜欢华为公司&a…

Shell练习题(持续更新)

1.输出1-10echo {1..10} seq -s 1 10 #默认分隔符\n for((i1;i<10;i));do echo -n "$i ";done;echo #最后echo为了换行 i1;while [ $i -le 10 ];do printf "%s " $i;i$[$i1];done;echo awk BEGIN{for(i1;i<10;i) printf "%s ",i;};…

楼层效果_1一28高楼最好最吉利的楼层是哪层?选楼层要注意什么?

在选择房屋楼层的时候&#xff0c;可能大家对于想过了&#xff0c;方法是比较纠结的&#xff0c;有些家庭可能考虑到室内的采光问题&#xff0c;有些可能考虑的是噪音的问题&#xff0c;更有些朋友们可能考虑的是室内的风水等相关问题&#xff0c;那么1一28高楼最好最吉利的楼层…

43秒处竟惊现刘强东!印度动作大片《WAR》终极预告曝光

全世界只有3.14 % 的人关注了青少年数学之旅都说印度是一个非常奇妙的国度&#xff0c;文能Z教治国&#xff0c;武能高产神片。科学家们骂骂咧咧地退出了群聊...这不&#xff0c;前不久印度又曝光了一部动作大片《WAR》&#xff1a;电影的剧情大概是讲述了一名印度士兵被派去消…

按id进行查找按名称进行排序_Excel工作表中如何按需要的顺序快速进行排序

在工作中&#xff0c;有时候需要经常对一组内容按一定的顺序来进行排序。如果每次都手动进行排序&#xff0c;会小号很多时间。因此可以将特定顺序添加到自定义序列中。有两种不同的操作方法可以来实现。方法一如图&#xff0c;现在有一列水果名称&#xff0c;之后需要都按照现…

20种最先进的机器人,感觉有点吓人!

全世界只有3.14 % 的人关注了青少年数学之旅随着科技的发展&#xff0c;机器人必然逐渐进入我们的生活&#xff0c;甚至在许多领域替代人类。以下是目前全球范围内最先进的一些机器人&#xff1a;Actroid-F这种实验性机器人的目标&#xff0c;是创造最逼真的仿人类机器人&#…

PDF批量删除注释

使用Adobe Acrobat Pro的批量处理完成 1.在“自定义”-“添加新工具集”-“动作向导”-将“创建新动作”加入-“保存”2.然后点新出现的“创建新动作”图标3.将“内容”-“删除所有注释”添加上&#xff0c;然后再添加上“保存和导出”中的保存4.保存设定的动作列表&#xff0c…

怎么让图片手机上排列_荣耀手机系列档次怎么排列?

目前&#xff0c;我们按照处理器和手机表现进行排列。荣耀magic2因为充电口(塑料问题)&#xff0c;所以&#xff0c;排名第一的位置我给荣耀V20&#xff01;其次&#xff0c;是荣耀magic2&#xff0c;然后是荣耀10&#xff0c;荣耀note10&#xff0c;其次是荣耀v10&#xff0c;…

金蝶显示服务器异常,金蝶提示云服务器异常

金蝶提示云服务器异常 内容精选换一换生命周期是指弹性云服务器从创建到删除(或释放)历经的各种状态。当云服务器网络异常、防火墙未放行本地远程桌面端口、云服务器CPU负载过高等场景均可能导致云服务器无法正常登录。当您的云服务器无法远程登录时&#xff0c;我们建议您首先…

Ajax 缓存

今天遇到ajax缓存的问题,指定同样的url和参数值总是有缓存&#xff0c;跳不到后台程序里&#xff01; 我先用了一种龌龊的方法,就是在url后又加了个由数据数产生的参数var randMath.random();var url"A.aspx?t"escape(t)"&r"escape(rand); 不知道大家…

S5PC100基于I2C子系统的lm75驱动流程图

转载于:https://blog.51cto.com/387929/1312237

如何有效利用碎片时间?这里有个办法

全世界只有3.14 % 的人关注了青少年数学之旅用了这么久微信&#xff0c;关注的公众号没有上千个&#xff0c;也有上百个&#xff0c;但其实大部分每天主动打开的公众号只有寥寥几个。今天就为大家推荐一些颜值与才华并存的好评公众号&#xff0c;希望你喜欢。【关注方式 】1 - …

gRPC四种模式、认证和授权实战演示

前言上一篇对gRPC进行简单介绍&#xff0c;并通过示例体验了一下开发过程。接下来说说实际开发常用功能&#xff0c;如&#xff1a;gRPC的四种模式、gRPC集成JWT做认证和授权等。正文1. gRPC四种模式服务以下案例演示&#xff0c;服务端用微软提供的模板创建&#xff0c;客户端…

ajax mode,DWR的三种Reverse Ajax Mode配置详解

Full Streaming ModeEarly Closing ModePolling Mode在DWR应用中.默认启用的是Full Streaming Mode .它是三种modes中最快的一种.它每60秒检查一次浏览器是否是活跃的.配置很简单:dwr-invokerorg.directwebremoting.servlet.DwrServletactiveReverseAjaxEnabledtrue然后在要使用…

摄像头预览左右翻转_轻薄翻转触控本里的高性能机型:惠普ENVY x360 13评测

自从今年3月末AMD锐龙4000系列处理器正式登陆移动平台以来&#xff0c;目前已有多款机型上市&#xff0c;并涌现出了不少高热度、高性价比的机型。我们也体验测试了其中数款机型&#xff0c;总体上给用户的印象是是价格香、性能强。而今天牛叔要聊的这款机型&#xff0c;也是搭…

聊一聊关于聊天记录的存储

背景 即时通讯(Instant Messaging)&#xff0c;也就是我们常说的 IM&#xff0c;其实在很多业务场景上都会有或多或少的应用&#xff0c;有的会是核心&#xff0c;有的会是辅助。既然是聊天&#xff0c;那么必然就会产生聊天记录&#xff0c;而且聊天记录随着人数的增加和时间的…

考勤机信息同步不到服务器,考勤机实时同步功能上线啦

一、考勤机管理重磅上线&#xff0c;告别手动处理打卡数据考勤机打卡仍然是当前企业主流的考勤方式&#xff0c;而考勤机打卡数据的核算也是HR最头痛的一点。HR每个月都要去电脑打开复杂难用的考勤机配套软件&#xff0c;导出并整理打卡数据&#xff0c;逐个统计员工的迟到、早…

ios gb2312转utf-8

2019独角兽企业重金招聘Python工程师标准>>> 靠&#xff0c;想写个爬虫功能&#xff0c;结果一直是乱码&#xff0c;终于找到了转码的方法了 (NSString *) gb2312toutf8:(NSData *) data{ NSStringEncoding enc CFStringConvertEncodingToNSStringEncoding(kCFStr…

数学特级教师:数学除了做题目,我还必须让他们看这些!

▲ 点击查看很多时候&#xff0c;我们把数学简单的归为算数&#xff0c;归为计算能力&#xff0c;但数学更多的是一种培养逻辑思维能力的方式。包括一元二次方程、或者向量&#xff0c;或者几何证明。而在我们传统的数学课上&#xff0c;更多的是通过做题来理解数学知识&…

烟袋斜街-后海,印象已模糊

上个周末和猪头&#xff0c;廖廖一起去的。大家都神往已久&#xff0c;但是从未去过&#xff0c;这次一并去了&#xff0c;了却心愿。我不在北京&#xff0c;神往但是不能前去自然可以理解&#xff0c;但是他们两个已经在北京生活了六年&#xff0c;向往了六年&#xff0c;路程…