Prometheus Grafana快速搭建
Prometheus
Prometheus和Grafana组合基本上是监控系统的标配。Prometheus做存储后端,Grafana做分析及可视化界面。
普罗米修斯是开源的系统监控/报警工具库,功能非常全,且拥有活跃的开发者和用户社区。Prometheus通过HTTP定期主动拉取(Pull)的方式获得指标(直接获取或通过gateway推送),在本地存储所有抓取的样本,并对这些数据运行规则,从现有数据聚合和记录新的时间序列,或生成警报。
Prometheus原生的可视化界面做得比较原始(主要用于调试),所以社区(官方推荐)使用Grafana来做数据展示。
Grafana专注于数据展示,有着丰富用成熟的展示方式和插件,数据源支持Elasticsearch, Prometheus, Graphite, InfluxDB等等。可以让你通过界面点击(无需写前端代码)快速搭建一个非常专业漂亮的展示界面。即便对于前端零基础的开发者也非常友好!
安装Prometheus
在官网下载需要的版本(
uname -rv
查看linux内核版本及发行号)。比如x86的就下载linux-386系列。Prometheus会主动通过HTTP请求来收集受监控目标的指标。 比如它也通过HTTP Rest API导出了自己的健康状态数据,所以也可以用来监控自己。解压下载源文件内包含一个基本的
prometheus.yml
配置可以参照。配置非常简单。global: # 全局配置
scrape_interval: 15s #主动拉取指标的间隔
evaluation_interval: 15s #计算间隔 scrape_configs: #监控的目标配置
- job_name: prometheus #名称
static_configs: # 静态配置
- targets: ['127.0.0.1:9090'] #监控目标暴露的HTTP API端口,是个列表
- 把里面的localhost改成你对应机器的IP。
- 其它详细的配置可见配置文档。
前台启动Prometheus,如果是在生产环境,需要后台启动时,最好自行配置Systemd。
# Start Prometheus.
# By default, Prometheus stores its database in ./data (flag --storage.tsdb.path).
./prometheus --config.file=prometheus.yml
用浏览器打开http://IP:9090/metrics查询所有指标列表。
用浏览器打开http://IP:9090/graph,原生的简易的展示界面(太简陋了,基本没人会用)。
PS:因为Promethues自己导出的指标和展示界面都是同一个9090端口。但实践中metrics接口指向的是目标机器的指标列表,用于Promethues主动拉取。
丰富的Exporter可以下载使用,开箱即用。下面可以用NodeExporter来做个范例。
安装NodeExporter
NodeExporter暴露很多和硬件/软件相关的指标(metrics)。
- 直接下载对应的版本。
- 解压NodeExporter。
$ tar xvfz node_exporter-*
$ cd node_exporter-*
启动NodeExporter。
$ ./node_exporter
INFO[0000] Starting node_exporter (version=0.18.1, branch=HEAD, revision=3db77732e925c08f675d7404a8c46466b2ece83e) source="node_exporter.go:156"
INFO[0000] Build context (go=go1.12.5, user=root@b50852a1acba, date=20190604-16:41:43) source="node_exporter.go:157"
INFO[0000] Enabled collectors: source="node_exporter.go:97"
INFO[0000] - arp source="node_exporter.go:104"
...
INFO[0000] Listening on :9100 source="node_exporter.go:170"
可以使用
./node_exporter -h
查看具体的启动参数。从上面可以看它使用的端口是9100,所有的指标列表都可以和上面示例中的prometheus的接口一样:$ curl http://localhost:9100/metrics
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 2.8138e-05
go_gc_duration_seconds{quantile="0.25"} 4.1588e-05
go_gc_duration_seconds{quantile="0.5"} 0.000102923
go_gc_duration_seconds{quantile="0.75"} 0.000162106
go_gc_duration_seconds{quantile="1"} 0.000495923
go_gc_duration_seconds_sum 0.060153937
go_gc_duration_seconds_count 537
# HELP go_goroutines Number of goroutines that currently exist.
...
可以看到所有关于node_exporter的指标列表。接下来就是把让prometheus来取这些指标。
配置prometheus拉node exporter的指标。即把targets增加9100端口。
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['127.0.0.1:9100']
重启prometheus。
./prometheus --config.file=./prometheus.yml
再次查看浏览器打开graph查看:http://127.0.0.1:9090/graph。勾选
Enable query history
后直接输入以node就可以看到大量关于node为前缀的指标了。比如:node_filesystem_avail_bytes
查看文件系统可用空间大小情况。
这个界面还是太原始了,但可以用来体验一下PromQL。接下来演示一下接入grafana来展示这些数据。
安装Grafana
按官方指引下载安装:比如Centos安装是
$ wget https://dl.grafana.com/oss/release/grafana-6.3.3-1.x86_64.rpm
$ sudo yum localinstall grafana-6.3.3-1.x86_64.rpm
配置grafana
你可以在/etc/grafana/grafana.ini
中配置端口及其它的,具体所有的配置项在: https://grafana.com/docs/installation/configuration/,我们这里都保持默认值,端口默认为3000.用户名/密码默认为admin。
你可以在这里找到对应的启动方式,比如在CentOS上就是
sudo service grafana-server start
启动成功后,你可以使用浏览器打开http://IP:3000使用admin/admin登录。
创建界面
Prometheus的数据源(data source)
- 点击侧边栏中的Grafana图标 -> DataSources -> Add New
- 选择Prometheus类型.
- 设置Prometheus的对外URL(比如 http://IP:9090).
- 点击Add添加
Prometheus图表展示
- 点击graph标题 --> Edits.
- 在Metrics标签下选择你上一步刚增加的Prometheus数据库。
- 在Query字段中输入Prometheus表达式,会自动补全。
- 自定义图表横坐标中指标的名称: Legend format。
导入Dashboards
Grafana.com上有很多别人分享的优化的dashboards,我们可以直接从上面找到node exporter对应的dashboard来使用。下载对应的json文件,然后导入。
其它
在Grafana上如何为选择合适的图表来展示Prometheus对应的数据类型(单调递增的Counter,可降可升的Gauge,用于柱状图展示的Histogram),提供滑动窗口求和的Summary。
Reference
Prometheus Grafana快速搭建的更多相关文章
- Telegraf+InfluxDB+Grafana快速搭建实时监控系统 监控postgresql
Telegraf+InfluxDB+Grafana快速搭建实时监控系统 监控postgresql
- 通过 Telegraf + InfluxDB + Grafana 快速搭建监控体系的详细步骤
第一部分 Telegraf 部署和配置 Telegraf 是实现 数据采集 的工具.Telegraf 具有内存占用小的特点,通过插件系统开发人员可轻松添加支持其他服务的扩展. 在平台监控系统中,可以使 ...
- Prometheus+Grafana安装搭建
介绍 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB).Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本. 2016年 ...
- Prometheus+Grafana+Altermanager搭建监控系统
基本概念 Prometheus 时间序列化数据库,我的理解就是将数据打上标签,以时间维度存储.后面有机会在深入研究. Prometheus架构如下: Grafana Prometheus中存储的数据, ...
- Prometheus+Grafana+Alertmanager搭建全方位的监控告警系统
prometheus安装和配置 prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据. 2.Client Library: 客户端库,检测应用程序代码,当 ...
- Prometheus+Grafana监控-基于docker-compose搭建
前言 Prometheus Prometheus 是有 SoundCloud 开发的开源监控系统和时序数据库,基于 Go 语言开发.通过基于 HTTP 的 pull 方式采集时序数据,通过服务发现或静 ...
- Prometheus+Grafana+kafka_exporter监控kafka
Prometheus+Grafana+kafka_exporter搭建监控系统监控kafka 一.Prometheus+Grafana+kafka_exporter搭建监控系统监控kafka 1.1K ...
- SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控
无论是使用SpringBootAdmin还是使用Prometheus+Grafana都离不开SpringBoot提供的核心组件Actuator.提到Actuator,又不得不提Micrometer ...
- Prometheus+Grafana搭建监控系统
之前在业务中遇到服务器负载过高问题,由于没有监控,一直没发现,直到业务方反馈网站打开速度慢,才发现问题.这样显得开发很被动.所以是时候搭建一套监控系统了. 由于是业余时间自己捯饬,所以神马业务层面的监 ...
随机推荐
- Yii2中多表关联查询
准备条件: 1.首先准备两张表: customer(用户表)(id, name) order(订单表)(id, customer_id, price) customer 表和 order 表之间是一对 ...
- Laravel 框架对于分表进行统计合并查询的思路
当对数据表进行水平分表之后,若要进行数据统计,往往需要对所有分表一起进行联合查询.在使用 Laravel 框架时,可以利用 Model 类的 setTable 方法对于多个表进行合并查询. 举个例子, ...
- 字节跳动——IT技术工程师面试题
.自我介绍 .项目介绍 .争对个人项目进行提问 .场景模拟 .1如何知道用户的指定视频(类似于QQ发视频)的服务是正常的 .使用appum进行自动化测试 .使用bat脚本获取进程状态,然后定时发送em ...
- 分析Android APK-反编译修改打包
2.2 这个章节的主要作用就是,修改一个别人的app,在里边增加一段自己的广告代码. 2.2.1 UAA 编译修改,工具安装配置之前讲过,无需再赘述.我们找到了一款游戏app的apk, 找到所在的ap ...
- CODING 2.0 服务升级:一站式服务体系助力企业研发上云
近日,CODING 在 KubeCon 2019 上海站上正式推出了 DevOps 的一站式解决方案: CODING 2.0,除了进行 产品 及 产品理念 的升级,还对用户服务进行了整体升级,主要涵盖 ...
- C语言入门-枚举
常量符号化 用符号而不是具体的数字来表示程序中的数字 一. 枚举 用枚举而不是定义独立的const int变量 枚举是一种用户定义的数据类型,它用关键字enum如以下语句来声明 enum 枚举类型名字 ...
- ElasticSearch: SearchContextMissingException[No search context found for id [173690]]
这个原因是scroll的时间设置不够久,设久一些就可以了. ----------------------------------- 原文:https://www.cnblogs.com/chenmz1 ...
- SpringAOP(注解方式实现面向切面编程)之常用Before、After、Around
一.首先在Springmvc.xml文件中引入如下内容(本示例是在ssm框架基础上实现的) 1.引入命名空间 xmlns:aop="http://www.springframework.or ...
- python(一) jupyter 安裝
copy from https://jupyter.org/install Getting started with JupyterLab Installation JupyterLab can be ...
- pytorch 中改变tensor维度的几种操作
具体示例如下,注意观察维度的变化 #coding=utf-8 import torch """改变tensor的形状的四种不同变化形式""" ...