在Ubuntu上搭建Prometheus + Grafana监控系统

1.Prometheus 部署
从官网下载页面找到最新的二进制文件下载

cd ~
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.51.1/prometheus-2.51.1.linux-amd64.tar.gz

将文件解压到指定目录

tar  xf prometheus-2.51.1.linux-amd64.tar.gz -C /usr/local

为了方便配置,可以做软连接

ln -sv /usr/local/prometheus-2.51.1.linux-amd64/ /usr/local/Prometheus

接着修改prometheus的配置文件

在global设置中,定义抓取指标的默认时间间隔。请注意,除非单个导出器自己的设置覆盖全局变量,否则Prometheus会将这些设置应用于每个导出器。
scrape_interval值告诉Prometheus 每15秒从其出口商那里收集指标,这对于大多数出口商而言足够长。
使用scrape_configs指令将Prometheus本身添加到导出器列表中。
使用job_name在标签和图表上标记出口商,因此请务必在此处选择描述性内容。
使用static_configs和targets指令来确定导出器的运行位置。

[root@prometheus ~]# vim /usr/local/Prometheus/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.# scrape_timeout is set to the global default (10s).# 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: 'prometheus'# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ['localhost:9090']

创建Prometheus的systemd服务

sudo vim /etc/systemd/system/prometheus.service

服务文件告诉systemd,您将Prometheus作为prometheus用户运行,并且配置文件位于/etc/prometheus/prometheus.yml目录中,并将其数据存储在/var/lib/prometheus目录中。配置文件内容如下:

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
​
[Service]
# 账户和组设置,可以保证数据安全
# User=prometheus
# Group=prometheus
Type=simple
ExecStart=/usr/local/Prometheus/prometheus \--config.file /usr/local/Prometheus/prometheus.yml \
#  --storage.tsdb.path /var/lib/prometheus/ \--web.console.templates=/usr/local/Prometheus/consoles \--web.console.libraries=/usr/local/Prometheus/console_libraries[Install]
WantedBy=multi-user.target

编辑完成后保存退出,要使用新创建的服务,需要重新加载systemd。

sudo systemctl daemon-reload

并可以使用以下命令启动Prometheus:

sudo systemctl start prometheus

要确保Prometheus正在运行,可以检查服务的状态。

sudo systemctl status prometheus

输出结果会告诉您Prometheus的状态,主进程标识符(PID),内存使用等。如果服务的状态不是active,在继续本教程之前重新跟踪上述步骤以解决问题。
在这里插入图片描述
按Q可退出status命令。通过如下URL可以打开prometheus的自带监控界面: localhost:9090,当然端口或IP也可以自己设定。

启用服务以在开机时启动:

sudo systemctl enable prometheus

2.部署Node Exporter (被监控主机需要安装的软件)

各组件默认端口:

node 默认端口:9100
mysql默认端口:9104
redis 默认端口:9121
process默认端口:9256
alertmanager默认端口:9093

要将Prometheus扩展到仅关于自身的指标之外,我们将安装另一个名为Node Exporter的节点导出器。节点导出器提供有关系统的详细信息,包括CPU,磁盘和内存使用情况。 把版本和下载链接更换一下就行了

cd ~
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
sha256um node_exporter-1.1.2.linux-amd64.tar.gz
tar xf node_exporter-1.1.2.linux-amd64.tar.gz -C /usr/local

接着为Node Exporter创建Systemd服务文件。

sudo vim /etc/systemd/system/node_exporter.service

将以下内容复制上去,编辑完成后保存退出。(注意文件名版本号)

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target[Service]
Type=simple
ExecStart=/usr/local/node_exporter-1.1.2.linux-amd64/node_exporter[Install]
WantedBy=multi-user.target

重新加载systemd以使用新的创建的服务。

sudo systemctl daemon-reload

运行Node Exporter。

sudo systemctl start node_exporter

如果想额外配置mysql、redis之类的,步骤如三、四类似

3.配置Prometheus以刮取节点导出器

因为Prometheus只抓取在其配置文件scrape_configs部分中定义的导出器,所以我们需要为Node Exporter添加一个条目,就像我们为Prometheus本身所做的那样。

修改prometheus的配置文件。

[root@prometheus ~]# vim /usr/local/Prometheus/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.# scrape_timeout is set to the global default (10s).# 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: 'prometheus'scrape_interval: 5s# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ['localhost:9090']- job_name: 'node_exporter'scrape_interval: 5sstatic_configs:- targets: ['localhost:9100'] 

重新启动prometheus并检查运行状态。

