Linux云计算SRE-第二十一周

news2025/3/31 9:38:39

构建单节点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/bash

NODE_EXPORTER_VERSION=1.9.0

NODE_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/local

HOST=`hostname -I|awk '{print $1}'`


. /etc/os-release

msg_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=60
    MOVE_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_COL
    echo -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} ] ;then
        wget ${NODE_EXPORTER_URL} ||  { color "下载失败!" 1 ; exit ; }
    fi
    [ -d $INSTALL_DIR ] || mkdir -p $INSTALL_DIR
    tar xf ${NODE_EXPORTER_FILE} -C $INSTALL_DIR
    cd $INSTALL_DIR &&  ln -s node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64 node_exporter
    mkdir -p $INSTALL_DIR/node_exporter/bin
    cd $INSTALL_DIR/node_exporter &&  mv node_exporter bin/ 
	id prometheus &> /dev/null || useradd -r -s /sbin/nologin prometheus
	chown -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
EOF
    systemctl daemon-reload
    systemctl enable --now node_exporter.service
}


start_node_exporter() { 
    systemctl is-active node_exporter.service
    if [ $?  -eq 0 ];then  
        echo 
        color "node_exporter 安装完成!" 0
        echo "-------------------------------------------------------------------"
        echo -e "访问链接: \c"
        msg_info "http://$HOST:9100/metrics" 
    else
        color "node_exporter 安装失败!" 1
        exit
    fi 
}

install_node_exporter

node_exporter_service

start_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
EOF

systemctl daemon-reload
systemctl enable --now mongodb_exporter.service
#4. 配置 Prometheus 抓取规则
#修改 Prometheus 配置文件
vim /opt/prometheus/prometheus.yml

scrape_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.coloradmin.cn/o/2324107.html

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

相关文章

无人机,云台参数设置,PWM输出控制云台俯仰

目录 1、云台与飞控的连接 2、PX4飞控控制云台&#xff0c;QGC地面站的设置 3、遥控器映射通道设置 4、其他设置 4.1、COM_PREARM_MODE&#xff0c;预解锁模式 4.2、RC9_DZ &#xff0c;遥控器通道死区设置 1、云台与飞控的连接 首先确定一下&#xff0c;设置飞控第几路…

EtherCAT转ProfiNet协议转换网关构建西门子PLC与海克斯康机器人的冗余通信链路

一、案例背景 某电子制造企业的5G通信模块组装线&#xff0c;采用西门子S7-1200PLC&#xff08;ProfiNet主站&#xff09;进行产线调度&#xff0c;而精密组装工序由3台海克斯康工业机器人&#xff08;EtherCAT从站&#xff09;完成。由于协议差异&#xff0c;机器人动作与PLC…

网络中常用协议

一, TCP协议 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是互联网核心协议之一&#xff0c;位于传输层&#xff0c;为应用层提供可靠的、面向连接的数据传输服务。 1. TCP的核心特点 特性说明面向连接通信前需通过三次握手建立连接&a…

自动驾驶04:点云预处理03

点云组帧 感知算法人员在完成点云的运动畸变补偿后&#xff0c;会发现一个问题&#xff1a;激光雷达发送的点云数据包中的点云数量其实非常少&#xff0c;完全无法用来进行后续感知和定位层面的处理工作。 此时&#xff0c;感知算法人员就需要对这些数据包进行点云组帧的处理…

Linux内核软中断分析

一、软中断类型 在Linux内核中&#xff0c;中断处理分为上半部&#xff08;硬中断&#xff09;和下半部。上半部负责快速响应硬件事件&#xff0c;而下半部用于处理耗时任务&#xff0c;避免阻塞系统。下半部有三种机制&#xff1a;软中断&#xff08;Softirq&#xff09;、小任…

Linux修改默认shell为zsh

一、修改模型shell为zsh 1、检查当前使用的shell echo $SHELL 2、检查当前系统支持的shell cat /etc/shells# 输出结果显示如下&#xff1a; """ /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/csh /bin/tcsh /usr/bin/csh /usr/bin/tcsh /usr/bin/zsh…

[ComfyUI] 如何升级自定义节点(Custom Nodes)

ComfyUI 提供了灵活的 自定义节点(Custom Nodes) 功能,允许用户扩展其能力。随着插件的更新,保持 Custom Nodes 处于最新状态是确保兼容性和功能完整性的关键。 1. 手动升级(Git Pull 方式) 如果你的 自定义节点 是通过 Git 克隆的,可以使用 Git 命令来升级: 步骤: …

linux和windows是采用何种机制保存密码的?

传统Linux的不足&#xff1a; 1&#xff09;存在特权用户root 任何人只要得到root的权限&#xff0c;对于整个系统都可以为所欲为。这一点Windows也一样。 &#xff12;)对于文件的访问权划分不够细 在linux系统里&#xff0c;对于文件的操作&#xff0c;只有「所有者」…

