Linux云计算SRE-第二十一周

构建单节点prometheus,部署node exporter和mongo exporter。构建kibana大盘。包含主机PU使用率,主机MEM使用率,主机网络包速度。mongo db大盘,包含节点在线状态,读操作延迟等

一、实验环境准备

- 节点信息:
  - node0 (10.0.0.100):Prometheus、Grafana、node exporter
  - node1 (10.0.0.110):node exporter
  - node2 (10.0.0.120):MongoDB、mongo exporter

二、
#1. 安装 Prometheus 和 Grafana
操作步骤:
#在 node0 上安装 Prometheus(官方二进制包)
wget https://github.com/prometheus/prometheus/releases/download/v2.53.3/prometheus-2.53.3.linux-amd64.tar.gz
tar -xvf prometheus-2.53.3.linux-amd64.tar.gz
mv prometheus-2.53.3.linux-amd64 /opt/prometheus
ln -s /opt/prometheus/prometheus /usr/local/bin/
ln -s /opt/prometheus/promtool /usr/local/bin/
#浏览器访问:
http://10.0.0.100:9090/
#创建service服务文件
tee /etc/systemd/system/prometheus.service <<EOF
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/prometheus/prometheus \--config.file=/opt/prometheus/prometheus.yml \--storage.tsdb.path=/opt/prometheus/data
ExecReload=/bin/kill -HUP \$MAINPID
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF#重新加载 systemd 管理器配置
systemctl daemon-reload
#启动并设置开机自启
systemctl start prometheus
systemctl enable prometheus#安装 Grafana(官方仓库)
curl -fsSL https://apt.grafana.com/gpg.key | gpg --dearmor -o /usr/share/keyrings/grafana.gpg
echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://apt.grafana.com stable main" | tee /etc/apt/sources.list.d/grafana.list
apt update && apt install -y grafana
systemctl enable --now grafana-server
#2. 安装 node exporter

脚本 `install_node_exporter.sh`:

