快速搭建Grafana Promethus 服务器监控系统

news2025/1/4 17:26:57

该文参考文章,其中又遇到一些问题,并解决,当前主要为了记录一下

探针 Grafana + Prometheus 之比 Docker 更简单的部署流程 - 承飞之咎本文重在 Grafana + Prometheus 探针 方案的部署流程,介绍和更多使用请到:探针 ̵…icon-default.png?t=N7T8https://blog.vfly2.com/2023/07/a-simpler-deployment-process-of-the-probe-grafana-prometheus-compared-to-docker/两种方式进行,第一种只需要几行命令即可,需要外网支持,网络环境比较好建议使用。第二种打开github就可以

一、第一种方式

一键安装 Prometheus

wget -qO- 'https://raw.githubusercontent.com/AhFeil/bash-script/main/install-prometheus.sh' | sudo bash

若运行结束后,出现 active (running) ,则安装成功。

通过 http://ip_addr:9090 访问 Prometheus Web 界面和仪表板。如果访问不到,请看下面我的问题第四部分---解决部分。

sudo ufw allow from 监控服务器IP to any port 9100 comment 'node_exporter'

记得修改 IP

一键安装 Node Exporter

wget -qO- 'https://raw.githubusercontent.com/AhFeil/bash-script/main/install-node_exporter.sh' | sudo bash

若运行结束后,出现 active (running) ,则安装成功。

脚本中设置了开机自启动等。基本上就配置好 准备采集服务器数据的环境。直接跳到第三部分:配置界面

二、第二种方式

安装 Prometheus,下载地址:Download | Prometheus

