当前位置: 首页 > news >正文

运维监控prometheus+grafana

目录

一、环境

二、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---

http://www.dtcms.com/a/338563.html

相关文章:

  • 深入理解Java中的四类引用:强、软、弱、虚引用
  • 【科研绘图系列】R语言绘制多组火山图
  • 第六天~提取Arxml中CAN Node节点信息Creat_ECU
  • STL库——string(类模拟实现)
  • ETLCloud中的数据转化规则是什么意思?怎么执行
  • QT示例 基于Subdiv2D的Voronoi图实现鼠标点击屏幕碎裂掉落特效
  • Linux中Docker k8s介绍以及应用
  • C++ 默认参数深度解析【C++每日一学】
  • Flutter AlwaysScrollableScrollPhysics详解
  • LIA-X - 一张照片生成任意表情肖像动画视频 精准操控面部动作 支持50系显卡 一键整合包下载
  • RWA加密金融高峰论坛星链品牌全球发布 —— 稳定币与Web3的香港新篇章
  • C# winform FTP功能
  • openldap安装 -添加条目
  • 项目管理.管理理念学习
  • 跟踪不稳定目标:基于外观引导的运动建模实现无人机视频中的鲁棒多目标跟踪
  • 第10章 React应用测试
  • 一、快速掌握python中的序列、集合和字典的用法(数据容器)
  • RxJava 在 Android 即时通讯中的应用:封装、处理与控制
  • 《WASM驱动本地PDF与Excel预览组件的深度实践》
  • 达梦数据库表恢复方法总结
  • 章11:管理网络
  • 网络基础——网络传输基本流程
  • Android Coil 3拦截器Interceptor计算单次请求耗时,Kotlin
  • GPT-4.1旗舰模型:复杂任务的最佳选择及API集成实践
  • 基于prompt的生物信息学:多组学分析的新界面
  • RecSys:粗排模型和精排特征体系
  • 力扣57:插入区间
  • Apache IoTDB:大数据时代时序数据库选型的技术突围与实践指南
  • 【力扣 Hot100】 刷题日记——双指针的经典应用
  • 论文阅读:Prompt Optimization in Large Language Models