sudo systemctl restart prometheus
sudo systemctl status prometheus

4.添加节点进行主机管理
在添加大量主机集群时,一台一台在prometheus.yml中添加,显然不太方便,我们通过编写发现文件,进行批量主机管理。

cd /usr/local/Prometheus
mkdir -p /usr/local/Prometheus/targets/node
sudo vim /usr/local/Prometheus/targets/node/node.yml
# 监控的目标列表
- targets: - '172.16.12.1:9100'- '172.16.12.5:9100'- '172.16.12.110:9100'- '172.16.12.112:9100'labels:idc: "Temporary RWE Server"      # 备注集群名

修改prometheus配置文件。

vim /usr/local/Prometheus/prometheus.yml

添加如下代码

  - job_name: 'nm_mch-app_node'file_sd_configs:- files: ['/usr/local/Prometheus/targets/node/node.yml']refresh_interval: 5s

重新启动prometheus并检查运行状态。

sudo systemctl restart prometheus
sudo systemctl status prometheus

5.使用Grafana创建可视化Dashboard
Prometheus UI提供了快速验证PromQL以及临时可视化支持的能力,而在大多数场景下引入监控系统通常还需要构建可以长期使用的监控数据可视化面板(Dashboard)。这时用户可以考虑使用第三方的可视化工具如Grafana,Grafana是一个开源的可视化平台,并且提供了对Prometheus的完整支持。

可在官网下载最新的二进制文件,tar安装过程参考如下:

wget https://dl.grafana.com/oss/release/grafana-8.0.4.linux-amd64.tar.gz
tar -zxvf grafana-8.0.4.linux-amd64.tar.gz -C /usr/local
ln -sv /usr/local/grafana-8.0.4/ /usr/local/Prometheus_grafana

配置systemd启动Grafana。

sudo vim /etc/systemd/system/grafana-server.service
[Unit]
Description=Grafana
After=network-online.target[Service]
ExecStart=/usr/local/Prometheus_grafana/bin/grafana-server --config=/usr/local/Prometheus_grafana/conf/defaults.ini --homepath=/usr/local/Prometheus_grafana[Install]
WantedBy=multi-user.target

重载配置

systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server

Dashboard通过 https://grafana.com/dashboards 网站,可以找到大量可直接使用的Dashboard。Grafana中所有的Dashboard通过JSON进行共享,下载并且导入这些JSON文件,就可以直接使用这些已经定义好的Dashboard

参考文献

大神博客
Prometheus中文文档

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

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

相关文章

解决IDEA 控制台中文乱码

运行某个项目时IntelliJ IDEA 控制台中文乱码&#xff0c;但其他的项目是正常的。接口文档也显示乱码&#xff1a; 一、修改 IntelliJ IDEA 全局编码、项目编码、属性文件编码 上方导航栏“File→Settings…”进入配置页面&#xff0c;在“Editor”中下滑找到“File Encodings…

centos7.2系统部署ZooKeeper集群和Kafka集群(集群应用系统商城前置环境)

本次实验将使用centos7.2系统部署部署ZooKeeper集群因为Kafka依赖于ZooKeeper&#xff0c;所以我们一并进行部署。 实验所示的资源软件已上传至百度网盘&#xff0c;需要自取。 链接&#xff1a;https://pan.baidu.com/s/1a-7_iAIX0DBAMkF9bhiTcA?pwd2333 提取码&#xff1…

基于javassm实现的农产品供销服务系统

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclip…

2024/4/2—力扣—不用加号的加法

代码实现&#xff1a; 思路&#xff1a;位运算&#xff0c;利用了异或和与的特性&#xff0c;异或操作与加操作的区别在于异或操作在二进制状态下两个数同1不进位&#xff0c;只是置为0&#xff0c;其他均相同&#xff0c;那么使用与运算计算进位值&#xff0c;补齐异或操作的缺…

深入理解指针2:数组名理解、一维数组传参本质、二级指针、指针数组和数组指针、函数中指针变量

目录 1、数组名理解 2、一维数组传参本质 3、二级指针 4、指针数组和数组指针 5、函数指针变量 1、数组名理解 首先来看一段代码&#xff1a; int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf("%d\n", sizeof(arr));return 0; } 输出的结果是&…

jupyter python paramiko 网络系统运维

概述 通过使用jupyter进行网络运维的相关测试 设备为H3C 联通性测试 import paramiko import time import getpass import re import os import datetimeusername "*****" password "*****" ip "10.32.**.**"ssh_client paramiko.SSHCli…

Nginx配置之localhost和反向代理