# 获取 Prometheus 最新版本
github_project="prometheus/prometheus"
tag=$(wget -qO- -t1 -T2 "https://api.github.com/repos/${github_project}/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
# echo ${tag}
# tag2=${tag#*v}
 
# 下载 Prometheus 最新版本并解压
wget https://github.com/prometheus/prometheus/releases/download/${tag}/prometheus-${tag#*v}.linux-amd64.tar.gz && \
tar xvfz prometheus-*.tar.gz && \
rm prometheus-*.tar.gz && cd prometheus-*.linux-amd64
 
# 将 Prometheus 可执行文件放入通用的系统目录下
sudo mv prometheus promtool /usr/local/bin/
# /etc/prometheus 放Prometheus配置文件。 /var/lib/prometheus 存应用程序数据
sudo mkdir -p /etc/prometheus /var/lib/prometheus && \
sudo mv prometheus.yml /etc/prometheus/prometheus.yml
sudo mv consoles/ console_libraries/ /etc/prometheus/
 
# 清理
cd .. && rm -r prometheus-*.linux-amd64

wget下载不下来时,查看请求路径,在文中下载下来后,传在服务器。执行命令基本不变,有些删除命令可以不执行。

使用以下命令验证 Prometheus 是否已成功安装:

prometheus --version

创建一个系统用户 prometheus

sudo useradd -rs /bin/false prometheus

所有权分配

sudo chown -R prometheus: /etc/prometheus /var/lib/prometheus

使用 systemd 守护进程,它能实现程序的后台运行、开机自启、崩溃重启等。

创建 prometheus.service 文件:

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

编辑内容

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
 
[Service]
User=prometheus
Group=prometheus
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries \
    --web.listen-address=0.0.0.0:9090 \
    --web.enable-lifecycle \
    --log.level=info
 
[Install]
WantedBy=multi-user.target

说明:

  • ExecStart :就是在终端时开启程序的命令,只不过要用绝对路径。
  • config.file 将 Prometheus 配置文件的位置为 /etc/prometheus/prometheus.yml 。
  • storage.tsdb.path 告诉 Prometheus 将程序数据存储在 /var/lib/prometheus/ 中。
  • web.listen-address 设置为 0.0.0.0:9090 ,允许 Prometheus 侦听所有网络接口上的连接。
  • web.enable-lifecycle 选项允许用户在不重新启动Prometheus的情况下重新加载配置文件。

 重新加载 systemctl 守护进程。

sudo systemctl daemon-reload

 设置开机自启,并立即启动运行

sudo systemctl enable --now prometheus

查看状态

sudo systemctl status prometheus
sudo systemctl start prometheus

如果 prometheus 服务无法正常启动,请运行命令 journalctl -u prometheus -f --no-pager 并检查输出是否有错误。

通过 http://ip_addr:9090 访问 Prometheus Web 界面和仪表板。将 ip_addr 替换为监控服务器的地址。

进入网页后,由于 Prometheus 使用的是默认配置文件,因此还没显示太多信息。

默认的 prometheus.yml 文件包含用于抓取本地主机的指令。到【Status】-【Targets】可以看见所有目标。 目前应该只有本地 Prometheus 一个目标。

安装Node Exporter

在客户端上安装 Node Exporter ,再将客户端添加到 prometheus.yml 中服务器列表中就能监控。其统计信息收集可在端口 9100 上获得。该端口可通过互联网访问,任何在其他地方运行 Prometheus 的人都可以收集它们。

因此,使用防火墙限制仅监控服务器可以访问:

sudo ufw allow from 监控服务器IP to any port 9100 comment 'node_exporter'

下载地址:Download | Node Exporter 

# 获取 Prometheus 最新版本
github_project="prometheus/node_exporter"
tag=$(wget -qO- -t1 -T2 "https://api.github.com/repos/${github_project}/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
echo ${tag}
echo ${tag#*v}
 
wget https://github.com/prometheus/node_exporter/releases/download/${tag}/node_exporter-${tag#*v}.linux-amd64.tar.gz && \
tar xvfz node_exporter-*.tar.gz && \
rm node_exporter-*.tar.gz
 
sudo mv node_exporter-*.linux-amd64/node_exporter /usr/local/bin
rm -r node_exporter-*.linux-amd64*

wget下载不下来时,查看请求路径,在文中下载下来后,传在服务器。执行命令基本不变,有些删除命令可以不执行。

将 Node Exporter 作为服务运行会更方便。首先创建一个 node_exporter 用户。

sudo useradd -rs /bin/false node_exporter

创建一个服务文件 node_exporter.service 供 systemctl 使用。

sudo vim /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
 
[Service]
User=node_exporter
Group=node_exporter
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/node_exporter
 
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
sudo systemctl status node_exporter
sudo systemctl restart node_exporter

如果前面没设置只能由监控服务器访问,可以使用浏览器访问客户端节点的 9100 端口,例如 http://ip_addr:9100 。

将显示标题为 Node Exporter 的页面以及读取 Metrics 的链接。单击 Metrics 链接并确认正在收集统计信息。有关各种统计信息的详细说明,请参阅文档。

配置 Prometheus 监控客户端节点

在运行Prometheus的监控服务器上,打开 prometheus.yml 进行编辑。

sudo vim /etc/prometheus/prometheus.yml

在 prometheus 作业下方,添加第二个作业,其 job_name 为 remote_collector 。包括以下信息。

  • 设置抓取时间间隔: scrape_interval: 10s
  • 添加要监控的 IP 和 端口号 :9100 ,使用逗号分隔每个条目。
  • 要启用对本地服务器的监视,请将 localhost:9100 条目添加到列表中,并在本地安装 Node Exporter。
...
 
  - job_name: "remote_collector"
    scrape_interval: 10s
    static_configs:
      - targets: ["remote_addr_IP:9100", "remote_addr_IP:9100"]

 立即刷新 Prometheus,

sudo systemctl restart prometheus

使用 Web 浏览器重新访问监控服务器上端口 9090 的 Prometheus Web 门户。选择【Status】-【Targets】。将显示 remote_collector 作业的第二个链接,指向客户端上的端口 9100 。单击链接查看统计数据。

第三步: 安装 Grafana服务器,配置界面

Grafana 提供了查看 Prometheus 收集的统计信息的界面。在运行 Prometheus 的同一服务器上安装 Grafana 并将 Prometheus 添加为数据源。

1. 安装一些必需的实用程序

sudo apt-get install -y apt-transport-https software-properties-common

 2. 导入密钥

sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key

3. 添加稳定版本

echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

4.安装开源版本

sudo apt-get update && sudo apt-get install grafana

要安装 Grafana 企业版,请使用命令 sudo apt-get install grafana-enterprise 。

重新加载 systemctl守护进程

sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server.service
sudo systemctl status grafana-server
sudo systemctl start grafana-server

关联 Grafana 和 Prometheus

所有系统组件现已安装,但 Grafana 和 Prometheus 尚未关联。剩下的可以使用 Grafana Web 界面完成。

要集成 Grafana 和 Prometheus,请按照以下步骤操作:

  1. 浏览器访问监控服务器的 3000 端口。例如,输入 http://ip_addr:3000 ,将 ip_addr 替换为实际 IP 地址。
  2. Grafana 显示登录页面。使用用户名和默认密码 都是 admin 。当出现提示时,将密码更改为更安全的值。
  3. 成功更改密码后,Grafana 将显示 Grafana 仪表板。
  4. 要将 Prometheus 添加为数据源,请单击齿轮符号(代表配置),然后选择数据源。

 

  1. 对于本地 Prometheus 源,将 URL 设置为 http://remoteIP:9090 。大多数其他设置可以保留默认值。

导入 Grafana 仪表板

可以创建自定义仪表板。然而,Prometheus 已经创建了一个仪表板来支持 Node Exporter,名为 Node Exporter Full ,下面是导入的流程。

要创建自定义仪表板,请单击仪表板按钮,该按钮类似于四个正方形。然后选择+新建仪表板。有关更多信息,请参阅 Grafana 构建仪表板指南。

  1. 访问 Grafana 仪表板库: https://grafana.com/grafana/dashboards/。输入 Node exporter 作为搜索词。
  2. 选择 Node Exporter Full 条目。
  3. 右下角查看 ID 号。该板的 ID 当前为 1860 。
  4. 返回 Grafana 仪表板。选择由四个正方形组成的仪表板图标,

 

2. 右边【New】-【Import】。

3. 然后在 【Import via grafana.com】, 输入上一步中的 ID 1860 。然后选择【Load】 

4. 在下一个屏幕确认导入详细信息。选择 Prometheus 作为数据源,然后单击【Import】按钮。

5. Node Exporter Full 仪表板立即生效。它显示客户端节点的性能指标和状态,包括内存、RAM 和 CPU 详细信息。

 这里可以配置多个服务器监控地址,配置多个数据源。

四、问题解决

新装的机器往往防火墙将端口关闭,

1.允许特定端口的传入连接:

假设您要允许访问的端口是 8080,可以使用以下命令:

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

2.如果您想允许任何主机连接到该端口,可以将源 IP 地址指定为 0.0.0.0/0

sudo iptables -A INPUT -p tcp --dport 8080 -s 0.0.0.0/0 -j ACCEPT

这将允许来自任何 IP 地址的 TCP 流量通过指定的端口。 

3.保存 iptables 规则:

如果您使用的是某些 Linux 发行版,您可能需要保存 iptables 规则以确保它们在系统重启后仍然生效。这可以通过以下命令之一完成:

sudo service iptables save   # 对于一些系统
sudo iptables-save > /etc/sysconfig/iptables   # 对于一些系统

4.验证规则:

您可以使用以下命令验证当前 iptables 规则

sudo iptables -L -n

 

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

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

相关文章

【12.20】转行小白历险记 登录+注册页

一、登录注册页面逻辑 写样式布局:垂直居中、编程式路由、调后端接口正则表达式验证用户输入的密码规则校验通过后,跳转页面js兜底校验调后端接口将token值存储到vuex中,实现持久化存储 vuex不是持久化存储的,如果需要持久化存储…

当下流行的直播技术demo演示

nginx-http-flv-module(更新不是很频繁) SRS: https://ossrs.net/lts/zh-cn/(独立官网,目前最新稳定版version5) 基于SRS搭建直播demo演示: 一、搭建流媒体服务器 参见官网:https://ossrs.ne…

Windows 如何在局域网中建立NTP服务器实现时间同步(设置一台设备作为主机,其他设备作为从机来同步时间)

首先简单了解一下什么是NTP 网络时间协议(NTP)是一种用于同步计算机网络上各设备时间的协议。NTP时间同步在许多项目和应用中都是关键的,特别是那些对时间同步精度有要求的场景。比如需要使用NTP时间同步的情况有:金融交易系统、科学研究实验、工业自动…

ROS笔记之rosbag的快速切片(C++实现)

ROS笔记之rosbag的快速切片(C实现) —— 杭州 2023-12-21 夜 code review 文章目录 ROS笔记之rosbag的快速切片(C实现)1.运行效果2.文件结构3.fast_rosbag_slice.cpp4.CMakeLists.txt5.package.xml6.对fast_rosbag_slice.cpp进行函数封装 正常该功能是ROS官方命令行&#xff1a…

pycharm下执行conda命令提示无法识别解决方案

1 问题描述 win10环境命令行执行conda命令,报命令无法识别,错误信息如下: PS D:\code\cv> conda activate pt conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径&a…

伽马校正:FPGA

参考资料: Tone Mapping 与 Gamma Correction - 知乎 (zhihu.com) Book_VIP: 《基于MATLAB与FPGA的图像处理教程》此书是业内第一本基于MATLAB与FPGA的图像处理教程,第一本真正结合理论及算法加速方案,在Matlab验证,以及在FPGA上…

106 uni-app 小程序之巨坑 not found path,not found methods v-for渲染出现报错

1.Component is not found in path 你是否像我一样,检查了无数遍,引入路径检查千万遍,就是没写错,小程序后台就是给你报错, 不用慌,心里默念:我不能砸电脑,我不能砸电脑&#xff0…

python可以做小程序研发嘛,python能做微信小程序吗

大家好,给大家分享一下python可以做微信小程序开发吗,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 大家好,给大家分享一下用python编写一个小程序,很多人还不知道这一点。下面详细解释一下用python代码…

[Spring 原理] 依赖查找

在Spring框架中,依赖注入是一项非常重要的功能,它能够帮助我们解决对象之间的依赖关系。而其中的doResolveDependency方法是Spring框架中执行依赖注入的核心方法之一。本篇博客将对doResolveDependency方法进行详细介绍,帮助读者更好地理解和…

手写题 - 实现一个带并发限制的异步调度器

题目 实现一个带并发限制的异步调度器 Scheduler,保证同时运行的任务最多有N个。 完善下面代码中的 Scheduler 类,使得以下程序能正确输出:class Scheduler {add(promiseCreator) { ... }// ... }const timeout (time) > new Promise(re…

Python 爬虫之下载视频(二)

爬取某Y的视频链接和标题 文章目录 爬取某Y的视频链接和标题前言一、基本思路二、程序解析阶段三、程序处理阶段总结 前言 这篇内容就简单给大家写个如何从网页上爬取某B主 主页 页面上所有的视频链接和视频标题。 这篇是基础好好看,下篇会根据这篇的结果做一个批…

八:爬虫-MySQL基础

一:MySQL数据库基础 1.MySQL数据库介绍 MySQL是一个[关系型数据库管理系统],由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Rela…

3D模型人物换装系统(二 优化材质球合批降低DrawCall)

3D模型人物换装系统 介绍原理合批材质对比没有合批材质核心代码完整代码修改总结 介绍 本文使用2018.4.4和2020.3.26进行的测试 本文没有考虑法线贴图合并的问题,因为生成法线贴图有点问题,放在下一篇文章解决在进行优化 如果这里不太明白换装的流程可以…

gem5 garnet l1 l2 cache的创建与相连

gem5 garnet l1 l2 cache的创建与相连 主要就是这个图: 细节 我们用的是gem5/configs/deprecated/example/fs.py #fs.py 引入了上两层路径,也就是当前可以看到 gem5/configs/路径。 addToPath("../../")#fs.py引入了gem5/configs/ruby/Ru…

PIC单片机项目(8)——基于PIC16F877A的温度光照检测装置的protues仿真

1.功能设计 使用PIC16F877A单片机,进行温度检测、光照检测。温度使用的是DS18B20,光照检测直接利用的AD转换。 光照太暗就开灯,温度太高就开风扇。温度阈值和光照阈值都实时显示在LCD1602屏幕上面。 完成了protues仿真。文件里面包含代码和仿…

图片转excel:“保留数字格式”在什么场景下该勾

保留数字格式是什么意思呢?顾名思义,就是将转出来的数字保留为数字格式,而不是文本格式。我们知道,OCR程序将图片上的文字识别为电脑可编辑的文字后,如果导入到excel不加处理,则单个数字过长的文字就会被ex…

Python整数常用的方法汇总与Python3 File(文件) 方法

Python整数常用的方法汇总 python3基础之整数常用的方法整理 希望对大家学习或者使用python3能具有一定的参考价值。 __abs__ #返回一个数的绝对值 __add__ #两数相加 __and__ #两数按位与操作 __bool__ …

04-JVM字节码文件结构深度剖析

一、源代码 package com.tuling.jvm;public class TulingByteCode {private String userName;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName userName;} }二、通过javap -verbose TulingByteCode .class反编译 //…

RobotFramework 自动化测试实战进阶篇

工具 Robotframework, 采用PO设计模式 PO模型 PO模型即Page Objects,直译意思就是“页面对象”,通俗的讲就是把一个页面,或者说把一个页面的某个区域当做一个对象,通过封装这个对象可以实现调用。 PO设计的好处 代码复用&…

python实现简单选择排序法

对于排序的方法中,简单选择排序法是相对符合人类的思维的一种方式,对于简单选择排序方法的核心思想是: 从待排序的序列集合中,找到最大值或者是最小值,然后将该值放置在其在最终的排序序列中的位置,也就是…