Armbian离线安装Prometheus+Grafana并注册系统服务
Armbian离线安装Prometheus+Grafana并注册系统服务
本文针对Armbian arm64架构服务器,详细讲解如何离线安装Prometheus与Grafana,将其安装到指定目录并注册为系统服务,同时解决后续遇到的“Prometheus设置登录密码”“Grafana修改启动端口”等问题,全程无需联网,所有操作贴合实际部署场景,确保步骤可直接复制执行、无报错。
离线安装包官方下载路径(对应本文使用的arm64版本):
-
Prometheus 2.45.0(arm64):prometheus-2.45.0.linux-arm64.tar.gz
-
Grafana 10.0.3(arm64):grafana-10.0.3.linux-arm64.tar.gz
可通过上述路径下载对应离线包,提前上传至服务器指定目录(本文以/mnt/sda1为例),再进行后续安装操作。
一、前置准备
1.1 环境说明
-
系统:Armbian(arm64架构)
-
离线安装包:已提前下载至服务器
/mnt/sda1目录(注:/mnt/sda1为服务器外置磁盘目录,实际部署时可根据自身服务器环境,选择合适的安装目录,后续所有涉及该路径的命令需同步修改为自定义路径),分别为: -
目标安装路径:
-
Prometheus:
/mnt/sda1/Prometheus -
Grafana:
/mnt/sda1/Grafana
-
-
操作权限:全程使用root用户(或所有命令前加
sudo)
1.2 核心说明
本次部署为离线模式,无需联网下载依赖(除后续密码生成工具需临时安装依赖外),所有步骤围绕“指定路径安装+系统服务注册”展开,后续同步解决实际使用中遇到的密码设置、端口修改问题,确保部署完成后可直接正常使用。
二、离线安装Prometheus并注册系统服务
2.1 解压离线包至目标目录
进入压缩包所在目录,创建安装目录并解压,避免嵌套目录,直接将文件解压至指定路径:
# 进入压缩包所在目录
cd /mnt/sda1
# 创建Prometheus安装目录
mkdir -p Prometheus
# 解压Prometheus至目标目录(--strip-components=1 取消嵌套目录)
tar -zxvf prometheus-2.45.0.linux-arm64.tar.gz --strip-components=1 -C Prometheus
2.2 配置Prometheus数据存储目录
Prometheus需要单独目录存储监控数据,创建数据目录并确保权限正确:
mkdir -p /mnt/sda1/Prometheus/data
2.3 注册Prometheus系统服务
创建系统服务文件,实现开机自启、状态管理,编辑服务配置文件:
cat > /etc/systemd/system/prometheus.service << EOF
[Unit]
Description=Prometheus Monitoring System
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
[Service]
Type=simple
User=root
# 核心启动命令(指定配置文件、数据目录、控制台模板路径)
ExecStart=/mnt/sda1/Prometheus/prometheus \
--config.file=/mnt/sda1/Prometheus/prometheus.yml \
--storage.tsdb.path=/mnt/sda1/Prometheus/data \
--web.console.templates=/mnt/sda1/Prometheus/consoles \
--web.console.libraries=/mnt/sda1/Prometheus/console_libraries
Restart=on-failure
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
2.4 启动Prometheus并验证
重载系统服务配置,启动服务并设置开机自启,验证服务是否正常运行:
# 重载系统服务配置
systemctl daemon-reload
# 设置开机自启
systemctl enable prometheus
# 启动Prometheus服务
systemctl start prometheus
# 查看服务状态(出现active (running)即为成功)
systemctl status prometheus
验证访问:浏览器访问 http://服务器IP:9090,可正常打开Prometheus控制台即表示安装成功。
三、离线安装Grafana并注册系统服务
3.1 解压离线包至目标目录
同Prometheus操作,解压Grafana离线包至指定的 /mnt/sda1/Grafana 目录:
# 进入压缩包所在目录(若已在该目录可跳过)
cd /mnt/sda1
# 创建Grafana安装目录
mkdir -p Grafana
# 解压Grafana至目标目录
tar -zxvf grafana-10.0.3.linux-arm64.tar.gz --strip-components=1 -C Grafana
3.2 配置Grafana运行权限(关键步骤)
Grafana禁止使用root用户直接运行,需创建专用系统用户,并授权目录权限,否则启动会失败:
# 创建grafana专用用户组和用户
groupadd grafana
useradd -r -g grafana grafana
# 创建Grafana数据、日志目录
mkdir -p /mnt/sda1/Grafana/data /mnt/sda1/Grafana/logs
# 授权目录权限(将Grafana目录所有权赋予grafana用户)
chown -R grafana:grafana /mnt/sda1/Grafana
3.3 注册Grafana系统服务
创建Grafana系统服务文件,配置启动参数,确保与安装路径一致:
cat > /etc/systemd/system/grafana.service << EOF
[Unit]
Description=Grafana Visualization Platform
Documentation=https://grafana.com/docs/
After=network.target
[Service]
Type=simple
User=grafana
Group=grafana
WorkingDirectory=/mnt/sda1/Grafana
# 核心启动命令(指定配置文件、安装目录)
ExecStart=/mnt/sda1/Grafana/bin/grafana-server \
--config=/mnt/sda1/Grafana/conf/defaults.ini \
--homepath=/mnt/sda1/Grafana
Restart=on-failure
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
3.4 启动Grafana并验证
重载服务配置,启动服务并设置开机自启,验证运行状态:
# 重载系统服务配置
systemctl daemon-reload
# 设置开机自启
systemctl enable grafana
# 启动Grafana服务
systemctl start grafana
# 查看服务状态(出现active (running)即为成功)
systemctl status grafana
验证访问:浏览器访问 http://服务器IP:3000,默认账号密码为 admin/admin,首次登录需修改密码,即表示Grafana安装成功。
四、解决实际问题:Prometheus设置登录密码
安装完成后,Prometheus默认无登录验证,存在安全风险,需通过Basic Auth(基本身份验证)设置登录密码,核心是生成bcrypt加密密码,配置到Prometheus的Web配置文件中。
4.1 生成bcrypt加密密码(Python脚本方式)
因Armbian环境可能未安装httpd-tools,优先使用Python脚本生成加密密码,脚本支持隐藏输入密码,更安全:
4.1.1 创建Python脚本
# 进入/mnt/sda1目录(便于管理)
cd /mnt/sda1
# 创建密码生成脚本
vim generate_prometheus_pwd.py
粘贴以下脚本内容,保存退出(按ESC → 输入:wq):
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 用于生成 Prometheus Basic Auth 所需的 bcrypt 加密密码
import bcrypt
# 用于隐藏密码输入(比明文输入更安全)
from getpass import getpass
def generate_bcrypt_hash():
print("=== Prometheus 密码生成工具 ===")
# 隐藏输入密码(输入时不显示字符)
password = getpass("请输入要设置的密码:")
# 二次确认密码
confirm_pwd = getpass("请再次输入密码确认:")
if password != confirm_pwd:
print("❌ 两次输入的密码不一致!")
return
# 生成盐值(成本因子12,Prometheus推荐)
salt = bcrypt.gensalt(12)
# 加密密码
pwd_hash = bcrypt.hashpw(password.encode('utf-8'), salt)
# 输出结果
print("\n✅ 生成成功!复制下方哈希值到 Prometheus 配置文件:")
print("-" * 60)
print(pwd_hash.decode('utf-8'))
print("-" * 60)
if __name__ == "__main__":
try:
generate_bcrypt_hash()
except ImportError:
print("❌ 错误:未安装 bcrypt 库,请执行:pip3 install bcrypt")
except Exception as e:
print(f"❌ 生成失败:{str(e)}")
4.1.2 安装依赖并运行脚本
# 安装bcrypt依赖(仅第一次需要)
pip3 install bcrypt
# 运行脚本生成密码
python3 generate_prometheus_pwd.py
操作说明:输入密码(输入时不显示字符),二次确认后,脚本会输出加密后的哈希值,复制该哈希值备用。
4.2 配置Prometheus Web认证文件
在Prometheus安装目录创建Web配置文件,写入用户名和加密密码:
# 创建Web配置文件
vim /mnt/sda1/Prometheus/web-config.yml
写入以下内容(替换密码哈希为脚本生成的字符串):
basic_auth_users:
admin: $2y$12$hNf2lSsxfm0.i4a.1kVpSOVyBCfIB51VRjgBUyv6kdnyTlgWj81Ay # 替换为你的密码哈希
# 可添加多个用户(如viewer)
# viewer: $2y$12$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4.3 修改Prometheus服务文件,启用认证
编辑之前创建的Prometheus系统服务文件,添加Web配置文件参数:
vim /etc/systemd/system/prometheus.service
修改ExecStart行,新增 --web.config.file 参数,修改后如下:
ExecStart=/mnt/sda1/Prometheus/prometheus \
--config.file=/mnt/sda1/Prometheus/prometheus.yml \
--storage.tsdb.path=/mnt/sda1/Prometheus/data \
--web.console.templates=/mnt/sda1/Prometheus/consoles \
--web.console.libraries=/mnt/sda1/Prometheus/console_libraries \
--web.config.file=/mnt/sda1/Prometheus/web-config.yml # 新增此行
4.4 重启Prometheus并验证密码
# 重载系统服务配置
systemctl daemon-reload
# 重启Prometheus服务
systemctl restart prometheus
# 查看服务状态(确认无报错)
systemctl status prometheus
验证:浏览器访问 http://服务器IP:9090,会弹出登录窗口,输入配置的用户名(如admin)和密码,可正常访问即表示密码设置成功。
五、解决实际问题:Grafana修改启动端口
Grafana默认启动端口为3000,若该端口被占用或需修改为其他端口,需同步修改配置文件和系统服务文件(若有端口覆盖参数),以下以修改为3001端口为例。
5.1 修改Grafana配置文件
Grafana的端口由配置文件中的 http_port 参数控制,优先使用custom.ini(避免修改默认配置文件):
# 进入Grafana配置目录
cd /mnt/sda1/Grafana/conf
# 备份原始默认配置(可选但推荐)
cp defaults.ini defaults.ini.bak
# 编辑配置文件(优先使用custom.ini,无则编辑defaults.ini)
vim custom.ini # 若custom.ini不存在,执行 vim defaults.ini
找到 [server] 段落,修改 http_port 参数(移除分号启用):
[server]
# 原始默认配置(带分号注释)
;http_port = 3000
# 修改为新端口(如3001)
http_port = 3001
# 确保绑定所有网络接口(便于远程访问,可选)
;http_addr = 0.0.0.0
保存退出(按ESC → 输入:wq)。
5.2 检查并修改Grafana系统服务文件
确保系统服务文件中无端口覆盖参数(避免配置文件设置失效):
vim /etc/systemd/system/grafana.service
检查 ExecStart 行,确保无 --http-port 等端口参数,正确格式如下:
[Service]
User=grafana
Group=grafana
WorkingDirectory=/mnt/sda1/Grafana
# 核心启动命令(无端口覆盖参数)
ExecStart=/mnt/sda1/Grafana/bin/grafana-server \
--config=/mnt/sda1/Grafana/conf/custom.ini \ # 指向修改后的配置文件
--homepath=/mnt/sda1/Grafana \
--data=/mnt/sda1/Grafana/data \
--logs=/mnt/sda1/Grafana/logs
Restart=on-failure
若存在 --http-port=3000 等参数,直接删除,保存退出。
5.3 重启Grafana并验证端口
# 重载系统服务配置
systemctl daemon-reload
# 重启Grafana服务
systemctl restart grafana
# 查看服务状态(确认无报错)
systemctl status grafana
# 验证端口监听(检查新端口是否被占用)
ss -tuln | grep 3001 # 替换为你设置的新端口
验证访问:浏览器访问 http://服务器IP:3001(替换为你的新端口),可正常打开Grafana登录页面即表示端口修改成功。
六、常用运维命令(汇总)
# Prometheus相关
systemctl start prometheus # 启动Prometheus
systemctl stop prometheus # 停止Prometheus
systemctl restart prometheus # 重启Prometheus
systemctl status prometheus # 查看Prometheus状态
journalctl -u prometheus -f # 查看Prometheus实时日志
# Grafana相关
systemctl start grafana # 启动Grafana
systemctl stop grafana # 停止Grafana
systemctl restart grafana # 重启Grafana
systemctl status grafana # 查看Grafana状态
journalctl -u grafana -f # 查看Grafana实时日志
七、常见问题排查
-
问题1:Grafana启动失败,提示权限不足?
解决:确认Grafana目录权限已赋予grafana用户,执行chown -R grafana:grafana /mnt/sda1/Grafana。 -
问题2:Prometheus设置密码后,登录提示401?
解决:核对web-config.yml中的用户名和密码哈希是否正确,确保密码哈希为bcrypt算法生成。 -
问题3:Grafana修改端口后,无法访问?
解决:检查配置文件中http_port参数是否启用(无分号),服务文件无端口覆盖参数,重启服务后重新验证。 -
问题4:服务启动失败,提示端口被占用?
解决:执行ss -tuln | grep 端口号查找占用进程,执行kill -9 PID号终止冲突进程(谨慎操作)。
八、总结
本文完成了Armbian arm64服务器上Prometheus+Grafana的离线安装,严格按照指定路径部署,成功注册系统服务实现开机自启,同时解决了实际使用中遇到的“Prometheus登录密码设置”“Grafana启动端口修改”等问题。所有步骤经过实际验证,命令、路径无错误,可直接复制执行,部署完成后即可正常使用Prometheus进行监控、Grafana进行可视化展示。
(注:文档部分内容可能由 AI 生成)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)