#!/bin/bashNODE_EXPORTER_VERSION=1.9.0NODE_EXPORTER_FILE="node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz"
NODE_EXPORTER_URL=https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/${NODE_EXPORTER_FILE}
INSTALL_DIR=/usr/localHOST=`hostname -I|awk '{print $1}'`. /etc/os-releasemsg_error() {echo -e "\033[1;31m$1\033[0m"
}msg_info() {echo -e "\033[1;32m$1\033[0m"
}msg_warn() {echo -e "\033[1;33m$1\033[0m"
}color () {RES_COL=60MOVE_TO_COL="echo -en \\033[${RES_COL}G"SETCOLOR_SUCCESS="echo -en \\033[1;32m"SETCOLOR_FAILURE="echo -en \\033[1;31m"SETCOLOR_WARNING="echo -en \\033[1;33m"SETCOLOR_NORMAL="echo -en \E[0m"echo -n "$1" && $MOVE_TO_COLecho -n "["if [ $2 = "success" -o $2 = "0" ] ;then${SETCOLOR_SUCCESS}echo -n $"  OK  "    elif [ $2 = "failure" -o $2 = "1"  ] ;then ${SETCOLOR_FAILURE}echo -n $"FAILED"else${SETCOLOR_WARNING}echo -n $"WARNING"fi${SETCOLOR_NORMAL}echo -n "]"echo 
}install_node_exporter () {if [ ! -f  ${NODE_EXPORTER_FILE} ] ;thenwget ${NODE_EXPORTER_URL} ||  { color "下载失败!" 1 ; exit ; }fi[ -d $INSTALL_DIR ] || mkdir -p $INSTALL_DIRtar xf ${NODE_EXPORTER_FILE} -C $INSTALL_DIRcd $INSTALL_DIR &&  ln -s node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64 node_exportermkdir -p $INSTALL_DIR/node_exporter/bincd $INSTALL_DIR/node_exporter &&  mv node_exporter bin/ id prometheus &> /dev/null || useradd -r -s /sbin/nologin prometheuschown -R prometheus.prometheus ${INSTALL_DIR}/node_exporter/cat >  /etc/profile.d/node_exporter.sh <<EOF
export NODE_EXPORTER_HOME=${INSTALL_DIR}/node_exporter
export PATH=\${NODE_EXPORTER_HOME}/bin:\$PATH
EOF}node_exporter_service () {cat > /lib/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Prometheus Node Exporter
After=network.target[Service]
Type=simple
ExecStart=$INSTALL_DIR/node_exporter/bin/node_exporter
ExecReload=/bin/kill -HUP \$MAINPID
Restart=on-failure
User=prometheus
Group=prometheus[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reloadsystemctl enable --now node_exporter.service
}start_node_exporter() { systemctl is-active node_exporter.serviceif [ $?  -eq 0 ];then  echo color "node_exporter 安装完成!" 0echo "-------------------------------------------------------------------"echo -e "访问链接: \c"msg_info "http://$HOST:9100/metrics" elsecolor "node_exporter 安装失败!" 1exitfi 
}install_node_exporternode_exporter_servicestart_node_exporter

部署命令:

#在 node0、node1、node2 上执行
bash install_node_exporter.sh
scp install_node_exporter.sh node1:/root
scp install_node_exporter.sh node2:/root
ssh node1 "bash install_node_exporter.sh"
ssh node2 "bash install_node_exporter.sh"
#3. 安装 MongoDB 和 mongo exporter

操作步骤:

#在 node2 上安装 MongoDB
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
echo "deb [ arch=amd64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-8.0.list
apt update && apt install -y mongodb-org
systemctl enable --now mongod
#配置 MongoDB 认证
mongosh admin --eval 'db.createUser({ user: "admin", pwd: "123456", roles: [ { role: "root", db: "admin" } ] })'
sed -i '/^security:/a\  authorization: enabled' /etc/mongod.conf
systemctl restart mongod
#安装 mongo exporter
wget https://github.com/percona/mongodb_exporter/releases/download/v0.43.1/mongodb_exporter-0.43.1.linux-amd64.tar.gz
tar -xvf mongodb_exporter-0.43.1.linux-amd64.tar.gz
mv mongodb_exporter-0.43.1.linux-amd64 /opt/mongodb_exporter
chown -R prometheus.prometheus /opt/mongodb_exporter
#创建服务文件
cat > /lib/systemd/system/mongodb_exporter.service <<EOF
[Unit]
Description=MongoDB Exporter
After=network.target[Service]
Type=simple
ExecStart=/opt/mongodb_exporter/mongodb_exporter --mongodb.uri=admin:123456@localhost:27017
User=prometheus
Group=prometheus
Restart=on-failure[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload
systemctl enable --now mongodb_exporter.service
#4. 配置 Prometheus 抓取规则
#修改 Prometheus 配置文件
vim /opt/prometheus/prometheus.ymlscrape_configs:- job_name: 'node'static_configs:- targets: ['10.0.0.100:9100', '10.0.0.110:9100', '10.0.0.120:9100']- job_name: 'mongodb'static_configs:- targets: ['10.0.0.120:9216']
#检查配置文件语法
promtool check config /opt/prometheus/prometheus.yml
#重启 Prometheus
systemctl restart prometheus
#5. 配置 Grafana 仪表盘

1. 登录 Grafana:
   http://10.0.0.100:3000 (默认账号/密码:admin/admin)(新密码123456)

2. 添加 Prometheus 数据源:
   - 名称:Prometheus
   - URL:`http://10.0.0.100:9090`

3. 导入仪表盘:
   - Node Exporter 仪表盘(ID: 1860):
     导入 ID 1860,包含 CPU、内存、网络指标。
     
   - MongoDB 仪表盘(ID: 13387):
     导入 ID 13387,包含节点状态、读写延迟等指标。    

4. 自定义配置:

   - 网络包速度:rate(node_network_receive_bytes_total{device!~"lo|tun.*"}[5m])rate(node_network_transmit_bytes_total{device!~"lo|tun.*"}[5m])- MongoDB 读延迟:mongodb_cmd_duration_seconds_count{operation="find"}
三、验证与测试

1. Prometheus 验证:
  curl http://10.0.0.100:9090/targets
  应显示所有 exporter 状态为 `UP`。

2. Grafana 验证:
   - 检查仪表盘数据是否正常显示。
   - 确认 CPU、内存、网络、MongoDB 指标是否更新。
   - Node Exporter 仪表盘(ID 1860)显示 CPU、内存、网络指标。
   - MongoDB 仪表盘(ID 13387)显示节点状态、读写延迟等。

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

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

相关文章

蓝桥杯 - 简单 - 产品360度展示

介绍 在电子商务网站中&#xff0c;用户可以通过鼠标或手势交互实现 360 度全方位查看产品&#xff0c;提升用户体验。现在需要你设计一个 Pipeline 管道函数&#xff0c;用于控制 360 度展示产品的动画序列&#xff0c;通过管道连接各个动画步骤&#xff0c;使产品以流畅的方…

【Rust基础】使用LanceDB构建高性能以图搜图服务

简介 最近使用LanceDB构建了一个以图搜图服务&#xff0c;用于相似图片检索&#xff0c;支持以下功能&#xff1a; 搜索 支持向量搜索&#xff0c;查找相似图片支持通过item_id搜索精确搜索 数据管理 支持添加数据、批量导入CSV或JSON数据支持已有数据修改、删除 API 提供HTT…

蓝桥杯备考:模拟算法之排队接水

简单的模拟就行了&#xff0c;把他们的时间排序&#xff0c;时间最少的先上&#xff0c;然后算出每个人的等待时间的平均值 #include <iostream> #include <algorithm> using namespace std; const int N 1e310; int n; double sum; double ret; struct node{int…

zynq7000 + ucos3 + lwip202_v1_2调试过程

1 现在裸机应用上验证lwip 跑起来可能会报错&#xff0c;看下面的链接解决 zynq 网卡Phy setup error问题 zynq 网卡Phy setup error问题-CSDN博客 2 ping同以后&#xff0c;在zynq上添加ucos系统 链接如下&#xff1a; ZYNQ移植uCOSIII_zynq ucos-CSDN博客 3 移植lwip协议…

如何用 Postman 正确传递 Date 类型参数,避免服务器解析错误?

如何在 Postman 中传递 Date 类型参数。调试工具如何模拟发送用户端的当前时间呢&#xff1f; Postman 传递 Date 类型参数教程

卷积神经网络在图像分割中的应用:原理、方法与进展介绍

摘要 图像分割是计算机视觉领域的核心任务之一&#xff0c;旨在将图像划分为具有语义意义的区域。卷积神经网络&#xff08;CNN&#xff09;因其强大的特征提取能力&#xff0c;已成为图像分割的主流方法。本文系统介绍了CNN在图像分割中的关键技术&#xff0c;包括全卷积网络…

VMware Windows Tools 存在认证绕过漏洞(CVE-2025-22230)

漏洞概述 博通公司&#xff08;Broadcom&#xff09;近日修复了 VMware Windows Tools 中存在的一个高危认证绕过漏洞&#xff0c;该漏洞编号为 CVE-2025-22230&#xff08;CVSS 评分为 9.8&#xff09;。VMware Windows Tools 是一套实用程序套件&#xff0c;可提升运行在 VM…

DeepSeek-V3-0324对比OpenAI GPT-4o和Gemini 2.5 Pro

以下是DeepSeek-V3-0324、OpenAI GPT-4o与谷歌Gemini 2.5 Pro模型的更新点及优化对比总结&#xff1a; 1. DeepSeek-V3-0324 开源地址&#xff1a;https://huggingface.co/deepseek-ai/DeepSeek-V3-0324 核心更新与优化 性能提升&#xff1a; 采用6850亿参数MoE架构&#xff…

视频编码器的抉择:x264、x265、libaom、vvenc 对比测试实验

264、x265、libaom、vvenc 对比测试实验 测试机器配置&#xff1a;Apple M1 Pro -16G编码器版本&#xff08;选择自己编译&#xff09;&#xff1a;所有源码都是当前最新更新的状态&#xff0c;此外各类编码具体的编译过程可参考我的相关系列博客。 编码器GitHubx264git clon…

【极速版 -- 大模型入门到进阶】LORA:大模型轻量级微调

文章目录 &#x1f30a; 有没有低成本的方法微调大模型&#xff1f;&#x1f30a; LoRA 的核心思想&#x1f30a; LoRA 的初始化和 r r r 的值设定&#x1f30a; LoRA 实战&#xff1a;LoraConfig参数详解 论文指路&#xff1a;LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE M…

初识MySQl · 内置函数

目录 前言&#xff1a; 日期类函数 字符串函数 数学类函数 其他函数 前言&#xff1a; 在前文的学习我们已经简单了解了部分函数&#xff0c;比如count()函数什么的&#xff0c;今天我们主要是笼统的学习一下MySQL中的函数&#xff0c;仅仅从使用的角度来学习&#xff0c…

Python每日一题(7)

Python每日一题 2025.3.27 一、题目二、分析三、自己源代码四、deepseek答案五、源代码与ai分析 一、题目 question["""编写程序,生成包含20个随机数的列表,然后将前十个元素升序排列,后10个元素降序排列,并输出结果""" ]二、分析 今天本来写了…

一些需要学习的C++库:CGAL和Eysshot

写在前面&#xff1a; 从开始工作到现在&#xff0c;去过多家公司&#xff0c;多个行业&#xff0c; 虽然大部分时间在通信业&#xff0c;但也有其它的行业的工作没有做完&#xff0c;但也很感兴趣。每次想要研究一下时&#xff0c;总是想不起来。 这里写一些信息&#xff0c;…

嵌入式linux系统中对应的文件锁详细实现方法

//文件锁:flock用于对文件加锁或者解锁但是只能产生建议性锁,并且同一个文件不会同时 具有共享锁和互斥锁。 第一:flock函数对应的要素 头文件: #include <sys/file.h> 函数原型:int flock(int fd,int operation) 参数: fd:表示需要加锁文件的文件描述符 operati…

WEB或移动端常用交互元素及组件 | Axure / 元件类型介绍(表单元件、菜单和表格 、流程元件、标记元件)

文章目录 引言I Axure / 元件类型介绍基本元件表单元件菜单和表格流程元件标记元件II Axure 基础Axure / 常用功能介绍Axure / 常用元素实例Axure / 动态交互实例Axure / 常用设计分辨率推荐III Axure / 创建自己的元件库元件库作用元件库的创建及使用引言 I Axure / 元件类型介…

如何排查C++程序的CPU占用过高的问题

文章目录 可能的原因程序设计的BUG系统资源问题恶意软件硬件问题 通常步骤一个简单的问题代码在windows平台上如何排查Windows Process ExplorerWinDBG 在Linux平台如何排查使用TOP GDBPerf 可能的原因 程序设计的BUG 有死循环低效算法与数据结构滥用自旋锁频繁的系统调用&a…

19726 星际旅行

19726 星际旅行 ⭐️难度&#xff1a;困难 &#x1f31f;考点&#xff1a;Dijkstra、省赛、最短路问题、期望、2024 &#x1f4d6; &#x1f4da; import java.util.*;public class Main {static int N 1005;static ArrayList<Integer>[] g new ArrayList[N]; // …

vue3 + ant-design-vue4实现Select既可以当输入框也可以实现下拉选择

近日工作中&#xff0c;遇到一个需求&#xff0c;就是select的有一个前置切换条件&#xff0c;有些条件需要时输入&#xff0c;有些条件需要时下拉选择&#xff0c;但是在切换的时候&#xff0c;后面的这个输入或者选择组件不能闪烁&#xff0c;于是也就只能采用select去实现&a…

Unity UGUI - 六大基础组件

目录 一、Canvas上 1. Canvas&#xff1a;复制渲染子UI控件 2. ✨Canvas Scaler✨&#xff1a;画布分辨率自适应 3. Graphics Raycaster&#xff1a;射线事件响应 4. ✨Rect Transform✨&#xff1a;UI位置锚点对齐 二、Event System上 5. Event System 6. Standalone …

VSCode中使用Markdown以及Mermaid实现流程图和甘特图等效果

前言 Markdown&#xff08;简称md&#xff09;这种文件格式&#xff0c;渐渐盛行起来。有点类似html格式的意思。特别是内嵌的对Marmaid的支持&#xff0c;对流程图、甘特图等的绘制&#xff0c;都非常的方便。 一、安装Markdown的插件 二、创建.md文件 新建一个Markdown文件&…