热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

prometheus+grafana+pushgateway+nodeexporter+consul搭建监控系统

目录一.总览二.安装prometheusgrafana三.安装一个exporter四.pushgateway安装五.servicediscovery之consul六.a

目录

一.总览

二.安装prometheus + grafana

三. 安装一个exporter

四.pushgateway安装

五. service discovery之consul

六.alertmanager

七.Grafana嵌入到自己的项目

八.Grafana API报告的导出为PDF




一.总览

prometheus提供的一张图

这张图包含几部分

1.监控grafana

2.pull metrics:(1)pushgateway (2)exporters

3.服务发现service discovery,主要是动态发现exporters

4.告警alertmanager

5.prometheus server

Prometheus 架构图


二.安装prometheus + grafana

1.在/ops/prometheus下建立文件prometheus.yml 和targets.json(这个可以不用,也是用于动态添加targets)

编辑文件vim prometheus.ymlglobal:scrape_interval: 1sevaluation_interval: 1sscrape_configs:- job_name: prometheusstatic_configs:- targets: ['localhost:9090']labels:instance: prometheus- job_name: pushgateway #安装的pushgateway使用该配置项metrics_path: '/metrics'static_configs:- targets: ['192.168.253.215:9091'] # 地址修改为实际地址labels:instance: pushgatewayhonor_labels: true- job_name: nodesfile_sd_configs:#提供文件方式动态添加targets- files:- 'targets.json'refresh_interval: 10s编辑文件 targets.json ,node_exporter会用该配置项
[{"targets": ["192.168.253.215:9400"],"labels": {"job": "node"}}
]

2.启动prometheus

docker run  -d   -p 9090:9090   -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml    -v /opt/prometheus/targets.json:/etc/prometheus/targets.json    prom/prometheus

启动后访问地址 http://192.168.253.215:9090/

3.启动grafana

docker run -d \-p 3000:3000 \--name=grafana \-v /opt/grafana-storage:/var/lib/grafana \grafana/grafana

访问地址 

http://192.168.253.215:3000/

3.在grafana添加prometheus,点击save保存就可以

 

4.grafana导入已经存在的图表配置

在这里下载一个模板locust :https://grafana.com/grafana/dashboards/12081

导入

5.grafana刷新时间是最小5秒,配置每秒刷新一次,注:网上说低版本有bug,该配置项不起作用

进入docker 

docker exec  -it --user root  b1dbe0b4357a /bin/bash

修改配置,修改后重启docker

vi /etc/grafana/grafana.ini搜min_refresh_interval改为1s
由:
;min_refresh_interval = 5s
改为:
min_refresh_interval = 1s

6.打开grafana相关的工程,配置刷新时间为1s

 

非docker安装

grafana下载包:https://grafana.com/grafana/download?platform=linux
./grafana-server -config=/home/ops/grafana-7.3.5/conf/grafana.ini cfg:default.paths.plugins=/home/ops/grafana-7.3.5/plugins
 


三. 安装一个exporter

1.下载地址 https://github.com/prometheus/node_exporter/releases

2.启动 ./node_exporter --web.listen-address=":9400"

3. 前面prometheus已经配置了9400这个ip地址的targets,所有现在应该已经开始监控

4. 随便打开一个面板图,在面板最下面添加一个【Query】,选择【Metrics】=》【node】=》【node_load1】,输入框可以根据条件过滤 node_load1{instance="192.168.253.215:9400", job="node"}

5.修改面板的刷新时间是1S


四.pushgateway安装

拓扑图

1. docker 安装 docker run -d -p 9091:9091 prom/pushgateway

2.启动后可以访问 http://192.168.253.215:9091/

3.推一条指标给pushgateway

cat <locust_stats_avg_content_length 2398.283
EOF

4.在上面prometheus已经配置好pushgateway&#xff0c;如果没配&#xff0c;先配置Prometheus

5.删除指标&#xff0c;也可以去界面删除  curl -X DELETE http://192.168.253.215:9091/metrics/job/some_job/instance/some_instance

6.python​用 prometheus_client实现参考链接&#xff1a;

https://www.cnblogs.com/xiao987334176/p/9933963.html

 


五. service discovery之consul

1.安装consul

docker run --name consul -d -p 8500:8500 consul

2.配置prometheus

- job_name: &#39;consul&#39;consul_sd_configs:- server: &#39;192.168.253.215:8500&#39;services: []relabel_configs:- source_labels: [__meta_consul_tags]regex: .*dev.*action: keep

3.向consul注册服务

curl -X PUT -d &#39;{"id": "test1","name": "test1","address": "192.168.253.215","port": 9500,"tags": ["dev"],"checks": [{"http": "http://192.168.253.215:9500/","interval": "5s"}]}&#39; http://192.168.253.215:8500/v1/agent/service/register注销服务
curl -X PUT http://192.168.253.215:8500/v1/agent/service/deregister/服务id

