【prometheus普罗米修斯】node_exporter/grafana/alertmanager的安装带服务配置

📅 2026/7/3 1:10:39
【prometheus普罗米修斯】node_exporter/grafana/alertmanager的安装带服务配置
普罗米修斯是开源云原生监控 告警工具套件标准三大核心组件Prometheus Server主服务负责定时抓取指标、存储时序数据、提供 PromQL 查询、规则引擎告警 / 记录规则。Exporter采集器各类指标暴露程序部署在被监控端把系统 / 业务指标转换成 Prometheus 可识别的 HTTP metrics 格式如 node-exporter、mysqld-exporter。Alertmanager独立告警组件接收 Prometheus 推送的告警实现告警分组、去重、抑制、静默、分发钉钉 / 邮件 / 企业微信等Prometheus 如何监控多台 Linux 服务器整体流程node-exporter 采集 → Prometheus 配置 Targets 自动发现 / 静态配置 → Grafana 可视化步骤拆解所有 Linux 主机部署 node-exporternode-exporter 专门采集服务器硬件、系统指标CPU、内存、磁盘、网卡、负载、inode 等默认暴露9100端口/metrics接口。Prometheus 添加监控目标两种方式方式 1静态配置小规模机器在prometheus.yml的scrape_configs中写 static_configs填写多台机器 IP:9100 列表。方式 2服务发现多机器 / 集群推荐支持文件发现、consul、kubernetes、DNS 等新增机器只需注册不用改 Prom 配置重启。示例file_sd_configs读取本地 json 文件维护机器列表。重启 / 热加载 Prometheuskill -HUP pid热加载配置无需停机。验证Prometheus UI → Targets 查看所有 Linux 节点状态用 PromQL 查询系统指标如node_cpu_seconds_total。Grafana 导入 Linux 模板展示大盘Prometheus 如何监控 MySQL 数据库采用mysqld_exporter采集 MySQL 指标分完整流程部署 mysqld_exporter安装在 MySQL 服务器或单独机器能连通 MySQL默认端口9104。MySQL 创建专用监控账号给 exporter 最小权限账号用于查询状态、性能指标配置 exporter 连接 MySQL通过环境变量或配置文件指定账号密码DATA_SOURCE_NAMEexporter:xxx(127.0.0.1:3306)/Prometheus 配置抓取任务指标类型采集连接数、慢查询、innodb 缓冲池、锁、主从复制延迟、QPS、磁盘 IO 等。可视化Grafana 导入 MySQL 专用监控面板搭配告警规则监控主从延迟、连接满、慢查询突增等。拓展多实例 MySQL 可通过多 target、标签区分不同库K8s 环境用服务发现自动抓取。Prometheus 常规告警如何配置静默告警如何配置一、常规告警完整配置分两步Prometheus 告警规则 Alertmanager 分发1Prometheus 配置告警规则 rules.yml在 prometheus.yml 加载规则文件编写告警表达式、阈值、标签、注释2Alertmanager 配置接收渠道钉钉 / 企业微信 / 邮件配置路由、接收器实现告警推送二、静默告警Alertmanager silences 静默规则两种使用方式UI 界面创建静默/API 命令创建静默核心作用临时屏蔽某一类告警不删除规则到期自动取消静默适合维护停机、临时扩容场景。关键配置参数匹配标签匹配器matchers精准过滤要静默的告警示例instance192.168.1.10,alertnameHighCpuLoad静默起止时间设置静默时长如维护 2 小时创建人、备注记录维护原因补充告警抑制Inhibit Rules和静默区别静默 Silence手动临时屏蔽人为维护使用抑制 Inhibit自动规则比如机器宕机后自动屏蔽该机器所有磁盘、CPU 衍生告警。Prometheus 是通过怎样的方式与工具来实现监控数据图形化展示的核心方案Prometheus Grafana 组合企业标准方案1. 分工说明Prometheus时序数据库存储指标、提供 PromQL 查询 API自身 UI 仅简易图表不适合大屏运维面板Grafana专业可视化工具作为前端展示层对接 Prometheus 数据源绘图。完整实现流程Grafana 添加 Prometheus 数据源填入 Prometheus 服务地址http://prometheus:9090连通时序数据库。编写 PromQL 绘制图表在 Grafana 面板中输入指标查询语句支持折线图、柱状图、仪表盘、热力图、表格、告警阈值线。导入现成模板Grafana 官网共享大量模板Linux、MySQL、K8s、Nginx输入模板 ID 一键导入无需从零写图表。大屏与告警联动自定义监控大盘、多面板分组图表配置阈值变色和 Alertmanager 告警联动展示故障节点。备选轻量化方案小规模自用Prometheus 自带内置 UI直接访问9090端口输入 PromQL 生成简单临时图表缺点无持久化面板、无法分屏、样式简陋生产环境不用。安装获取安装包https://prometheus.io/download/#下载到windows的安装包下载到Linux里 rz#解压到当前路径 tar xvf prometheus-3.10.0.linux-amd64.tar.gz #移动到/export/server 并且重命名为一个短名字 mv prometheus-3.10.0.linux-amd64 /export/server/prometheuscd /export/server/prometheus wc -l prometheus.yml grep 9090 prometheus.ymlcat prometheus.yml EOF # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global evaluation_interval. rule_files: # - first_rules.yml # - second_rules.yml # A scrape configuration containing exactly one endpoint to scrape: # Here its Prometheus itself. scrape_configs: # The job name is added as a label jobjob_name to any timeseries scraped from this config. - job_name: prometheus # metrics_path defaults to /metrics # scheme defaults to http. static_configs: - targets: [localhost:9090] # The label name is added as a label label_namelabel_value to any timeseries scraped from this config. labels: app: prometheus EOF# 用 cat 命令创建/覆盖 prometheus.yml 配置文件内容从 EOF 开始到下一个 EOF 结束 cat prometheus.yml EOF # 全局配置段 # 全局配置对整个 Prometheus 生效的基础设置 global: # 数据采集间隔每 15 秒去目标机器拉取一次监控指标 scrape_interval: 15s # 规则评估间隔每 15 秒检查一次告警规则/记录规则 evaluation_interval: 15s # 采集超时时间未手动配置使用默认值 10 秒 # 告警管理器配置 # 告警配置关联 Prometheus 与 AlertManager告警通知组件 alerting: alertmanagers: - static_configs: - targets: # 告警管理器地址当前已注释未启用告警通知 # - alertmanager:9093 # 规则文件配置 # 规则文件加载告警规则、聚合指标规则的配置文件列表 rule_files: # 自定义规则文件1已注释未启用 # - first_rules.yml # 自定义规则文件2已注释未启用 # - second_rules.yml # 监控采集任务配置 # 采集任务定义 Prometheus 要监控哪些服务、怎么采集 scrape_configs: # 任务名称任务名会自动变成标签 jobprometheus - job_name: prometheus # 指标采集路径默认 /metrics已省略不写 # metrics_path defaults to /metrics # 访问协议默认 http已省略不写 # scheme defaults to http. # 静态配置直接写死监控目标地址不使用服务发现 static_configs: # 监控目标本机 9090 端口即 Prometheus 自己 - targets: [localhost:9090] # 自定义标签给这条监控数据额外打上 appprometheus 标签 labels: app: prometheus EOF启动临时测试启动方式必须在安装路径启动./prometheus --config.fileprometheus.yml关一下防火墙管理selinuxsed -i -r s/SELINUX[ep].*/SELINUXdisabled/g /etc/selinux/config # sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config /dev/null setenforce 0 systemctl stop firewalld /dev/null systemctl disable firewalld /dev/null iptables -F# 查看9090端口监听无输出进程没起来 ss -tlnp | grep 9090Prometheus Web 界面里看看 192.168.1039090/query注意后台这里不能退出这个是实时的进来之后是这样的配置服务# 创建用户组和用户 groupadd prometheus useradd -r -g prometheus -s /bin/false prometheus chown -R prometheus:prometheus /export/server/prometheus # 或者使用精简命令 useradd -r -s /bin/false prometheus chown -R prometheus:prometheus /export/server/prometheus # 添加 service 文件 cat /etc/systemd/system/prometheus.service EOF [Unit] DescriptionPrometheus Server Documentationhttps://prometheus.io/docs/introduction/overview/ Afternetwork-online.target [Service] Userprometheus Groupprometheus Restarton-failure ExecStart/export/server/prometheus/prometheus \ --config.file/export/server/prometheus/prometheus.yml \ --storage.tsdb.path/export/server/prometheus/data \ --storage.tsdb.retention.time7d \ --web.enable-lifecycle \ --web.enable-admin-api [Install] WantedBymulti-user.target EOF # 启动 systemctl daemon-reload systemctl restart prometheus systemctl enable prometheus systemctl status prometheus详解# 1. 创建专用用户和用户组 # 创建一个名叫 prometheus 的用户组用于权限分组管理 groupadd prometheus # 创建一个 系统专用用户 prometheus # -r系统用户不用于登录 # -g prometheus归到 prometheus 组 # -s /bin/false禁止登录服务器安全加固 useradd -r -g prometheus -s /bin/false prometheus # 把 /usr/local/prometheus 目录的所有者、所属组 改成 prometheus # 让 Prometheus 进程有权限读写自己的目录、数据文件 chown -R prometheus:prometheus /usr/local/prometheus # 2. 创建 systemd 服务文件 # 用 cat 命令创建 prometheus.service 服务文件让系统能管理 Prometheus cat /etc/systemd/system/prometheus.service EOF # 服务描述段 [Unit] # 服务名称描述 DescriptionPrometheus Server # 官方文档地址 Documentationhttps://prometheus.io/docs/introduction/overview/ # 启动顺序等网络准备好再启动 Prometheus Afternetwork-online.target # 服务运行参数 [Service] # 以 prometheus 用户运行 Userprometheus # 以 prometheus 用户组运行 Groupprometheus # 服务异常崩溃时自动重启 Restarton-failure # 核心启动 Prometheus 的命令 ExecStart/usr/local/prometheus/prometheus \ # 指定配置文件路径 --config.file/usr/local/prometheus/prometheus.yml \ # 指定时序数据存储目录 --storage.tsdb.path/usr/local/prometheus/data \ # 数据保留时间只保留 7 天超过自动删除 --storage.tsdb.retention.time7d \ # 开启热重载功能改配置不用停服务 --web.enable-lifecycle \ # 开启管理 API用于清理数据、调试 --web.enable-admin-api # 系统启动级别 [Install] # 让服务在系统多用户模式下自动启动开机自启 WantedBymulti-user.target EOF # 3. 加载服务并启动 Prometheus # 重新加载 systemd 配置让系统识别新添加的服务文件 systemctl daemon-reload # 重启 Prometheus 服务第一次执行启动 systemctl restart prometheus # 设置开机自启服务器重启后自动跑 Prometheus systemctl enable prometheus # 查看 Prometheus 运行状态看是否成功启动、有无报错 systemctl status prometheusweb端up指标含义up是 Prometheus 内置健康指标用来判断监控目标是否能正常拉取指标数值 1目标存活采集正常数值 0目标失联采集失败查询一分钟的数据未来配置的告警规则显示在这里采集指标健康度服务器监控数据采集node_exporternode_exporter是 Prometheus 官方配套的服务器硬件 操作系统指标采集器专门抓取 Linux 系统底层监控数据部署在每一台需要监控的 Linux 主机上对外暴露/metrics接口供 Prometheus 定时拉取。安装# 下载 Node Exporter 二进制包用于采集 Linux 服务器的硬件/系统监控指标 curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.10.2/node_exporter-1.10.2.linux-amd64.tar.gz 或者 #国内镜像下载地址 curl -L0 https://mirror.ghproxy.com/https://github.com/prometheus/node_exporter/releases/download/v1.10.2/node_exporter-1.10.2.linux-amd64.tar.gz 或者 # 拖动本地压缩包到Linux服务器 node_exporter-1.10.2.linux-amd64.tar.gz解压# 1. 解压 Node Exporter 压缩包 # x解压 v显示过程 f指定文件 tar xvf node_exporter-1.10.2.linux-amd64.tar.gz # 2. 进入解压后的目录 cd node_exporter-1.10.2.linux-amd64/ # 3. 把 node_exporter 可执行文件 移动到系统命令目录 # 这样在任何目录都能直接运行 node_exporter mv node_exporter /usr/local/bin # 4. 查看 node_exporter 命令所在路径 # 验证是否安装成功输出 /usr/local/bin/node_exporter 就是成功 which node_exporter # 5. 后台启动 Node Exporter # nohup 让程序脱离终端关闭窗口也不会停 # 后台运行 nohup node_exporter # 6. 查看 Node Exporter 是否在运行 # ps aux 列出所有进程 # grep node_exporter 过滤出这个程序 ps aux|grep node_exporter # 7. 查看 node_exporter 占用的端口 # 能看到 9100 端口正在被监听 netstat -pantul|grep node_exporter # 8. 直接用端口号 9100 检查监听状态 # Node Exporter 默认端口 9100 netstat -pantul|grep 9100查看 node_exporter 采集的内容打开 http://IP:9100点击 metricshttp://192.168.88.103:9100/http://192.168.88.103:9100/metrics采集 node_exporter它会自动采集操作系统几乎所有核心资源数据覆盖运维最关心的监控项硬件资源类CPU总使用率、各核心负载、空闲率、iowait、中断、上下文切换内存总内存、可用内存、缓存、缓冲区、Swap 交换分区使用量磁盘磁盘读写 IO、IO 等待、磁盘分区使用率、inode 剩余、磁盘吞吐量网络网卡收发流量、丢包率、错误包、TCP 连接数ESTABLISHED/TIME_WAIT 等系统状态类系统负载1/5/15 分钟平均负载、运行时长文件句柄、进程总数、僵尸进程系统内核版本、主机名、操作系统发行版对应你之前 Grafana 用到的node_uname_info挂载点、硬件温度、RAID 磁盘状态等硬件信息find / -name prometheus.yml /export/server/prometheus/prometheus.yml.yml是配置文件只能读 / 改不能执行prometheus/promtool/node_exporter是二进制程序才可以./xxx执vim /export/server/prometheus/prometheus.yml在最下面追加# node_exporter - job_name: node static_configs: - targets: [192.168.88.101:9100,192.168.88.102:9100] labels: env: test看一下配置文件有没有语法错误返回sucess就是ok/export/server/prometheus/promtool check config /export/server/prometheus/prometheus.yml查看无注释的纯净配置只看有效配置能瞬间得到 3 个关键信息用于排错现在监控了哪些服务只有prometheus自身、node主机两类任务要采集哪些服务器101、102 两台机器没包含本机 103给指标打了什么分类标签envtest后续 Grafana 筛选、告警过滤全靠标签。grep -v # prometheus.ymlstatic_configs属于静态抓取逻辑是运维清楚机房所有服务器 IP手动把每台部署了 node_exporter 的机器 IP 写死在配置里。Prometheus 的工作逻辑你写什么 IP它就定时去访问IP:9100/metrics它不会自己探测局域网、不会自动发现其他机器如果 101/102 机器关机、没开 node_exporter页面查询up{jobnode}对应实例的值会变成 0代表采集失败。重载配置ps -ef | grep prometheus进程 PID59103父进程 PID1系统托管后台常驻说明服务已经成功后台启动不是临时前台运行。执行用户是prometheus普通用户而非 root权限运行正常。curl -ksvvXPOST http://192.168.88.103:9090/-/reloadHTTP 状态码 200 代表重载请求执行成功Prometheus 已经重新读取并加载prometheus.yml配置文件。或者重启普罗米修斯systemctl restart prometheus systemctl status prometheus验证用浏览器打开http://IP:9090/targetshttp://192.168.88.103:9090/targets查看添加节点# 把本机 /usr/local/bin 下的 node_exporter 二进制文件 # 远程拷贝到 192.168.88.101 机器的 /usr/local/bin 目录 scp /usr/local/bin/node_exporter 192.168.88.101:/usr/local/bin/ # 同理拷贝到第二台被监控节点 192.168.88.102 scp /usr/local/bin/node_exporter 192.168.88.102:/usr/local/bin/被监控的地方执行nohup node_exporter 页面再刷新一下防火墙和SELinuxsed -i -r s/SELINUX[ep].*/SELINUXdisabled/g /etc/selinux/config # sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config /dev/null setenforce 0 systemctl stop firewalld /dev/null systemctl disable firewalld /dev/null iptables -FGrafana一、基础介绍访问地址http://192.168.88.100:3000/3000 是 Grafana 默认端口它是一套开源监控可视化面板工具专门搭配 Prometheus 使用。和 Prometheus 是什么关系Prometheus负责采集服务器、MySQL 的监控指标存时序数据Grafana负责把 Prometheus 里枯燥的数字做成曲线图、仪表盘、状态仪表盘给人直观看负载。二者是运维监控标准搭档采集存储 (Prometheus) 可视化展示 (Grafana)。Linux服务器 → node_exporter(9100) → Prometheus采集存储(9090) → Grafana(3000)绘图展示下载 Grafana 安装包获取安装包下载链接 https://grafana.com/grafana/download?pggeteditionosswget https://dl.grafana.com/grafana/release/12.4.0/grafana_12.4.0_22325204712_linux_amd64.tar.gz tar -zxvf grafana_12.4.0_22325204712_linux_amd64.tar.gz我有一个包直接rz上传上来解压了groupadd grafana useradd -r -g grafana -s /bin/false grafanamv grafana-12.4.0 /export/server/grafana把官方全套默认配置复制一份生成可修改、程序启动会读取的grafana.inicp /export/server/grafana/conf/defaults.ini /export/server/grafana/conf/grafana.inidefaults.ini模板文件存放所有配置项的完整默认值、注释说明不要直接编辑它升级 Grafana 时会被覆盖Grafana 运行不会读取这个文件。grafana.ini生效配置复制后生成你在这里修改自定义参数Grafana 启动时优先加载grafana.ini里面写的配置会覆盖 defaults.ini 默认值不会随软件升级被覆盖自定义配置永久保留。刚安装完 Grafana 时conf 目录只有defaults.ini没有grafana.ini不复制Grafana 只能用硬编码的内置默认参数无法自定义改端口、改密码、开启匿名登录、对接 Prometheus、邮件告警等都做不了复制出grafana.ini后你可以打开文件注释、修改参数重启 Grafana 即可生效。chown -R grafana:grafana /export/server/grafana配置服务cat /etc/systemd/system/grafana.service EOF [Unit] DescriptionGrafana Server Afternetwork.target [Service] Typesimple Usergrafana Groupgrafana ExecStart/export/server/grafana/bin/grafana server --config/export/server/grafana/conf/grafana.ini --homepath/export/server/grafana Restarton-failure [Install] WantedBymulti-user.target EOF # 启动 systemctl daemon-reload systemctl start grafana systemctl enable grafana systemctl status grafana netstat -pantul|grep grafana# 停止服务 systemctl stop grafana # 重启改完grafana.ini必须执行 systemctl restart grafana # 实时看运行日志 journalctl -u grafana -f查看验证浏览器打开http://IP:3000/http://192.168.88.103:3000/登陆默认账号/密码 admin/admin数据源配置然后滑到最下面Dashboard 开发调整 metric默认 Builder保存之后(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes这个公式 算 内存使用率百分比就是你在 Windows 任务管理器、手机设置里看到的“内存已用 45%”这种数字跑完曲线后右侧Panel options里可以设置单位为百分比数值会带%显示添加磁盘读写情况rate 函数统计最近 1 分钟内真实物理磁盘 每秒磁盘读写操作次数 IOPS(Input/Output Operations Per Second) rate(node_disk_reads_completed_total{device!sr0, device!dm-*}[1m])不关注磁盘只看整体。聚合函数以最近 1 分钟为计算时间窗口基于磁盘累计写完成总次数算出真实物理磁盘每秒写操作次数写 IOPS过滤排除光驱 sr0、LVM 映射盘、loop 循环设备、ram 内存盘只统计真实物理硬盘。 sum(rate(node_disk_writes_completed_total{device!sr0,device!~dm.*|loop.*|ram.*}[1m]))node_disk_writes_completed_total磁盘累计写入完成的次数比如写 1 个文件算 1 次 / 几次看系统统计rate(xxx[1m])算「过去 1 分钟内每秒平均完成的写入次数」把累计数变成每秒的速率sum(xxx)把所有非无用磁盘排除光驱 sr0、虚拟磁盘 dm/loop/ram的写入次数加起来device!sr0...过滤掉光驱、虚拟磁盘这些没用的设备只看真实物理磁盘。监控指标 PromQL 查询磁盘读取速率 rate(node_disk_reads_completed_total{device!sr0, device!dm-*}[1m]) 磁盘 IO 总操作数 rate(node_disk_io_time_seconds_total{device!sr0, device!dm-*}[1m]) 磁盘等待时间 rate(node_disk_io_time_weighted_seconds_total{device!sr0, device!dm-*}[1m]) 磁盘吞吐量写入 rate(node_disk_written_bytes_total{device!sr0, device!dm-*}[1m]) 磁盘吞吐量读取 rate(node_disk_read_bytes_total{device!sr0, device!dm-*}[1m])Dashboard 导入官方 Dashboard 下载地址https://grafana.com/grafana/dashboards/搜索 node、server 等关键词下载完了上传JSON 文件里存了啥就是大盘的 “设计图纸”这个文件里写满了所有监控面板的位置、大小每个面板的 PromQL 查询语句图表样式颜色、单位、图例位置时间范围、数据源绑定等所有配置。Grafana 读这个文件就能 1:1 还原出做好的大盘。忘记 Grafana 登录密码怎么办http://192.168.88.100:3000/login在 Grafana 所在的服务器上执行以下操作systemctl stop grafana /usr/local/grafana/bin/grafana cli --homepath/usr/local/grafana admin reset-admin-password admin666 systemctl start grafanaAlertmanagerAlertmanager 监控的 “报警器 通知员” 会主动报警安装注意在 Prometheus 所在的服务器上安装 Alertmanager# 从 GitHub 官方下载 Alertmanager 0.31.1 版本安装包告警管理器 wget https://github.com/prometheus/alertmanager/releases/download/v0.31.1/alertmanager-0.31.1.linux-amd64.tar.gz # 解压下载好的 Alertmanager 压缩包 tar xvf alertmanager-0.31.1.linux-amd64.tar.gz # 将解压后的文件夹移动到 /usr/local/alertmanager 目录统一安装路径 mv alertmanager-0.31.1.linux-amd64 /export/server/alertmanager # 将整个目录的所有者和组设置为 prometheus 用户保证程序有读写权限 chown -R prometheus:prometheus /export/server/alertmanager配置服务# 添加 service 文件 cat /etc/systemd/system/alertmanager.service EOF [Unit] DescriptionAlertManager Documentationhttps://prometheus.io/docs/alerting/latest/overview/ Afternetwork-online.target [Service] Userprometheus Groupprometheus Restarton-failure ExecStart/export/server/alertmanager/alertmanager \ --config.file/export/server/alertmanager/alertmanager.yml \ --storage.path/export/server/alertmanager/data [Install] WantedBymulti-user.target EOF # 启动 systemctl daemon-reload systemctl start alertmanager systemctl enable alertmanager systemctl status alertmanager netstat -pantul|grep alertmanager9093 (公开端口): 面向用户和外部服务用于访问Web UI和接收Prometheus推送的告警。9094 (私有端口): 仅用于Alertmanager节点之间的数据同步对外部工具不可见。因此用curl或浏览器直接访问9094被拒绝是完全正常的。查看地址http://IP:9093/http://192.168.88.103:9093/