监控实战Prometheus+Grafana
这期的分享是监控实战,其实不想写这篇的,因为网上相关的文章也挺多的,但是出于光说不练都是假把式,而且也想告诉你:当帅气的普罗米修斯(Prometheus)遇到高颜值的格拉法纳(Grafana)究竟会擦出什么样的火花?所以忍不住还是想分享啊。
为了实战,我们再次请出架构图,请注意图中红色圈 1 的部分,主要分两条线去实战。
第一条战线:Prometheus 如何监控机器?
采用标准的PGOne技术组件Prometheus Server + Grafana + node_exporter完成对机器的性能监控。
第二条战线:Prometheus 如何监控 flink?
采用技术组件client lib(flink-metrics-prometheus_x.jar) + PushGateway + Prometheus Server + Grafana完成对 flink 的监控。
1. Prometheus 如何监控机器?
工欲善其事必先利其器,先下载相关组件包。prometheus 提供了两种下载方式,第一种是二进制压缩包的方式,第二种是 docker 镜像的方式。
#方式1:二进制压缩包下载链接
https://prometheus.io/download/ #方式2:docker镜像链接
https://hub.docker.com/u/prom
本次实战均采用 docker 镜像下载。
docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana
下载完成成, 输入命令 docker images 列出本地主机上的镜像(由于pushgateway镜像之前在本机已经下载过,你如果第一次跟着做,应该看不到这个,后面操作会进行下载)。
做好准备工作。
#创建 grafana 数据存储目录
mkdir /opt/grafana-storage
#因为 grafana 会在这个目录写入文件,赋权限。
chmod 777 -R /opt/grafana-storage
#创建 prometheus 配置文件存放目录
mkdir /opt/prometheus/
#在 prometheus 配置文件目录下,创建prometheus.yml文件
vi /opt/prometheus/prometheus.yml
# prometheus.yml中配置静态监控对象 targets,输入如下配置内容(请注意修改 IP 为你的真实 IP):
global:
scrape_interval: 60s
evaluation_interval: 60s scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: 'prometheus' - job_name: linux
static_configs:
- targets: ['IP:9100']
labels:
instance: 'linux'
准备就绪,逐个启动组件。
# 启动 node-exporter
docker run -d -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" --net="host" prom/node-exporter
# 启动 prometheus
docker run -d -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
# 启动 grafana
docker run -d -p 3000:3000 --name=grafana -v /opt/grafana-storage:/var/lib/grafana grafana/grafana
确认一下是否都启动了,输入 docker ps -a 一探究竟。
再次确认一下服务是否都 OK 了, 逐个访问一下。
node_exporter 访问输入 http://YOUR_CONF_IP:9100/metrics,效果如下
Prometheus 访问输入 http://YOUR_CONF_IP:9090/targets,效果如下
Grafana 访问输入 http://YOUR_CONF_IP:3000,效果如下
默认用户名密码 : admin/admin
点击 Add data source,选择 Prometheus。
配置url 输入Prometheus的 ip + 端口,然后点击 Save&Test 按钮,会提示Data source is working。
回到首页,点击 New dashboard --> Add Query。
Panel Title 下拉菜单选择 edit,输入指标会自动提示呦。
效果所见即所得。
到这儿,采用 Prometheus Server + Grafana + node_exporter 对机器性能指标监控的实战,就算演示操作完毕,点到为止,接下来看看 flink 监控如何集成。
2. Prometheus 如何监控 flink?
第一步:下载 pushgateway 镜像,并完成启动。
# 下载 pushgateway 镜像
docker pull prom/pushgateway # 启动 pushgateway
docker run -d -p 9091:9091 prom/pushgateway
第二步:在 prometheus.yml 中添加 pushgateway 的配置,用于告诉 Prometheus 监控 pushgateway,并重新启动 prometheus。
global:
scrape_interval: 60s
evaluation_interval: 60s scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: 'prometheus' - job_name: linux
static_configs:
- targets: ['IP:9100']
labels:
instance: 'linux'
- job_name: 'pushgateway'
static_configs:
- targets: ['IP:9091']
labels:
instance: 'pushgateway'
第三步:针对 flink 添加监控集成包,直接把 flink-1.8.1/opt 目录下的 flink-metrics-prometheus-1.8.1.jar 包复制一份到 flink-1.8.1/lib 目录下即可。
第四步:然后在 flink 配置文件 flink-conf.yml 中添加如下内容(注意修改IP),启动 flink 即可。
##metrics
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: YOUR_CONF_IP
metrics.reporter.promgateway.port: 9091
metrics.reporter.promgateway.jobName: myJob
metrics.reporter.promgateway.randomJobNameSuffix: true
metrics.reporter.promgateway.deleteOnShutdown: false
第五步:回到 Grafana 首页,点击 New dashboard,创建一个新的 dashboard,选择 flink(注意如果没有出现 flink,那说明 flink 没有启动)。
选择并添加相关指标看一看。
好了,到这 Prometheus 监控 flink 也就完毕了,后续就是监控指标如何展示的更好的问题,不再赘述。
3. 有钟意的 dashboard,Grafana 如何让她变成自己的?
网站 https://grafana.com/grafana/dashboards 提供了一系列的模板,可供使用,那该如何导入到自己的 Grafana 下呢?
第一步:选择钟意的 dashboard,获取对应的 dashboard 编号。
第二步:回到自己的 Grafana 首页,选择"+" --> Import
然后输入 Copy 的 dashboard 编号,点击 load。
效果所见即所得,高端大气上档次。
好了,帅气的 Prometheus 与高颜值的 Grafana 擦出的烟火就放到这儿吧。不过在结束之前,还是归拢一下本次演示遇到的问题吧,以供你参考。
4. 问题集锦
问题一:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
linux解决方案
systemctl daemon-reload
systemctl restart docker.service mac下直接启动 docker 服务就行了。
问题二:Get http://localhost:9100/metrics: dial tcp [::1]:9100: connect: connection refused
解决方案:修改 prometheus.yml 文件中 targets: ['localhost:PORT'] 中的 localhost:PORT 修改为真实 IP:PORT 就行了。
问题三:启动 grafana 时始终失败。
mkdir: cannot create directory '/var/lib/grafana/plugins': Permission denied
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migration-from-a-previous-version-of-the-docker-container-to-5-1-or-later
解决方案:chmod 777 /opt/grafana-storage
问题四:Prometheus 监控 flink 时,始终找不到 PrometheusPushGatewayReporter。
java.lang.ClassNotFoundException: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
解决方案:直接把 flink-1.8.1/opt 目录下的 flink-metrics-prometheus-1.8.1.jar 包复制一份到 flink-1.8.1/lib 目录下即可。
5. 命令集锦
docker pull prom/node-exporter //拉取镜像
docker images //查看本机所有镜像
docker run ... //创建一个新的容器
docker stop $(docker ps -a -q) //停止所有容器
docker rm $(docker ps -a -q) //删除所有容器
docker logs -f --tail=10 CONTAINER_ID //查看容器的最后10行的日志
好了,每天进步一点点, 一年后你的进步将远远超乎你的想象。如果感觉文章有点意思,请多多分享转发吧。

