离线安装prometheus与Grafana实现可视化监控

简介

prometheus 是一个专为云环境设计的开源系统监控和警报工具,它收集并存储多维度的时间序列数据,通过PromQL查询语言提供强大的数据检索能力,并支持可视化及警报功能。而 Grafana 则是一个开源的数据可视化平台,能够与包括Prometheus在内的多种数据源无缝集成,将复杂的数据转化为直观易懂的图表和仪表板,帮助用户快速洞察系统状态,优化决策过程。

安装部署

步骤 1:准备离线安装包

下载 Prometheus 和 Grafana 的安装包:

需要在一台可以访问互联网的机器上下载 Prometheus 和 Grafana 的二进制文件以及它们的依赖项。

下载所需的 .tar.gz 文件并将其复制到目标机器上。

将下载的文件传输到目标服务器:

使用 SCP 或其他文件传输工具将文件传输到目标 Ubuntu 20.04 服务器。
prometheus下载地址https://prometheus.io/download/
Grafana下载地址https://grafana.com/grafana/download
步骤 2:编写离线安装脚本

以下是一个示例 Bash 脚本:

bash 复制代码
#!/bin/bash

# 设置安装目录
PROMETHEUS_VERSION="2.53.2"
GRAFANA_VERSION="10.2.0"

INSTALL_DIR="/usr/local"

# 解压 Prometheus
echo "解压 Prometheus..."
tar -xzf prometheus-$PROMETHEUS_VERSION.linux-amd64.tar.gz -C $INSTALL_DIR

# 创建软链接
ln -s $INSTALL_DIR/prometheus-$PROMETHEUS_VERSION.linux-amd64 $INSTALL_DIR/prometheus

# 创建 Prometheus 用户
useradd --no-create-home --shell /bin/false prometheus

# 设置权限
chown -R prometheus:prometheus $INSTALL_DIR/prometheus-$PROMETHEUS_VERSION.linux-amd64

# 配置 Prometheus 服务
cat <<EOF | tee /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=$INSTALL_DIR/prometheus/prometheus \
  --config.file=$INSTALL_DIR/prometheus/prometheus.yml \
  --storage.tsdb.path=$INSTALL_DIR/prometheus/data

[Install]
WantedBy=multi-user.target
EOF

# 解压 Grafana
echo "解压 Grafana..."
tar -xzf grafana-enterprise-$GRAFANA_VERSION.linux-amd64.tar.gz -C $INSTALL_DIR

# 创建软链接
ln -s $INSTALL_DIR/grafana-$GRAFANA_VERSION $INSTALL_DIR/grafana

# 配置 Grafana 服务
cat <<EOF | tee /etc/systemd/system/grafana.service
[Unit]
Description=Grafana
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=$INSTALL_DIR/grafana/bin/grafana-server \
  --config=$INSTALL_DIR/grafana/conf/defaults.ini \
  --homepath=$INSTALL_DIR/grafana

[Install]
WantedBy=multi-user.target
EOF

# 重新加载 systemd 配置
echo "重新加载 systemd 配置..."
systemctl daemon-reload

# 启动并启用 Prometheus 和 Grafana
echo "启动 Prometheus..."
systemctl start prometheus
systemctl enable prometheus

echo "启动 Grafana..."
systemctl start grafana
systemctl enable grafana

echo "安装完成!Prometheus 和 Grafana 已启动并配置为开机自启。"

步骤 3:执行脚本

赋予脚本执行权限:

bash 复制代码
chmod +x install_prometheus_grafana.sh

运行脚本进行安装:

bash 复制代码
sudo ./install_prometheus_grafana.sh

步骤 4:验证安装

通过浏览器访问 http://<你的服务器IP>:3000 验证 Grafana 是否成功运行。

通过 http://<你的服务器IP>:9090 验证 Prometheus 是否成功运行。

ps:Grafana默认语言为英文,可以设置 Home - 》Administration-》Default preferences,将语言更改为中文,默认账户密码皆为admin。
步骤5:客户端安装

首先将下载的文件传输到目标服务器,本次教程主要演示node_exporter安装,下面是安装脚本:

bash 复制代码
#!/bin/bash

# 设置 Node Exporter 版本号和安装目录
NODE_EXPORTER_VERSION="1.8.2"
INSTALL_DIR="/usr/local/bin"
NODE_EXPORTER_ARCHIVE="node_exporter-$NODE_EXPORTER_VERSION.linux-amd64.tar.gz"
NODE_EXPORTER_USER="node_exporter"

