Ubuntu20.04安装Prometheus监控系统
环境准备:
服务器名称 | 内网IP | 公网IP |
---|---|---|
Prometheus服务器 | 192.168.0.230 | 47.119.21.167 |
Grafana服务器 | 192.168.0.231 | 47.119.22.8 |
被监控服务器 | 192.168.0.232 | 47.119.22.82 |
更改主机名方便辨认
hostnamectl set-hostname prometheus
hostnamectl set-hostname grafana
hostnamectl set-hostname agent
三台都互相绑定IP与主机名
vim /etc/hosts
192.168.0.230 prometheus
192.168.0.231 grafana
192.168.0.232 agent
时间同步
检查时间:
timedatectl status
修改时区
timedatectl set-timezone Asia/Shanghai
关闭防火墙
输入以下命令以禁用防火墙服务:
systemctl stop ufw.service
输入以下命令以确认防火墙服务已关闭:
systemctl disable ufw.service
输入以下命令以确认防火墙状态:
ufw status
如果终端输出“Status: inactive”,则表示防火墙已成功关闭。
1、安装Prometheus
从 https://prometheus.io/download/ 下载相应版本,安装到服务器上,官网提供的是二进制版,解压就能用,不需要编译
下载tar包
wget https://github.com/prometheus/prometheus/releases/download/v2.53.0/prometheus-2.53.0.linux-amd64.tar.gz
解压
tar xf prometheus-2.53.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-2.53.0.linux-amd64/ /usr/local/prometheus
直接使用默认配置文件启动
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
确认端口(9090)
lsof -i:9090
2、Prometheus界面
通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面
默认只监控了本机一台,点Status --》点Targets --》可以看到只监控了本机
监控的本机信息如下:
3、主机数据展示
在web主界面可以通过关键字查询监控项
比如输入关键词:process_cpu_seconds_total
点击Execute执行,就会看出相应的图形数据
4、监控远程Linux主机
① 在远程linux主机(被监控端agent)上安装node_exporter组件,下载地址: https://prometheus.io/download/(可自行下载)
下载tar包
wget https://tongyf.oss-cn-shenzhen.aliyuncs.com/node_exporter-1.8.1.linux-amd64.tar.gz
解压
tar xf node_exporter-1.8.1.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/node_exporter-1.8.1.linux-amd64/ /usr/local/node_exporter
里面就一个启动命令node_exporter,可以直接使用此命令启动
nohup /usr/local/node_exporter/node_exporter &
确认端口9100:
lsof -i:9100
扩展: nohup命令: 如果把启动node_exporter的终端给关闭,那么进程也会随之关闭。nohup命令会帮你解决这个问题。
② 通过浏览器访问http://被监控端IP:9100/metrics就可以查看到node_exporter在被监控端收集的监控信息
③ 回到prometheus服务器的配置文件里添加被监控机器的配置段
在主配置文件最后加上下面三行
[root@prometheus]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'agent' # 取一个job名称来代表被监控的机器
static_configs:
- targets: ['192.168.0.232:9100'] # 这里改成被监控机器的IP,后面端口接9100
关闭服务
pkill prometheus
确认端口没有进程占用
lsof -i:9090
重启服务
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
确认端口被占用,说明重启成功
lsof -i:9090
④ 回到web管理界面 --》点Status --》点Targets --》可以看到多了一台监控目标
5、监控远程MySQL
① 在被管理机agent1上安装mysqld_exporter组件,下载地址: https://prometheus.io/download/
下载tar包
wget https://tongyf.oss-cn-shenzhen.aliyuncs.com/mysqld_exporter-0.15.1.linux-amd64.tar.gz
解压
tar xf mysqld_exporter-0.15.1.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/mysqld_exporter-0.15.1.linux-amd64/ /usr/local/mysqld_exporter
切换目录至/usr/local/mysqld_exporter下,新增配置文件.my-exporter.cnf
[client]
user=exporter
password=Exporter1234!
host=127.0.0.1
port=3306
根据配置文件启动mysqld_exporter,并将数据暴露到9104端口,并且通过参数指定暴露的数据
./mysqld_exporter --web.listen-address=localhost:9104 --config.my-cnf=/usr/local/mysqld_exporter/.my-exporter.cnf --collect.auto_increment.columns --collect.binlog_size --collect.global_status --collect.engine_innodb_status --collect.global_variables --collect.info_schema.innodb_metrics --collect.info_schema.innodb_tablespaces --collect.info_schema.innodb_cmp --collect.info_schema.innodb_cmpmem --collect.info_schema.processlist --collect.info_schema.query_response_time --collect.info_schema.tables --collect.info_schema.tablestats --collect.info_schema.userstats --collect.perf_schema.eventswaits --collect.perf_schema.file_events --collect.perf_schema.indexiowaits --collect.perf_schema.tableiowaits --collect.perf_schema.tablelocks
注册到系统服务
vim /etc/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
Type=simple
User=mysqld_exporter
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my-exporter.cnf
Restart=on-failure
[Install]
WantedBy=multi-user.target
以服务的方式进行启动管理
添加用户
useradd --no-create-home --shell /bin/false mysqld_exporter
为用户赋予文件夹权限
chown -R mysqld_exporter:mysqld_exporter /usr/local/mysqld_exporter
重新加载系统配置
systemctl daemon-reload
开机启动
systemctl enable mysqld_exporter.service
启动服务
systemctl start mysqld_exporter
查看状态
systemctl status mysqld_exporter
最后修改prometheus的配置文件,并重启
在主配置文件最后加上下面三行
[root@P=prometheus~]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'mysql' # 取一个job名称来代表被监控的机器
static_configs:
- targets: ['192.168.0.232:9104'] # 这里改成被监控机器的IP,后面端口接9104
关闭服务
pkill prometheus
确认端口没有进程占用
lsof -i:9090
重启服务
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
确认端口被占用,说明重启成功
lsof -i:9090
回到web管理界面 --》点Status --》点Targets --》可以看到多了一台监控目标
四、Grafana可视化图形工具
① 在grafana服务器上安装grafana
下载并安装
apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_11.1.0_amd64.deb
dpkg -i grafana-enterprise_11.1.0_amd64.deb
出现报错
dpkg: error processing package ...原因:可能是dpkg管理的包信息出现了损坏
解决方法:通过sudo apt -f install进行修复
mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/ mkdir /var/lib/dpkg/info/ apt-get update apt-get -f install mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old/ rm -rf /var/lib/dpkg/info mv /var/lib/dpkg/info_old/ /var/lib/dpkg/info/
启动
systemctl daemon-reload
systemctl start grafana-server.service
systemctl status grafana-server.service
配置开展自动启动
systemctl enable grafana-server.service
grafana汉化(在配置文件中注释并添加如下内容)
vim /etc/grafana/grafana.ini
#default_language = en-US
default_language = zh-Hans
重启服务,然后登陆查看
systemctl restart grafana-server.service
② 通过浏览器访问 http:// grafana**服务器IP:3000**就到了登录界面,使用默认的admin用户,admin密码就可以登陆了
③ 下面我们把prometheus服务器收集的数据做为一个数据源添加到grafana,让grafana可以得到prometheus的数据。
登陆之后选择,左侧Configuration里面的DataSources
④点击Grafana首页侧边栏,Create DashBoard
创建仪表盘
相关文章:

