(一)prometheus与grafana介绍与安装

#(1)prometheus介绍

prometheus是一款 强大的监控系统和时序系统
采集数据: 在目标主机上安装exporter, exporter组件会在目标处收集监控数据, 并暴露一个http接口供prometheus查询, prometheus通过pull的方式来采集数据; 
目前exporter已经采集绝大多数的第三方数据, 比如nginx, mysql等; 支持的exporter列表https://prometheus.io/docs/instrumenting/exporters/prometheus组件: prometheus server   : 负责收集和存储指标数据,支持表达式查询,和告警的生成prometheus exporter altermanager PushgatewayWeb UI 

#(2)安装 Prometheus server
prometheus支持多种安装方式, 例如docker, ansible;
1)方式一:二进制安装

test -d /tools || mkdir /tools; cd /tools 
wget https://github.com/prometheus/prometheus/releases/download/v2.4.3/prometheus-2.4.3.linux-amd64.tar.gz
tar xvfz prometheus-2.4.3.linux-amd64.tar.gz
cd prometheus-2.4.3.linux-amd64
./prometheus --version
./prometheus --config.file=prometheus.yml   #启动

2)方式二安装 docker安装

docker run -d -p 9090:9090 prom/prometheus

3)配置文件

# cat prometheus.yml 
# my global config
global:scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: Prometheusstatic_configs:- targets: ['localhost:9090']labels:instance: Prometheus- job_name: mysqlstatic_configs:- targets: ['192.168.1.42:9104']labels:instance: db1- job_name: linux01static_configs:- targets: ['192.168.1.42:9100']labels:instance: db1global 块:Prometheus 的全局配置,比如 scrape_interval 表示 Prometheus 多久抓取一次数据,evaluation_interval 表示多久检测一次告警规则;
alerting 块:关于 Alertmanager 的配置,这个我们后面再看;
rule_files 块:告警规则,这个我们后面再看;
scrape_config 块:这里定义了 Prometheus 要抓取的目标,我们可以看到默认已经配置了一个名称为 prometheus 的 job,这是因为 Prometheus 在启动的时候也会通过 HTTP 接口暴露自身的指标数据,这就相当于 Prometheus 自己监控自己,虽然这在真正使用 Prometheus 时没啥用处,但是我们可以通过这个例子来学习如何使用 Prometheus;可以访问 http://localhost:9090/metrics 查看 Prometheus 暴露了哪些指标;

#(3)学习 PromQL

1)进入prometheus的http页面, http://localhost:9090

(一)prometheus与grafana介绍与安装

    Alerts 展示了定义的所有告警规则Status 可以查看各种 Prometheus 的状态信息Graph页面  提供的一种特殊表达式来查询监控数据,这个表达式被称为 PromQL(Prometheus Query Language)通过 PromQL 不仅可以在 Graph 页面查询数据,而且还可以通过 Prometheus 提供的 HTTP API 来查询

2) 数据模型

一条 Prometheus 数据由一个指标名称(metric)和 N 个标签(label,N >= 0)组成的promhttp_metric_handler_requests_total{code="200",instance="Prometheus",job="Prometheus"}  14数据的指标名称为 promhttp_metric_handler_requests_total 并且包含三个标签 code、instance 和 job ,这条记录的值为 14Prometheus 是一个时序数据库,相同指标相同标签的数据构成一条时间序列

3)Prometheus 的数据分类

Counter 用于计数 例如:请求次数、任务完成数、错误发生次数,这个值会一直增加,不会减少
Gauge 就是一般的数值,可大可小,例如:温度变化、内存使用变化
Histogram 是直方图,或称为柱状图,常用于跟踪事件发生的规模,例如:请求耗时、响应大小 ,它特别之处是可以对记录的内容进行分组,提供 count 和 sum 的功能
Summary: 和 Histogram 十分相似,也用于跟踪事件发生的规模,不同之处是,它提供了一个 quantiles 的功能,可以按百分比划分跟踪的结果。例如:quantile 取值 0.95,表示取采样值里面的 95% 数据

4)PromQL 入门

up :  表示 Prometheus 能否抓取 target 的指标,用于 target 的健康检查
up{job="prometheus"}  指定某个 label 来查询 不仅可以使用 = 号,还可以使用 !=、=~、!~
up{job!="prometheus"}
up{job=~"192\.168\.0\.107.+"}
up{job=~"server|mysql"}  =~ 是根据正则表达式来匹配
http_requests_total[5m]   查出 5 分钟内所有抓取的 HTTP 请求数  注意它返回的数据类型是 Range vector,没办法在 Graph 上显示成曲线图, 会用在 Counter 类型的指标上,并和 rate() 或 irate() 函数一起使用rate(http_requests_total[5m])  计算的是每秒的平均值,适用于变化很慢的 counter
irate(http_requests_total[5m]) 计算的是每秒瞬时增加速率,适用于变化很快的 counter
PromQL 还支持 count、sum、min、max、topk 等 聚合操作