4.启动服务node_exporter :

./node_exporter --web.listen-address&#61;":9500"

5.查看注册成功 &#xff1a;http://192.168.253.215:8500/ui/dc1/services/test1/instances

6.查看peometheus是否正常 http://192.168.253.215:9090/targets

7.查看grafana&#xff0c;多了一条曲线


六.alertmanager


七.Grafana嵌入到自己的项目


八.Grafana API报告的导出为PDF

由于Grafana插件不支持docker&#xff0c;需要自己安装grafana程序

 

wget https://dl.grafana.com/oss/release/grafana-7.3.5-1.x86_64.rpm
sudo yum install grafana-7.3.5-1.x86_64.rpm
service grafana-server startyum install -y libXcomposite libXdamage libXtst cups libXScrnSaver pango atk adwaita-cursor-theme adwaita-icon-theme at at-spi2-atk at-spi2-core cairo-gobject colord-libs dconf desktop-file-utils ed emacs-filesystem gdk-pixbuf2 glib-networking gnutls gsettings-desktop-schemas gtk-update-icon-cache gtk3 hicolor-icon-theme jasper-libs json-glib libappindicator-gtk3 libdbusmenu libdbusmenu-gtk3 libepoxy liberation-fonts liberation-narrow-fonts liberation-sans-fonts liberation-serif-fonts libgusb libindicator-gtk3 libmodman libproxy libsoup libwayland-cursor libwayland-egl libxkbcommon m4 mailx nettle patch psmisc redhat-lsb-core redhat-lsb-submod-security rest spax time trousers xdg-utils xkeyboard-config

 

安装插件和grafana-reporter

grafana-cli plugins install grafana-image-renderer安装一下库&#xff0c;不然grafana-reporter会报错
yum install texlive

在第七步的基础上配置Grafana

手动下载pdf&#xff0c;grafana的看板是中文时会有问题&#xff0c;但指标是中文&#xff0c;没问题


九.prometheus API的使用

获取到所有job
http://192.168.253.215:9090/api/v1/label/job/values查询10秒内数据
http://192.168.253.215:9090/api/v1/query_range?query&#61;network_traffic_input&start&#61;1607999428.447&end&#61;1607999468.447&step&#61;10s查询指标
http://192.168.253.215:9090/api/v1/series?match[]&#61;up{job&#61;\"network_traffic\"}&match[]&#61;network_traffic_input{adapter_name&#61;\"ens33\"}查询当前
http://192.168.253.215:9090/api/v1/query?query&#61;network_traffic_input查询
http://192.168.253.215:9090/api/v1/query_range?query&#61;locust_stats_avg_content_length{instance&#61;"some_instance1"} offset 15m&start&#61;1608009390&end&#61;1608012990&step&#61;15
编码后&#xff1a;
http://192.168.253.215:9090/api/v1/query_range?query&#61;locust_stats_avg_content_length%7Binstance%3D%22some_instance1%22%7D%20offset%2015m&start&#61;1608009390&end&#61;1608012990&step&#61;15consul注册服务
curl -X PUT -d &#39;{"id": "test1","name": "test1","address": "192.24.17.156","port": 9500,"tags": ["dev"],"checks": [{"http": "http://192.24.17.156:9500/","interval": "5s"}]}&#39;     http://192.24.17.156:8500/v1/agent/service/registergrafana下载包&#xff1a;https://grafana.com/grafana/download?platform&#61;linux
./grafana-server -config&#61;/home/ops/grafana-7.3.5/conf/grafana.ini cfg:default.paths.plugins&#61;/home/ops/grafana-7.3.5/plugins

参考文章&#xff1a;

1.locust &#43; Prometheus &#43; grafana https://bugvanisher.cn/2020/04/05/locust-with-prometheus-and-grafana/

2.pushgateway安装使用&#xff1a; https://www.cnblogs.com/xiaobaozi-95/p/10684524.html

3.prometheus file_sd_config配置项 https://www.cnblogs.com/faberbeta/p/13597816.html

4.prometheus consul&#xff1a;https://blog.51cto.com/1000682/2363038

5.alertmanager&#xff1a;https://www.cnblogs.com/xiaobaozi-95/p/10740511.html

6.动态更新prometheus 报警规则 https://www.lijiaocn.com/%E6%8A%80%E5%B7%A7/2018/08/30/confd-prometheus-dynamic-config.html

7.Grafana嵌入到自己的项目&#xff1a;https://blog.csdn.net/weixin_44534391/article/details/107019567?utm_medium&#61;distribute.pc_relevant.none-task-blog-baidulandingword-3&spm&#61;1001.2101.3001.4242

8.Grafana导出pdf &#xff1a;https://blog.csdn.net/shen12138/article/details/110199638

9.pushgateway python 使用https://www.cnblogs.com/xiao987334176/p/9933963.html


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
author-avatar
_陈灵宝互粉号2
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有