Ubuntu20.04安装Prometheus监控系统
环境准备: 服务器名称内网IP公网IPPrometheus服务器192.168.0.23047.119.21.167Grafana服务器192.168.0.23147.119.22.8被监控服务器192.168.0.23247.119.22.82 更改主机名方便辨认 hostnamectl set-hostname prometheus hostnamectl set-hostname grafana hostn…...

kafka consumer客户端消费逻辑解析
kafka consumer客户端消费逻辑解析 一、主要步骤二、提交策略【步骤2代码解析】【提交策略总结】 三、拉取策略四、消费策略【代码解析】【消费策略总结】 一、主要步骤 这是kafka客户端拉取消息的入口,有4个主要部分 1、启动后的准备 consumer线程启动后ÿ…...

打印机出现多个副本无法删除
打印机出现多个副本很烦人,尤其是在打印机在局域网内被多个主机共享的时候,一旦出现新的副本,原有副本全都变成脱机状态,其他电脑连接的共享打印机是原来的副本,所以要重新设置打印机共享,很烦人。 想要删…...

FlinkSQL 开发经验分享
作者:汤包 最近做了几个实时数据开发需求,也不可避免地在使用 Flink 的过程中遇到了一些问题,比如数据倾斜导致的反压、interval join、开窗导致的水位线失效等问题,通过思考并解决这些问题,加深了我对 Flink 原理与机…...

JVM原理(十二):JVM虚拟机类加载过程
一个类型从被加载到虚拟机内存中开始,到卸载为止,它的整个生命周期将会经过 加载、验证、准备、解析、初始化、使用、卸载七个阶段。其中 验证、准备、解析三个部分统称为 连接 1. 加载 加载是整个类加载的一个过程。在加载阶段,Java虚拟机…...
Apipost接口测试工具的原理及应用详解(三)
本系列文章简介: 随着软件行业的快速发展,API(应用程序编程接口)作为不同软件组件之间通信的桥梁,其重要性日益凸显。API的质量直接关系到软件系统的稳定性、性能和用户体验。因此,对API进行严格的测试成为软件开发过程中不可或缺的一环。在众多API测试工具中,Apipost凭…...
unity里鼠标位置是否在物体上。
1. 使用Raycast 如果你的图片是在UI Canvas上,可以使用Raycast来检测鼠标点击是否在图片上。 using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class ImageClickChecker : MonoBehaviour { public Image targetImage; voi…...

Java知识点大纲
文章目录 第一阶段:JavaSE1、面向对象编程(基础)1)面向过程和面向对象区别2)类和对象的概述3)类的属性和方法4)创建对象内存分析5)构造方法(Construtor)及其重载6)对象类型的参数传递7)this关键字详解8)static关键字详解9)局部代码块、构造代码块和静态代码块10)pac…...

