Prometheus+grafana环境搭建方法及流程两种方式(docker和源码包)(一)

1.选型对比

最近项目上有对项目服务及中间件的监控需求,要做实现方案调研,总结一下自己的成果,目前业界主流可选的方案有:

国外开源:

Prometheus:Prometheus - Monitoring system & time series database

优点:使用exporter方式+主动拉取方式,采集灵活,覆盖面广,结合grafana能快速搭建上手,promql功能强大,自定义指标方便,对云环境支持很好

缺点:采用分布式部署,基于本地文件存储数据,数据统一采集不方便,采用配置文件配置较为繁琐,(ps也支持服务发现),promql学习成本较高

zabbix 

Grandage-Zabbix中国

优点:老牌监控框架、all-in-one 部署,使用MySQL存储数据,使用页面配置采集。推荐6.0以上版本,使用agent2

缺点:比较重,灵活性比较差,自定义指标实现难度高

grafana

开源的可视化框架,可以使用多种数据源,对Prometheus支持非常友好,也支持zabbix。可以很方便的集成到自己的前端项目中。

国内开源

夜莺 夜莺 - 快猫星云

优点:集成了Prometheus和zabbix的优点,可以通过页面配置监控告警还能all-in-one 部署。文档比较友好。(由于是后来才找到这个框架,所以没有深入研究)

本次我验证了(监控服务器,rabbitmq、nacos、redis、mysql、MongoDB,spring-boot,Nginx)等常用中间件的监控,留档以备后续查看。其他的基本都可以参照官网

2. Prometheus基础环境搭建

Prometheus支持两种搭建方式,二进制安装和docker安装,基本所有的组件都提供了这两种安装方式。二进制方式可以将组件注册为Linux系统服务,使用systemctl来管理

2.1 二进制方式安装

主要安装:Prometheus+node_exporter(服务器节点监控)+alertmanager+grafana,适合在离线没有网络的环境。

网上有现成的仓库 prometheus: 二进制安装prometheus

项目使用方法
1.将项目下载到自己的Linux服务器
https://gitee.com/lengedcloud/prometheus.git
进入目录 cd prometheus
2.将服务移动到系统服务目录
mv *.service /etc/systemd/system/
3.创建一个普通用户
useradd -M -s /usr/sbin/nologin prometheus  -M不创建家目录,不允许登录
4.启动服务,并设置开机启动
systemctl enable alertmanager.service --now
systemctl enable grafana-server.service --now
systemctl enable node_exporter.service --now
systemctl enable prometheus.service --now
5.检查服务状态
systemctl status alertmanager.service 
systemctl status grafana-server.service 
systemctl status node_exporter.service 
systemctl status prometheus.service 
6.访问测试
alertmanager.service 告警 端口 ip:9093/metrics
grafana-server 数据展示 端口 ip:3000  账号/密码 admin/admin 
node_exporter 数据采集  ip:9100/metrics
prometheus 数据存储 端口 ip:9090
2.2 docker方式安装

主要安装:Prometheus+cadvsior(docker监控)+node_exporter++alertmanager+grafana

此处可以下载打包 docker-compose: docker-compose仓库

 docker-compose.yaml文件如下

version: '3.3'volumes:prometheus_data: {}grafana_data: {}networks:monitoring:driver: bridgeservices:prometheus:image: prom/prometheus:v2.37.6container_name: prometheusrestart: alwaysvolumes:- /etc/localtime:/etc/localtime:ro- ./prometheus/:/etc/prometheus/- prometheus_data:/prometheuscommand:- '--config.file=/etc/prometheus/prometheus.yml'- '--storage.tsdb.path=/prometheus'- '--web.console.libraries=/usr/share/prometheus/console_libraries'- '--web.console.templates=/usr/share/prometheus/consoles'#热加载配置- '--web.enable-lifecycle'#api配置#- '--web.enable-admin-api'#历史数据最大保留时间,默认15天- '--storage.tsdb.retention.time=30d'  networks:- monitoringlinks:- alertmanager- cadvisor- node_exporterexpose:- '9090'ports:- 9090:9090depends_on:- cadvisoralertmanager:image: prom/alertmanager:v0.25.0container_name: alertmanagerrestart: alwaysvolumes:- /etc/localtime:/etc/localtime:ro- ./alertmanager/:/etc/alertmanager/command:- '--config.file=/etc/alertmanager/config.yml'- '--storage.path=/alertmanager'networks:- monitoringexpose:- '9093'ports:- 9093:9093cadvisor:image: google/cadvisor:latestcontainer_name: cadvisorrestart: alwaysvolumes:- /etc/localtime:/etc/localtime:ro- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:ronetworks:- monitoringexpose:- '8080'ports:- '8080:8080'node_exporter:image: prom/node-exporter:v1.5.0container_name: node-exporterrestart: alwaysvolumes:- /etc/localtime:/etc/localtime:ro- /proc:/host/proc:ro- /sys:/host/sys:ro- /:/rootfs:rocommand: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys'- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc|rootfs/var/lib/docker)($$|/)'networks:- monitoringports:- '9100:9100'grafana:image: grafana/grafana:9.4.3container_name: grafanarestart: alwaysvolumes:- /etc/localtime:/etc/localtime:ro- grafana_data:/var/lib/grafana- ./grafana/provisioning/:/etc/grafana/provisioning/env_file:- ./grafana/config.monitoringnetworks:- monitoringlinks:- prometheusports:- 3000:3000depends_on:- prometheus