# 检查二进制文件是否存在
if [ ! -f "$NODE_EXPORTER_ARCHIVE" ]; then
    echo "Node Exporter 二进制文件未找到:$NODE_EXPORTER_ARCHIVE"
    exit 1
fi

# 解压 Node Exporter 文件
echo "解压 Node Exporter..."
tar -xzf "$NODE_EXPORTER_ARCHIVE" -C /tmp/

# 移动二进制文件到安装目录
echo "安装 Node Exporter 到 $INSTALL_DIR..."
sudo mv /tmp/node_exporter-$NODE_EXPORTER_VERSION.linux-amd64/node_exporter $INSTALL_DIR/

# 创建 node_exporter 用户(如果尚未创建)
if getent passwd "$NODE_EXPORTER_USER" > /dev/null 2>&1; then
    echo "用户 $NODE_EXPORTER_USER 已存在。"
else
    sudo useradd --no-create-home --shell /bin/false $NODE_EXPORTER_USER
    echo "用户 $NODE_EXPORTER_USER 已创建。"
fi

# 设置二进制文件权限
sudo chown $NODE_EXPORTER_USER:$NODE_EXPORTER_USER $INSTALL_DIR/node_exporter

# 创建 systemd 服务文件
echo "创建 Node Exporter 服务..."
sudo tee /etc/systemd/system/node_exporter.service > /dev/null <<EOF
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=$NODE_EXPORTER_USER
Group=$NODE_EXPORTER_USER
Type=simple
ExecStart=$INSTALL_DIR/node_exporter

[Install]
WantedBy=multi-user.target
EOF

# 重新加载 systemd 并启动 Node Exporter 服务
echo "启动 Node Exporter 服务..."
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

# 清理临时文件
echo "清理临时文件..."
rm -rf /tmp/node_exporter-$NODE_EXPORTER_VERSION.linux-amd64

# 检查服务状态
sudo systemctl status node_exporter

echo "Node Exporter 已成功安装并启动。"

脚本运行成功后可以使用"ss -ntulp | grep 9100"来验证程序是否正常启动。

具体操作

1、普罗米修斯服务端配置文件添加监控项

bash 复制代码
sudo vim /usr/local/prometheus/prometheus.yml
- job_name: "linux"
    static_configs:
      - targets: ["192.168.188.148:9100"] # 若需要添加多个节点,需要使用","分开

重启prometheus服务:

bash 复制代码
sudo systemctl restart prometheus.service

打开普罗米修斯自带的监控页面,Status -> Targets 查看:

2、Grafana 展示 Prometheus 数据

首先,在Configuration -> Data Sources ->add data source -> Prometheus这个选项下面添加数据源:

然后,新增Dashboard Linux基础数据展示:

导入模板:

ps:本次测试所使用模板是在https://grafana.com/grafana/dashboards中下载的相应dashboards的id为8919的模板。
仪表板效果图展示:

本次测试只是单独介绍了监控Linux的一些基础用法,后期会继续进行更新。

相关推荐
川石课堂软件测试15 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
逻辑与&&1 天前
[Prometheus学习笔记]从架构到案例,一站式教程
笔记·学习·prometheus
Walden-20201 天前
构建基于 DCGM-Exporter, Node exporter,PROMETHEUS 和 GRAFANA 构建算力监控系统
docker·容器·grafana·prometheus
牛角上的男孩2 天前
部署Prometheus、Grafana、Zipkin、Kiali监控度量Istio
grafana·prometheus·istio
福大大架构师每日一题4 天前
文心一言 VS 讯飞星火 VS chatgpt (383)-- 算法导论24.5 3题
prometheus
小安运维日记6 天前
Linux云计算 |【第五阶段】CLOUD-DAY10
linux·运维·云计算·k8s·grafana·prometheus
川石课堂软件测试6 天前
性能测试|linux服务器搭建JMeter+Grafana+Influxdb监控可视化平台
linux·服务器·python·jmeter·机器学习·grafana·1024程序员节
福大大架构师每日一题7 天前
29.2 golang实战项目log2metrics架构说明
架构·prometheus
花开了¥7 天前
prometheus 快速入门
prometheus
無爲謂7 天前
入门 | Kafka数据使用vector消费到Loki中使用grafana展示
分布式·kafka·vector·grafana·loki·日志存储·es限制解决办法