#(4)安装 Grafana
虽然 Prometheus 提供的 Web UI 也可以很好的查看不同指标的视图,但是这个功能非常简单,只适合用来调试。要实现一个强大的监控系统,还需要一个能定制展示不同指标的面板,能支持不同类型的展现方式(曲线图、饼状图、热点图、TopN 等),这就是仪表盘(Dashboard)功能。因此 Prometheus 开发了一套仪表盘系统 PromDash,不过很快这套系统就被废弃了,官方开始推荐使用 Grafana 来对 Prometheus 的指标数据进行可视化,这不仅是因为 Grafana 的功能非常强大,而且它和 Prometheus 可以完美的无缝融合。

1)docker安装

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

2)访问: http://localhost:3000/ , 默认用户名和密码是admin和admin
(一)prometheus与grafana介绍与安装

3)配置数据源
(一)prometheus与grafana介绍与安装

要注意的是,这里的 Access 指的是 Grafana 访问数据源的方式,有 Browser 和 Proxy 两种方式。
Browser 方式表示当用户访问 Grafana 面板时,浏览器直接通过 URL 访问数据源的;
而 Proxy 方式表示浏览器先访问 Grafana 的某个代理接口(接口地址是 /api/datasources/proxy/),由 Grafana 的服务端来访问数据源的 URL,如果数据源是部署在内网,用户通过浏览器无法直接访问时,这种方式非常有用。

参考文档: https://www.aneasystone.com/archives/2018/11/prometheus-in-action.html

转载于:https://blog.51cto.com/1000682/2361984

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

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

相关文章

男人该知道的人生感悟(图)

一、家庭篇&#xff1a; 1、孝敬自己的父母&#xff0c;男人往往没有女人心细&#xff0c;所以你要经常提醒自己&#xff0c;常回家看看&#xff0c;不要等到“子欲养而亲不待”。 2、遇到事情&#xff0c;多听听父母的意见&#xff0c;他们是这个世界上最爱你的人。 3、好好…

2020-4-3

题目一 如何让IE8和IE8以下浏览器支持HTML5 <!–[if IE]> <script src"http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]–>上面这段代码仅会在IE浏览器下运行&#xff0c;还有一点需要注意&#xff0c;在页面中…

三维人脸前期调研

多张人脸照片进行3D人脸重建一种开源方法VisualSMeshlab目前的主流是VisualSFM&#xff08;找出各张照片中的特征点&#xff0c;进行两两匹配&#xff0c;根据匹配的结果&#xff0c;利用射影定理计算得到相机位置等场景信息&#xff0c;将场景信息与原始照片结合在一起得到照片…

git 报错:was cached in the local repository, resolution will not be reattempted until the upda

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Could not resolve dependencies for project com.foreveross:gaei-syncpm:jar:0.0.1-SNAPSHOT: Failure to find com.oracle.jdbc:ojd…

6000个边缘Kubernetes节点驱动城市80万次智能停车,如何成为可能?

城市的街道因为汽车数量的增长越来越繁忙&#xff0c;对于驾车一族而言&#xff0c;在热门区域寻找停车场更是无比头痛的事情。然而与此同时&#xff0c;其实也许很多办公楼、住宅楼、酒店和公共车库中仍有许多付费停车的资源未被充分利用。 ParkBee就是这样一家为城市提供智能…

英语学习之道小谈

想学好英语&#xff0c;首先要培养对英语的兴趣。兴趣是最好的老师&#xff0c;是学习英语的巨大动力&#xff0c;有了兴趣&#xff0c;学习就会事半功倍。我们都有这样的经验&#xff1a;喜欢的事&#xff0c;就容易坚持下去&#xff1b;不喜欢的事&#xff0c;是很难坚持下去…

2020-4-4

题目一 post方式get方式提交表单的主要区别? post一般用于传递较大的数据&#xff0c;在数据传递之前会有打包操作&#xff0c;所以可能会造成数据传递数据相对较慢的情况&#xff0c;不过传输的数据都能够被正确的解析&#xff0c;不会出现类似于中文乱码的状况。通过url链接…

python 进程与线程(理论部分)