使用docker-compose 一键安装

docker-compose up -d 安装

安装完成后测试 同二进制安装测试相同

Prometheus页面,可以从status>target目录下查看当前的监控任务状态,点击endpoint,确认每个target路径有数据即为正常。

grafana页面

2.3 配置Prometheus监控

打开 vim prometheus.yaml,修改ip或服务名为自己的宿主机ip

Prometheus重新热加载配置 很常用

curl -X POST http://localhost:9090/-/reload 

2.4 配置grafana监控页面

grafana提供了大量配置模板可以快速生成监控

给grafana配置Prometheus数据源

填写信息,可以测试连接一下,docker版要写宿主机的ip,http一定要加

1.配置模板-服务器监控

Dashboards | Grafana Labs

选择数据源,模板可以按照自己的需要进行修改,有些指标名称在不用版本的Prometheus库中可能已经被替换或者更新,实际使用时要进行相应的更改。

点击要使用的模板,获取模板id或者json文件,此处还有Prometheus中的配置

在grafana中导入

输入ID,并导入

选择数据源,修改面板名称

 查看效果

2.配置模板-docker服务监控

选择想要的模板

复制id 10619,重复上面的步骤导入

3.配置模板-alertmanager告警监控,告警也是Prometheus的核心功能。

选择模板id,9578

重复上面的步骤导入

 exp告警规则可以通过使用promql定义的非常丰富。

告警配置文件在,prometheus挂载出来的alert.yml文件中

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

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

相关文章

前端订阅后端推送WebSocket定时任务

0.需求 后端定时向前端看板推送数据,每10秒或者30秒推送一次。 1.前言知识 HTTP协议是一个应用层协议,它的特点是无状态、无连接和单向的。在HTTP协议中,客户端发起请求,服务器则对请求进行响应。这种请求-响应的模式意味着服务器…

【史上最细教程】 Typora+PicGo+Gitee 实现发给别人的Typora笔记也能看到图片

文章目录 问题描述前提准备:操作步骤:1.Gitee新建项目作为图床、获取仓库访问密钥2.PicGo连接Gitee图床3.Typora连接PicGo 问题描述 Typora记录的笔记,图片保存默认在本地,这时候复制出来上传CSDN、或发给别人的时候图片就是空链…

HCIP实验--5

实验要求: 实现过程: (一)配置IP地址: AR1: [AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 200.1.1.1 24 Apr 3 2024 19:25:38-08:00 AR1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interf…

C++基础13:C++输入输出

此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏,参考书籍:《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 12.C输入/输出 12.1 C流类 计算机的输入和输出是数据传送的过…

Vue.js---------Vue基础

能够说出Vue的概念和作用能够使用vue/cli脚手架工程化开发能够熟练Vue指令 一.vue基本概念 1.学习vue Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 渐进…

间接调制和带通采样!!(非奈奎斯特采样定理)

1. 直接变频 前面讲解数字调制原理时,直接利用IQ调制将基带信号变换为频带信号,这种频率变换一般被称为直接上变频;解调时,直接利用IQ解调,将频带信号变换回基带信号,这种频率变换一般被称为直接下变频。直…

vue 使用自定义标签URL Protocol 调用本地exe 并传参

创建注册表文件reg,并运行 里面的路径需要替换成实际exe的绝对路径 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\App] "URL:App Protocol Handler" "URL Protocol""" [HKEY_CLASSES_ROOT\App\DefaultIcon] &qu…