监控实战Prometheus+Grafana的更多相关文章
- Spring Boot Metrics监控之Prometheus&Grafana(转)
欢迎来到Spring Boot Actuator教程系列的第二部分.在第一部分中,你学习到了spring-boot-actuator模块做了什么,如何配置spring boot应用以及如何与各样的ac ...
- 机房ping监控 smokeping+prometheus+grafana
一.前言 1.本监控方案主要由smokeping+promethues+grafana组成.smokeping主要数据采集,promethues作为数据存储,grafana数据展示 2.其实smoke ...
- 机房ping监控 smokeping+prometheus+grafana(续) 自动获取各省省会可用IP
一.前言 1.之前的文章中介绍了如何使用smokeping监控全国各省的网络情况:https://www.cnblogs.com/MrVolleyball/p/10062231.html 2.由于之前 ...
- 【k8s 硬盘监控】prometheus grafana
设置监控哪块盘: https://www.bountysource.com/issues/50160777-disk-space-usage-depcited-in-grafana-correct h ...
- 实战 Prometheus 搭建监控系统
实战 Prometheus 搭建监控系统 Prometheus 是一款基于时序数据库的开源监控告警系统,说起 Prometheus 则不得不提 SoundCloud,这是一个在线音乐分享的平台,类似于 ...
- Prometheus(一):Prometheus+Grafana 安装配置
一.基础环境 系统 IP 监控主机 CentOS 7 192.168.56.200 被监控主机 CentOS 7 192.168.56.201 二.Prometheus服务端安装 以下操作皆在监控主机 ...
- k8s实战之部署Prometheus+Grafana可视化监控告警平台
写在前面 之前部署web网站的时候,架构图中有一环节是监控部分,并且搭建一套有效的监控平台对于运维来说非常之重要,只有这样才能更有效率的保证我们的服务器和服务的稳定运行,常见的开源监控软件有好几种,如 ...
- Prometheus Grafana监控全方位实践
这次就不用 docker 部署服务了,这样大家会更容易接受.欢迎阅读. 引言 Prometheus 是一个监控系统,也是一个时间序列数据库,用Go语言开发的,官方文档.通过从某些特定的目标如主机,My ...
- K8S的Kafka监控(Prometheus+Grafana)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- Java8 内置的函数式接口
1.Java8 内置的四大核心函数式接口 (1)Consumer<T> : 消费型接口 void accept(T t); (2)Supplier<T> : 供 ...
- 遍历tree
1.解决方法 filterData (arr) { var newArr = [] arr.map((item) => { var childrenArr if (item.children ! ...
- 深入理解Java之线程池(网络笔记)
原文链接:http://www.cnblogs.com/dolphin0520/p/3932921.html 附加:http://www.cnblogs.com/wxd0108/p/5479442.h ...
- 看完这篇 HTTPS,和面试官扯皮就没问题了
下面我们来一起学习一下 HTTPS ,首先问你一个问题,为什么有了 HTTP 之后,还需要有 HTTPS ?我突然有个想法,为什么我们面试的时候需要回答标准答案呢?为什么我们不说出我们自己的想法和见解 ...
- cocos2d-x android 入门
前一段时间使用传统方式做了一个CS软件,发现 UI 显示的比较慢,突发奇起,开始研究起来 GPU 加速,最后开始学习 cocos2dx. 开发环境以最新的 Cocos2d-x 3.17.1 Andro ...
- Redis集群搭建及选举原理
redis集群简述 哨兵模式中如果主从中master宕机了,是通过哨兵来选举出新的master,在这个选举切换主从的过程,整个redis服务是不可用的.而且哨兵模式中只有一个主节点对外提供服务,因此没 ...
- 标题 发布状态 评论数 阅读数 操作 操作 CNN目标检测系列算法发展脉络简析——学习笔记(三):Fast R-CNN
最近两周忙着上网课.投简历,博客没什么时间写,姑且把之前做的笔记放上来把... 下面是我之前看论文时记的笔记,之间copy上来了,内容是Fast R-CNN的,以后如果抽不出时间写博客,就放笔记上来( ...
- 网络安全从入门到精通 ( 第二章-5) 后端基础PHP—简介及基本函数-下
本文内容: 循环语句 PHP获取表单信息 PHP操作Mysql语句 语法SQL注入 1,循环语句: for循环: 语法:for($x=0,$x<10;$x++){执行语句;} 注意:$x++,先 ...
- Python基础 | 日期时间操作
目录 获取时间 时间映射 格式转换 字符串转日期 日期转字符串 unixtime 时间计算 时间偏移 时间差 "日期时间数据"作为三大基础数据类型之一,在数据分析中会经常遇到. 本 ...
- ECharts的使用与总结
ECharts的使用与总结 一,介绍与需求 1.1,介绍 ECharts商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9 ...