【Kafka】记录一次Kafka消费者重复消费问题
文章目录 现象业务背景排查过程Push与Pull 现象 用户反馈消费者出现消息积压,并且通过日志看,一直重复消费,且没有报错日志。 业务背景 用户的消费者是一个将文件做Embedding的任务,(由于AI技术的兴起,大…...

Android使用http加载自建服务器静态网页
最终效果如下图,成功加载了电脑端的静态网页内容,这是一个xml文件。 电脑端搭建http服务器 使用“Apache Http Server”,下载地址是:https://httpd.apache.org/download.cgi。 安装启动步骤,参考:Apach…...
python解耦重构,提高程序维护性
一、重构思想 思路来源 java spring设计模式学习,强调低耦合的思想,通过解耦来提高程序的可维护性。 二、代码重构 解决方案 通过单独配置文件来控制变量的改变。 spring的话可以读取xml或者是springboot 读取application.properties 来获取变量值。…...
深入解析 Laravel 事件系统:架构、实现与应用
Laravel 的事件系统是框架中一个强大且灵活的功能,它允许开发者在应用程序中定义和使用自定义事件和监听器。这个系统基于观察者模式,使得代码解耦和可维护性大大提高。在本文中,我们将深入探讨 Laravel 事件系统的工作原理、如何实现自定义事…...

视频怎么制作gif动态图片?GIF制作方法分享
视频怎么制作gif动态图片?视频制作GIF动态图片,不仅保留了视频的生动瞬间,还赋予了图像循环播放的魔力。这一技能不仅让创意表达更加丰富多彩,还极大地提升了视觉传播的效率和趣味性。在快节奏的数字时代,GIF动图以其小…...

js 使用 lodash-es 检测某个值是否是函数
import { isFunction } from lodash-eslet isA isFunction(() > {}) console.log(isA) //true https://www.lodashjs.com/docs/lodash.isFunction#_isfunctionvalue https://lodash.com/docs/4.17.15#isFunction 人工智能学习网站 https://chat.xutongbao.top...

[go-zero] goctl 生成api和rpc
文章目录 1.goctl 概述2.go-zero 需要安装的组件3.生成 api4.生成 rpc 1.goctl 概述 goctl支持多种rpc,较为流行的是google开源的grpc,这里主要介绍goctl rpc protoc的代码生成与使用。protoc是grpc的命令,作用是将proto buffer文件转化为相…...

docker -run hello-world超时
主要原因就是尝试拉取库的时候没有从阿里云镜像里拉,所以设置一下就好了 这里使用的是ubuntu系统(命令行下逐行敲就行了) sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": [&quo…...
拓扑学习系列(8)黎曼度量曲面与高斯曲率
黎曼度量 黎曼度量是黎曼几何中的一个重要概念,它用来描述流形上的切向量之间的长度和角度。黎曼度量赋予了流形一个内积结构,使得我们可以定义切向量的长度、夹角和内积,从而引入了度量空间的概念。让我更详细地解释一下黎曼度量࿱…...
汽车IVI中控开发入门及进阶(三十四):i.MX linux BSP
开发板: 汽车IVI中控开发入门及进阶(三十三):i.MX linux开发之开发板-CSDN博客 linux 开发项目: 汽车IVI中控开发入门及进阶(三十二):i.MX linux开发之Yocto-CSDN博客 前言: 有了开发板,linux BSP编译项目yocto,接下来就可以在i.MX平台上构建和安装i.MX Linux …...

【Python机器学习】算法链与管道——构建管道
目录 1、首先,我们构建一个由步骤列表组成的管道对象。 2、向任何其他scikit-learn估计器一样来拟合这个管道 3、调用pipe.score 我们来看下如何使用Pipeline类来表示在使用MinMaxScaler缩放数据后,再训练一个SVM的工作流程(暂时不用网格搜…...
Postman 高级用法学习
Postman 高级用法 Postman 是一款强大的 API 调试和开发工具,广泛应用于 API 开发、测试、调试和自动化流程中。除了基本的 API 请求发送和响应查看功能,Postman 还提供了许多高级功能。以下是详细的讲解,包括具体示例和操作步骤。 一、环境…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

基于django+vue的健身房管理系统-vue
开发语言:Python框架:djangoPython版本:python3.8数据库:mysql 5.7数据库工具:Navicat12开发软件:PyCharm 系统展示 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 摘要 健身房管理…...
ABB馈线保护 REJ601 BD446NN1XG
配电网基本量程数字继电器 REJ601是一种专用馈线保护继电器,用于保护一次和二次配电网络中的公用事业和工业电力系统。该继电器在一个单元中提供了保护和监控功能的优化组合,具有同类产品中最佳的性能和可用性。 REJ601是一种专用馈线保护继电器…...