matlab打开两个工程

1、问题描述 写代码时&#xff0c;需要实时参考别人的代码&#xff0c;需要同时打开2个模型&#xff0c;当模型在同一个工程内时&#xff0c;这是可以直接打开的&#xff0c;如图所示 2、解决方案 再打开一个MATLAB主窗口 这个时候就可以同时打开多个模型了 3、正确的打开方…

HarmonyOS主题管理工具封装:动态切换、持久化存储与常见问题解析

注&#xff1a;适用版本&#xff08;Harmony OS NEXT / 5.0 / API 12 &#xff09; 一、效果展示 二、技术栈 HarmonyOS ArkUI框架 使用AppStorage实现跨组件状态管理&#xff0c;PersistentStorage持久化存储用户偏好。 系统配置常量 ConfigurationConstant.Color…

60V单通道高精度线性恒流LED驱动器防60V反接SOD123封装

产品描述: PC561A 系列产品是用于产生单通道、高精度恒流源&#xff08; Constant Current Regulator&#xff0c; CCR&#xff09; 的LED 驱动芯片&#xff0c;为各类 LED 照明应用提供高性价比恒流方案。PC561A 采用晶体管自偏置技术&#xff0c;可在超宽工作电压范围内维持…

学习threejs,使用Sprite精灵、SpriteMaterial精灵材质

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.Sprite1.1.1 ☘️代码…

Cent OS7+Docker+Dify

由于我之前安装了Dify v1.0.0&#xff0c;出现了一些问题&#xff1a;无法删除&#xff0c;包括&#xff1a;知识库中的文件、应用、智能体、工作流&#xff0c;都无法删除。现在把服务器初始化&#xff0c;一步步重新安装&#xff0c;从0到有。 目录 1、服务器重装系统和配置…

本地AI大模型部署革命:Ollama部署和API调试教程

Ollama&#xff1a;你的私人AI助手 还在为云端AI服务的高昂费用和隐私问题而烦恼吗&#xff1f;Ollama横空出世&#xff0c;它是一款专为本地环境打造的大模型部署神器&#xff0c;让你轻松在自己的设备上运行各种强大的AI模型。无论你是开发者还是普通用户&#xff0c;Ollama…

centos7 linux VMware虚拟机新添加的网卡,能看到网卡名称,但是看不到网卡的配置文件

问题现象&#xff1a;VMware虚拟机新添加的网卡&#xff0c;能看到网卡&#xff0c;但是看不到网卡的配置文件 解决方案&#xff1a; nmcli connection show nmcli connection add con-name ens36 ifname ens36 type ethernet #创建一个网卡连接配置文件&#xff0c;这里con…

K8S学习之基础五十一:k8s部署jenkins

k8s部署jenkins 创建nfs共享目录&#xff0c; mkdir -p /data/v2 echo /data/v2 *(rw,no_root_squash) > /etc/exports exportfs -arv创建pv、pvc vi pv.yaml apiVersion: v1 kind: PersistentVolume metadata:name: jenkins-k8s-pv spec:capacity:storage: 1GiaccessMod…

在 Mermaid 流程图里“驯服”quot;的魔法指南!!!

&#x1f409; 在 Mermaid 流程图里“驯服”"的魔法指南 在使用 Mermaid 画流程图时&#xff0c;是不是经常遇到想秀一波 &quot; 却被它“反杀”的情况&#xff1f;&#x1f3af; 今天就来教大家如何在这头代码野兽的嘴里&#xff0c;抢回我们的双引号实体编码&#…

GitHub美化个人主页3D图表显示配置操作

这个功能主要是用的这个开源仓库&#xff1a;https://github.com/yoshi389111/github-profile-3d-contrib 想看效果的话&#xff0c;我的个人主页&#xff1a;https://github.com/Sjj1024 开始操作 1.创建自己的github主页属性项目——跟你github用户名一致即可&#xff0c;…

HarmonyOS NEXT 鸿蒙中关系型数据库@ohos.data.relationalStore API 9+

核心API ohos.data.relationalStore API 9 数据库 数据库是存储和管理数据的系统 数据库&#xff08;Database&#xff09;是一个以特定方式组织、存储和管理数据的集合&#xff0c;通常用于支持各种应用程序和系统的运行。它不仅是存放数据的仓库&#xff0c;还通过一定的…

【JavaScript】JavaScript Promises实践指南

【JavaScript】JavaScript Promises实践指南 你了解JavaScript中的Promises吗&#xff1f;这是一个很多人一开始就放弃的主题&#xff0c;但我会尽量让它变得尽可能简单。 1. “Promise”到底是什么&#xff1f; “Promise”是异步编程中的一个基本概念&#xff0c;特别是在J…