一、理论部分 一 什么是进程 进程&#xff1a;正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。 举例&#xff08;单核多道&#xff0c;实现多个进程的并发执行&#xff09;&#xff1a; egon在一个时间段内有很多任务要做&#xff1a;python备课的任务&#xff0c;…

Maven : 将 Jar 安装到本地仓库和 Jar 上传到私服

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Jar的maven配置 <dependency><groupId>org.apache.thrift</groupId><artifactId>libthrift</artifactId&g…

Flink 1.7.2 dataset transformation 示例

Flink 1.7.2 dataset transformation 示例 源码 https://github.com/opensourceteams/flink-maven-scala概述 Flink transformation示例map,flatMap,filter,reduce,groupBy,reduceGroup,combineGroup,Aggregate(sum,max,min)distinct,join,join funtion,leftOuterJoin,rightOut…

2020-4-5

题目一&#xff1a; <!DOCTYPE html> <html> <head> <meta charset" utf-8"> <script> window.onloadfunction(){let txtdocument.getElementById("txt");let stdocument.getElementById("st");let formdocumen…

肾脏的保养

饮食方面保养肾脏&#xff1a; 1、适量饮水不憋尿&#xff0c;每天需喝1500&#xff5e;2000ml的水&#xff0c;保持每天的尿量在1500ml左右。 2、饮食不要重口味&#xff0c;少吃不健康的腌制品或其他加工的食品。 不可纵欲&#xff1a; 纵欲会令肾脏受损害&#xff0c;…

sql 中 between 的边界问题 ---- between 边界:闭区间,not between 边界:开区间

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 BETWEEN 用以查询确定范围的值&#xff0c;这些值可以是数字&#xff0c;文本或日期 。BETWEEN 运算符是闭区间的&#xff1a;包括开始…

取代ZooKeeper!高并发下的分布式一致性开源组件StateSynchronizer

StateSynchronizer是开源分布式流存储平台Pravega的核心组件。StateSynchronizer组件以stream为基础&#xff0c;对外提供一致性状态共享服务。StateSynchronizer允许一组进程同时读写同一共享状态而不必担心一致性问题。本文将从共享状态和一致性的角度出发&#xff0c;详细描…

[51nod1773]A国的贸易

题目链接&#xff1a; 51nod1773 首先可以很简单的写出每一天的DP转移式&#xff1a; \(f[i][x]\sum f[i-1][x\ xor\ k](k0\ or\ k2^j,0\le j<n)\) 其中\(f[i][x]\)表示第\(i\)天\(x\)国货物数量\((0\le x<2^n)\)。 那么因为\(k\)有固定的取值&#xff0c;设数组\(A\)表示…

Linux基础学习导图

网上教程太多啦&#xff0c;先水一波导图&#xff0c;笔记日后慢慢上传~ 一款常用的软件很简单易用&#xff0c;推荐大家下载xmind vim学习相关的思维导图&#xff1a; 可以通过ubuntu自带的vim书学习&#xff08;终端输入vimtutor&#xff09;

一个学中医女生的保养身体法

首先是关于皮肤的外部保养法。1.关于头发 头发油是因为肝火太旺了&#xff0c;身体里内脏不能消化油脂&#xff0c;所以就把它排到脸上和头上了,办法是&#xff1a;每天晚上用滚烫的热水泡脚泡上半个小时&#xff0c;慢慢就会好了。注&#xff1a;水不会一直热&#xff0c;所以…

实现 SSH 无密码登录 、 ssh 常用命令

OpenSSH是互联网技术用户所依赖的SSH连接工具的免费版本。 telnet&#xff0c;rlogin 和 ftp 用户可能没有意识到他们的密码是通过互联网传输的&#xff0c;并且是未加密的。 但是 OpenSSH 加密所有流量&#xff08;包括密码&#xff09;以有效消除窃听&#xff0c;连接劫持和其…

团队项目冲刺第一天

今天&#xff0c;开了第一天的团队会议&#xff0c;我们把团队任务分配了一下&#xff0c;今天的任务是学习了一下Android开发的基础知识&#xff0c;看了哔哩哔哩上面的教学视频&#xff0c;对于一些转换页面&#xff0c;按钮&#xff0c;文本的配置有所了解&#xff0c;明天开…

简单的C语言五子棋(两种模式:移动光标输入坐标和移动光标按键)

五子棋&#xff1a; 需要的数据&#xff1a; 1、定义棋盘数组 2、定义变量用于记录棋子位置 3、定义角色变量 业务逻辑&#xff1a; 是否需要对数据进行初始化 for(;; ) { 1、清理屏幕&#xff0c;显示棋盘 2、落子 坐标要合法&#xff0c;原位置不能有棋子 3、检查是否形成五子…