文章目录 第一步、查看安装位置和配置文件第二步、web服务器设置第三步、localhost 指令第四步、设置反向代理 清明假期&#xff0c;在家练习Nginx配置&#xff0c;在前期【 linux环境下安装配置nginx代理服务器】已经完成nginx环境搭建&#xff0c;本期主要实践web服务器&…

【分治算法】大整数乘法Python实现

文章目录 [toc]问题描述基础算法时间复杂性 优化算法时间复杂性 Python实现 个人主页&#xff1a;丷从心. 系列专栏&#xff1a;Python基础 学习指南&#xff1a;Python学习指南 问题描述 设 X X X和 Y Y Y都是 n n n位二进制整数&#xff0c;计算它们的乘积 X Y XY XY 基础…

libVLC 音频立体声模式切换

在libVLC中&#xff0c;可以使用libvlc_audio_set_channel函数来设置音频的立体声模式。这个函数允许选择不同的音频通道&#xff0c;例如立体声、左声道、右声道、环绕声等。 /*** Set current audio channel.** \param p_mi media player* \param channel the audio channel…

数据挖掘及其近年来研究热点介绍

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

基于单片机16路多路抢答器仿真系统设计

**单片机设计介绍&#xff0c;基于单片机16路多路抢答器仿真系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机16路多路抢答器仿真系统的设计概要主要涵盖硬件设计、软件编程以及功能实现等方面。以下是针对该设计的详细概…

SAP HCM PT 2003修改班次,PP61无法自动更新

今天遇到一个问题&#xff0c;2003修改班次以后PP61无法自动更新&#xff0c;开始一直以为是什么配置点漏掉&#xff0c;但是发现开发机没问题&#xff0c;后来发现是用户选保存的时候选中目标计划的完成&#xff0c;这个是保存到实际计划的&#xff0c;数据存储psoll中&#x…

redis的常用基本命令与持久化

文章目录 redis的基本命令1.授权密码2.增加、覆盖、查询、删除、切换库名、移动、清空数据库 Redis持久化RDB模式主动备份自动备份RDB备份过程 AOF备份模式开启AOF备份模式执行流程 总结 redis的基本命令 1.授权密码 config set requirepass 密码设置完密码需要认证密码以后才…

【御控物联】JavaScript JSON结构转换(19):数组To对象——规则属性重组

文章目录 一、JSON结构转换是什么&#xff1f;二、术语解释三、案例之《JSON数组 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

软件设计师29--并发控制

软件设计师29--并发控制 考点1&#xff1a;事务的特性例题&#xff1a; 考点2&#xff1a;并发问题并发产生的问题丢失更新不可重复读问题读“脏”数据 考点3&#xff1a;封锁协议例题&#xff1a; 考点1&#xff1a;事务的特性 原子性&#xff08;Atomicity&#xff09;&…

C顺序表:通讯录

目录 前言 通讯录数据结构 通讯录初始化 查找名字 增加联系人 删除联系人 展示所有联系人 查找联系人 修改信息 销毁通讯录 完整通讯录代码 前言 数据结构中的顺序表如果已经学会了&#xff0c;那么我们就可以基于顺序表来完成一个通讯录了 通讯录其实我们使用前…

红蓝色WordPress外贸建站模板

红蓝色WordPress外贸建站模板 https://www.mymoban.com/wordpress/5.html

Mysql底层原理十:Redo log

3.7 Redo log Redo log记录的是物理日志&#xff0c;具体就是哪个表空间&#xff0c;哪个数据页&#xff0c;哪个偏移量&#xff0c;改了几个字节&#xff0c;改成什么表空间号数据页号偏移量修改几个字节的值具体的值 3.7.1 Redo block &#xff08;批处理缓存&#xff09;…

nginx支持的多种负载均衡策略

目录 1.轮询&#xff08;默认&#xff09; 2. ip_hash 3. 加权轮询&#xff08;weight&#xff09; 4. fair&#xff08;第三方&#xff09; 5. 最少连接&#xff08;least_conn&#xff09; 1.轮询&#xff08;默认&#xff09; 将请求依次分配给每个服务器&#xff0c;确…

DeepSort行人车辆识别系统(实现目标检测+跟踪+统计)

文章目录 1、前言2、源项目实现功能3、运行环境4、如何运行5、运行结果6、遇到问题7、使用框架8、目标检测系列文章 1、前言 1、本文基于YOLOv5DeepSort的行人车辆的检测&#xff0c;跟踪和计数。 2、该项目是基于github的黄老师傅&#xff0c;黄老师傅的项目输入视频后&#x…