pycharm调试(步过(Step Over)、单步执行(Step Into)、步入(Step Into)、步出(Step Out))

pycharm调试 pycharm调试 pycharm调试为什么要学会调试?1. 步过 (Step Over)2. 单步执行 (Step Into)3. 步入(Step Into)4. 步出(Step Out) 为什么要学会调试? 调试可以帮助初学者更深入地理解编程基础&am…

【Android、 kotlin】kotlin学习笔记

基本语法 fun main(){val a2var b "Hello"println("$ (a - 1} $b Kotlin!")} Variables 只赋值一次用val read-only variables with val 赋值多次用var mutable variables with var Standard output printin() and print() functions String templ…

NKCTF2024 re VM?VM!WP

逻辑似乎很简单(个鬼啊) 这个函数是把输入的字符转化为二进制并倒序存储 sub_1570太大了加载不出来,应该是加密的主逻辑,目的是需要输出1 可以通过删除栈的方法强行转化伪代码 首先删掉这部分 9A0改小点 这个也是 栈这里U一下再…

DFS:深搜+回溯+剪枝解决组合问题

创作不易,感谢支持!!! 一、电话号码的组合 . - 力扣(LeetCode) class Solution { public:string hash[10]{"","","abc","def","ghi","jkl","mno","pqrs"…

爬虫部署平台crawlab使用说明

Crawlab 是一个基于 Go 语言的分布式网络爬虫管理平台,它支持 Python、Node.js、Jar、EXE 等多种类型的爬虫。 Crawlab 提供了一个可视化的界面,并且可以通过简单的配置来管理和监控爬虫程序。 以下是 Crawlab 的一些主要优点: 集中管理&am…

【C】leetcode力扣—— 141. 环形链表Ⅰ

目录 141. 环形链表 Ⅰ题目解题思路分析暴力求解??快慢指针 代码 141. 环形链表 Ⅰ 题目链接: https://leetcode.cn/problems/linked-list-cycle/description/ 题目 题目 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某…

E-魔法猫咪(遇到过的题,做个笔记)

题解: 来自学长们思路: 其中一种正解是写单调队列。限制队列内的数单调递增,方法为每当新来的数据比当前队尾数据小时队 尾出列,直到能够插入当前值,这保证了队头永远是最小值。因此总体思路是队尾不断插入新值的同时 …

openlayers 入门教程(九):overlay 篇

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

vue-cli打包 nodejs内存溢出 vue2.x Last few GCs

遇到这种情况百度各种博客,什么改package.json里的配置,什么安装increase-memory-limit ,都尝试了并没什么用处,最后解决方案为执行下方名单,再次打包就成功了: export NODE_OPTIONS--max_old_space_size4…

单元测试 mockito(二)

1.返回指定值 2.void返回值指定插桩 3.插桩的两种方式 when(obj.someMethod()).thenXxx():其中obj可以是mock对象 doXxx().wien(obj).someMethod():其中obj可以是mock/spy对象 spy对象在没有插桩时是调用真实方法的,写在when中会导致先执行一次原方法,达不到mock的目的&#x…

好物视频素材在哪找?视频素材大全app下载

创作优质视频内容不仅仅是一种艺术,也是一种科学,需要对素材的深刻理解和精心挑选。掌握了这些高清无水印视频素材,您就拥有了创作引人入胜视频内容的强大工具。以下是更多精选的视频素材网站,旨在为您的视频项目提供更广阔的视野…

Python | Leetcode Python题解之第10题正则表达式匹配

题目: 题解: class Solution:def isMatch(self, s: str, p: str) -> bool:m, n len(s), len(p)dp [False] * (n1)# 初始化dp[0] Truefor j in range(1, n1):if p[j-1] *:dp[j] dp[j-2]# 状态更新for i in range(1, m1):dp2 [False] * (n1) …

专升本--python运算符总结

运算优先级 同一个等级是没有先后顺序的,此外,赋值语言的先后问题: 赋值的顺序从上往下,同一行一般都是代表同时进行赋值,如图所示: 一.and A and B,若A,B有任意一个为假(0&#x…