目录
一、环境
二、Node_exporter部署
三、Prometheus部署
四、Grafana部署
五、验证、使用
一、环境
系统使用CentOS7虚拟机。
监控三台服务器:
192.168.114.10 Node1 #部署Prometheus、node_exporter、Grafana
192.168.114.20 Node2 #部署node_exporter
192.168.114.30 Node3 #部署node_exporter
在运维中,Prometheus和Grafana的组合是监控系统性能和资源利用率的理想方案,能够提供全面的数据收集、存储、可视化及告警功能。
关闭防火墙,关闭核心防护。设置时钟同步,配置hosts文件。
时钟同步设置中,我这里是在联网的环境下,如果没有网络,请参考我前面的笔记:无网络下,linux服务器实现时钟同步
[root@Node1 ~]#:systemctl stop firewalld
[root@Node1 ~]#:setenforce 0
[root@Node1 ~]#:ntpdate ntp.aliyun.com
19 Aug 11:29:59 ntpdate[3664]: step time server 203.107.6.88 offset -28799.263186 sec
[root@Node1 ~]#:hwclock --systohc #写入硬件时钟。
#配置hosts文件。
[root@Node1 ~]#:vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.114.10 Node1
192.168.114.20 Node2
192.168.114.30 Node3
二、Node_exporter部署
在部署Prometheus时,通常还需要部署Node_exporter,这是由于Node Exporter是Prometheus生态中用于采集主机系统指标的核心组件,他负责将服务器的底层硬件和操作系统级指标(如CPU、内存、磁盘、网络等)转换为Prometheus可识别的格式,供Prometheus抓取、存储和分析,从而实现对服务器运行状态的实时监控。
可从node-exporter官网下载指定版本的安装包:Node_exporter官网
这里下载的版本:node_exporter-1.8.2.linux-amd64.tar.gz,要监控的服务器都需部署安装该服务。
将安装包拷贝到/opt下,解压到/usr/local/下。安装node_exporter。
[root@Node1 opt]#:ls
node_exporter-1.8.2.linux-amd64.tar.gz
[root@Node1 opt]#:tar xf node_exporter-1.8.2.linux-amd64.tar.gz -C /usr/local/
更改为node_exporter名。赋予777权限,并查看版本为1.8.2。
[root@Node1 opt]#:cd /usr/local/
[root@Node1 local]#:ls
bin etc games include lib lib64 libexec node_exporter-1.8.2.linux-amd64 sbin share src
[root@Node1 local]#:mv node_exporter-1.8.2.linux-amd64/ node_exporter
[root@Node1 local]#:chmod 777 -R node_exporter/
[root@Node1 local]#:ls node_exporter/
LICENSE node_exporter NOTICE
[root@Node1 local]#:node_exporter/node_exporter --version
node_exporter, version 1.8.2 (branch: HEAD, revision: f1e0e8360aa60b6cb5e5cc1560bed348fc2c1895)build user: root@03d440803209build date: 20240714-11:53:45go version: go1.22.5platform: linux/amd64tags: unknown
[root@Node1 local]#:
在生产环境中,通常设置systemd管理服务,并设置开机自启。
[root@Node1 local]#:vim /etc/systemd/system/node-exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
[root@Node1 ~]#:
[root@Node1 ~]#:systemctl daemon-reload
[root@Node1 ~]#:systemctl start node-exporter.service
[root@Node1 ~]#:systemctl enable node-exporter.service
Created symlink from /etc/systemd/system/multi-user.target.wants/node-exporter.service to /etc/systemd/system/node-exporter.service.
[root@Node1 ~]#:
三台服务器都需要安装node_exporter服务,配置完成并设置开机自启后查看端口是否启来。端口为9100
在浏览器访问各自服务器ip:端口。能看到该页面即为部署成功。
三、Prometheus部署
官网地址:Prometheus官网
这里下载版本:prometheus-2.53.2.linux-amd64.tar.gz,将该安装包放在/opt下,并解压到/usr/local/下。
[root@Node1 opt]#:ls
node_exporter-1.8.2.linux-amd64.tar.gz prometheus-2.53.2.linux-amd64.tar.gz
[root@Node1 opt]#:tar xf prometheus-2.53.2.linux-amd64.tar.gz -C /usr/local/
进入/usr/local/下改名为prometheus,并赋予777权限。
root@Node1 opt]#:cd /usr/local/
[root@Node1 local]#:ls
bin etc games include lib lib64 libexec node_exporter prometheus-2.53.2.linux-amd64 sbin share src
[root@Node1 local]#:mv prometheus-2.53.2.linux-amd64/ prometheus
[root@Node1 local]#:chmod 777 -R prometheus
进入prometheus家目录下,修改主要配置文件prometheus.yml文件,指定任务标签和监控ip,要监控那些服务器。
[root@Node1 local]#:cd prometheus/
[root@Node1 prometheus]#:ls
console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool
[root@Node1 prometheus]#:vim prometheus.yml
......
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["192.168.114.10:9090"]- job_name: "Grafana"static_configs:- targets: ['192.168.114.10:9100','192.168.114.20:9100','192.168.114.30:9100'] #node exporter地址
[root@Node1 prometheus]#:
#检测yml配置文件。
[root@Node1 prometheus]#:./promtool check config prometheus.yml
Checking prometheus.ymlSUCCESS: prometheus.yml is valid prometheus config file syntax[root@Node1 prometheus]#:
prometheus同理也设置systemd管理,并开机自启。
[root@Node1 prometheus]#:vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/usr/local/prometheus/
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.enable-lifecycle
[Install]
WantedBy=multi-user.target
[root@Node1 prometheus]#:
[root@Node1 prometheus]#:systemctl daemon-reload
[root@Node1 prometheus]#:systemctl start prometheus.service
[root@Node1 prometheus]#:systemctl enable prometheus.service
Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus.service to /etc/systemd/system/prometheus.service.
[root@Node1 prometheus]#:
查看端口,并访问web页面。
[root@Node1 prometheus]#:ss -natp | grep 9090
ESTAB 0 0 192.168.114.10:59894 192.168.114.10:9090 users:(("prometheus",pid=4855,fd=11))
LISTEN 0 128 [::]:9090 [::]:* users:(("prometheus",pid=4855,fd=7))
ESTAB 0 0 [::ffff:192.168.114.10]:9090 [::ffff:192.168.114.10]:59894 users:(("prometheus",pid=4855,fd=12))
访问到这个页面表示部署成功。
在搜索框中输入PromQL语句,获取监控曲线。点击Graph可查看曲线。
node_load5:系统在过去5分钟的平均负载。这个指标有助于了解系统的整体忙碌程序和性能表现。
node_disk_info{job="Grafana",instance="192.168.114.10:9100"}
用于表示磁盘的信息,具体的指标因Node Exporter的版本和配置而已,一般来说,可能包含磁盘型号、大小、分区等信息。
node_cpu_seconds_total{job="Grafana",instance="192.168.114.10:9100"}
表示cpu在各个状态(如用户态、系统态、空闲态等)下的消耗的总时间。这个指标是累计的,会随着节点的CPU使用情况而不断增长。
go_memstats_heap_idle_bytes{job="Grafana",instance="192.168.114.10:9100"}
表示GO程序堆内存中空闲的字节数,这个指标主要用于监控GO程序的内存使用情况。
四、Grafana部署
Grafana官网:Grafana官网
为什么需要Grafana:有了Prometheus监控还需要Grafana,两者定位不同,功能互补,Prometheus专注于高效的数据采集、存储和查询,而Grafana专注于数据可视化、交互分析和多数据源整合。
数据展示与交互:Prometheus的原生界面:提供基础的查询功能(通过PromQL执行临时查询)。支持简单的图表展示(如折线图、表格),但缺乏自定义能力。无法创建复杂的仪表盘或动态交互界面。
Grafana的优势:
丰富的可视化组件:支持折线图、柱状图、热力图、仪表盘、表格等十种图表类型。
动态交互:支持缩放、下钻、联动
自定义仪表盘:可灵活组合多个图表,创建针对不同场景的监控大屏(如系统性能、业务指标)
多数据源整合:
Prometheus是Grafana的数据源之一
结论:
Prometheus是监控系统的大脑,负责数据采集、存储和计算,而Grafana是监控系统的眼睛,负责将数据转化为直观的图表和仪表盘。两者结合,才能构建一个完整的、可观测的监控系统。
这里下载版本:grafana-enterprise-12.0.2.linux-amd64.tar.gz,复制到/opt下。解压到/usr/local下。
[root@Node1 opt]#:ls
grafana-enterprise-12.0.2.linux-amd64.tar.gz prometheus-2.53.2.linux-amd64.tar.gz
node_exporter-1.8.2.linux-amd64.tar.gz
[root@Node1 opt]#:tar xf grafana-enterprise-12.0.2.linux-amd64.tar.gz -C /usr/local/
修改名称为grafana。进入配置文件夹下。修改配置,默认端口后为3000。
[root@Node1 local]#:mv grafana-v12.0.2/ grafana
[root@Node1 local]#:cd grafana/
[root@Node1 grafana]#:ls
bin Dockerfile LICENSE npm-artifacts plugins-bundled README.md tools
conf docs NOTICE.md packaging public storybook VERSION
[root@Node1 grafana]#:cd conf/
[root@Node1 conf]#:ls
defaults.ini ldap_multiple.toml ldap.toml provisioning sample.ini
[root@Node1 conf]#:vim defaults.ini
......
[server]
# Protocol (http, https, h2, socket)
protocol = http# Minimum TLS version allowed. By default, this value is empty. Accepted values are: TLS1.2, TLS1.3. If nothing is set TLS1.2 would be taken
min_tls_version = ""# The ip address to bind to, empty will bind to all interfaces
http_addr = 0.0.0.0# The http port to use
http_port = 3000
......
#认证模块,默认的用户名和密码:admin/admin
[security]
# disable creation of admin user on first start of grafana
disable_initial_admin_creation = false# default admin user, created on startup
admin_user = admin# default admin password, can be changed before first start of grafana, or in profile settings
admin_password = admin
......
查看版本信息:
[root@Node1 conf]#:cd ../bin/
[root@Node1 bin]#:ls
grafana grafana-cli grafana-server
[root@Node1 bin]#:./grafana --version
grafana version 12.0.2
[root@Node1 bin]#:
配置systemd管理,设置开机自启。
[root@Node1 bin]#:pwd
/usr/local/grafana/bin
[root@Node1 bin]#:ls
grafana grafana-cli grafana-server
[root@Node1 grafana]#:vim /etc/systemd/system/grafana.service
[Unit]
Description=Grafana Server
Documentation=https://grafana.com/docs/
After=network.target[Service]
Restart=on-failure
WorkingDirectory=/usr/local/grafana
ExecStart=/usr/local/grafana/bin/grafana-server --config=/usr/local/grafana/conf/defaults.ini[Install]
WantedBy=multi-user.target
[root@Node1 grafana]#:
[root@Node1 grafana]#:systemctl daemon-reload
[root@Node1 grafana]#:systemctl start grafana.service
[root@Node1 grafana]#:systemctl enable grafana.service
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana.service to /etc/systemd/system/grafana.service.
[root@Node1 grafana]#:
查看端口:
[root@Node1 grafana]#:ss -natp | grep 3000
LISTEN 0 128 [::]:3000 [::]:* users:(("grafana",pid=5646,fd=17))
[root@Node1 grafana]#:
登录web端:输入ip:3000
登陆后,需要修改密码:
登录成功,进入首页。
五、验证、使用
导入prometheus模板,点击右上角+号,点击New dashboard。
添加可视化界面。
配置新的数据源
选择Prometheus。
注意名称和url地址。点击保存。
再次点击右上角+号,点击导入模板。
这里的模板是可视化的模板,具体模板官网也有专门的模板,只需要拿过来模板的id号,加载到我们的模板上即可使用。grafana界面:grafana可视化界面
找到一个想要的界面点击进去,找到id号,拿过来输入到这里,点击load.
选择我们创建的模板prometheus,点击导入。
此时,可视化导入并使用完成。可以看到cpu指标4核,内存4g,
选择要查看的节点。工作任务Grafana,监控最近1小时,刷新时间1分钟。
---end---