【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况(完整版)

  • 本示例是通过prometheus的node exporter收集主机的信息,然后在grafana的dashborad进行展示。
  • 本示例使用到的组件均是最新的,下文中会有具体版本说明,linux环境是centos。
  • 本示例分为四个部分,即prometheus、grafana、node exporter的部署和三者集成的监控linux。
  • 本文旨在说明三者如何使用,不涉及各自组件的介绍,如果需要使用到本文的,肯定都有了解。

说明:本示例仅仅是为了展示三者结合使用,故没有考虑集群部署以及实际环境的使用,故除了node exporter外,都部署在server2上,node exporter则是收集四台机器的性能指标。

该文章太长,故分成2个部分
【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况(1)
【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况(2)
【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况(完整版)

一、部署prometheus

1、部署

1)、下载

下载地址:https://prometheus.io/download/
下载版本:prometheus-2.54.0.linux-amd64.tar.gz

2)、解压

tar xf prometheus-2.54.0.linux-amd64.tar.gz -C /usr/local/bigdata

cd /usr/local/bigdata/prometheus-2.54.0.linux-amd64

3)、启动

[alanchan@server2 prometheus-2.54.0.linux-amd64]$ ./prometheus 
ts=2024-08-28T00:44:34.721Z caller=main.go:601 level=info msg="No time or size retention was set so using the default time retention" duration=15d
ts=2024-08-28T00:44:34.721Z caller=main.go:645 level=info msg="Starting Prometheus Server" mode=server version="(version=2.54.0, branch=HEAD, revision=5354e87a70d3eb26b81b601b286d66ff983990f6)"
ts=2024-08-28T00:44:34.721Z caller=main.go:650 level=info build_context="(go=go1.22.6, platform=linux/amd64, user=root@68a9e2472a68, date=20240809-11:36:32, tags=netgo,builtinassets,stringlabels)"
ts=2024-08-28T00:44:34.721Z caller=main.go:651 level=info host_details="(Linux 2.6.32-754.35.1.el6.x86_64 #1 SMP Sat Nov 7 12:42:14 UTC 2020 x86_64 server2 (none))"
ts=2024-08-28T00:44:34.721Z caller=main.go:652 level=info fd_limits="(soft=131072, hard=131072)"
ts=2024-08-28T00:44:34.721Z caller=main.go:653 level=info vm_limits="(soft=unlimited, hard=unlimited)"
ts=2024-08-28T00:44:34.725Z caller=web.go:571 level=info component=web msg="Start listening for connections" address=0.0.0.0:9090
ts=2024-08-28T00:44:34.725Z caller=main.go:1160 level=info msg="Starting TSDB ..."
ts=2024-08-28T00:44:34.727Z caller=tls_config.go:313 level=info component=web msg="Listening on" address=[::]:9090
ts=2024-08-28T00:44:34.727Z caller=tls_config.go:316 level=info component=web msg="TLS is disabled." http2=false address=[::]:9090
ts=2024-08-28T00:44:34.730Z caller=head.go:626 level=info component=tsdb msg="Replaying on-disk memory mappable chunks if any"
ts=2024-08-28T00:44:34.730Z caller=head.go:713 level=info component=tsdb msg="On-disk memory mappable chunks replay completed" duration=10.811µs
ts=2024-08-28T00:44:34.730Z caller=head.go:721 level=info component=tsdb msg="Replaying WAL, this may take a while"
ts=2024-08-28T00:44:34.730Z caller=head.go:793 level=info component=tsdb msg="WAL segment loaded" segment=0 maxSegment=0
ts=2024-08-28T00:44:34.730Z caller=head.go:830 level=info component=tsdb msg="WAL replay completed" checkpoint_replay_duration=49.241µs wal_replay_duration=495.341µs wbl_replay_duration=179ns chunk_snapshot_load_duration=0s mmap_chunk_replay_duration=10.811µs total_replay_duration=587.433µs
ts=2024-08-28T00:44:34.732Z caller=main.go:1181 level=info fs_type=EXT4_SUPER_MAGIC
ts=2024-08-28T00:44:34.732Z caller=main.go:1184 level=info msg="TSDB started"
ts=2024-08-28T00:44:34.732Z caller=main.go:1367 level=info msg="Loading configuration file" filename=prometheus.yml
ts=2024-08-28T00:44:34.733Z caller=main.go:1404 level=info msg="updated GOGC" old=100 new=75
ts=2024-08-28T00:44:34.733Z caller=main.go:1415 level=info msg="Completed loading of configuration file" filename=prometheus.yml totalDuration=797.737µs db_storage=7.507µs remote_storage=14.22µs web_handler=348ns query_engine=4.314µs scrape=328.176µs scrape_sd=31.039µs notify=44.584µs notify_sd=11.801µs rules=4.957µs tracing=21.4µs
ts=2024-08-28T00:44:34.733Z caller=main.go:1145 level=info msg="Server is ready to receive web requests."
ts=2024-08-28T00:44:34.733Z caller=manager.go:164 level=info component="rule manager" msg="Starting rule manager..."

2、验证

1)、验证启动

验证方式可以查看进程也可以通过浏览器进行,本示例介绍的是浏览器,也即通过web UI的方式。
在浏览器输入地址:http://server2:9090/
展示出如下图,则说明部署及启动成功。
在这里插入图片描述
在这里插入图片描述

2)、验证功能

在浏览器中打开prometheus自己服务的指标情况,输入如下链接地址即可。
http://server2:9090/metrics
在这里插入图片描述
也可以在启动的页面中查询指标对应的值,具体示例如下图。
在这里插入图片描述
到此默认的prometheus已经完成了部署,其默认是监控本机的系统的。

二、部署grafana

1、部署

1)、下载

下载地址:https://grafana.com/grafana/dashboards/?search=influx&page=6
下载版本:https://dl.grafana.com/oss/release/grafana-11.1.4.linux-amd64.tar.gz

2)、解压

tar -zxvf grafana-11.1.4.linux-amd64.tar.gz
cd /usr/local/bigdata/grafana-v11.1.4/bin

3)、启动

启动命令可以是下面2种。

grafana-server start
或,推荐如下
grafana server start

[alanchan@server2 bin]$ grafana-server status
Deprecation warning: The standalone 'grafana-server' program is deprecated and will be removed in the future. Please update all uses of 'grafana-server' to 'grafana server'
INFO [08-28|00:55:36] Starting Grafana                         logger=settings version=11.1.4 commit=2355de00c61fdd6609a67f35ab506fae87f09a84 branch=HEAD compiled=2024-08-28T00:55:36Z
INFO [08-28|00:55:36] Config loaded from                       logger=settings file=/usr/local/bigdata/grafana-v11.1.4/conf/defaults.ini
INFO [08-28|00:55:36] Target                                   logger=settings target=[all]
INFO [08-28|00:55:36] Path Home                                logger=settings path=/usr/local/bigdata/grafana-v11.1.4
INFO [08-28|00:55:36] Path Data                                logger=settings path=/usr/local/bigdata/grafana-v11.1.4/data
INFO [08-28|00:55:36] Path Logs                                logger=settings path=/usr/local/bigdata/grafana-v11.1.4/data/log
INFO [08-28|00:55:36] Path Plugins                             logger=settings path=/usr/local/bigdata/grafana-v11.1.4/data/plugins
INFO [08-28|00:55:36] Path Provisioning                        logger=settings path=/usr/local/bigdata/grafana-v11.1.4/conf/provisioning
INFO [08-28|00:55:36] App mode production                      logger=settings

2、验证

验证方式可以查看进程也可以通过浏览器进行,本示例介绍的是浏览器,也即通过web UI的方式。
在浏览器输入地址:http://server2:3000/login
展示出如下图,则说明部署及启动成功。

默认密码admin/admin,修改后admin/xxxxxx
在这里插入图片描述
登录进去后,如下图所示。
在这里插入图片描述
以上,则完成了grafana的部署。

三、部署node exporter

本示例仅以server2上的部署为示例进行说明,实际上本示例会部署在server1到server4上4台机器。

1、部署

1)、下载

在prometheus官网下载node_exporter-1.8.2.linux-amd64.tar.gz

2)、解压

tar xf node_exporter-1.8.2.linux-amd64.tar.gz -C /usr/local/bigdata

3)、启动

[alanchan@server2 node_exporter-1.8.2.linux-amd64]$ pwd
/usr/local/bigdata/node_exporter-1.8.2.linux-amd64
[alanchan@server2 node_exporter-1.8.2.linux-amd64]$ ll
total 20040
-rw-r--r-- 1 alanchan root    11357 Jul 14 11:57 LICENSE
-rwxr-xr-x 1 alanchan root 20500541 Jul 14 11:54 node_exporter
-rw-r--r-- 1 alanchan root      463 Jul 14 11:57 NOTICE
[alanchan@server2 node_exporter-1.8.2.linux-amd64]$ ./node_exporter 
ts=2024-09-02T01:22:36.497Z caller=node_exporter.go:193 level=info msg="Starting node_exporter" version="(version=1.8.2, branch=HEAD, revision=f1e0e8360aa60b6cb5e5cc1560bed348fc2c1895)"
ts=2024-09-02T01:22:36.498Z caller=node_exporter.go:194 level=info msg="Build context" build_context="(go=go1.22.5, platform=linux/amd64, user=root@03d440803209, date=20240714-11:53:45, tags=unknown)"
ts=2024-09-02T01:22:36.498Z caller=diskstats_common.go:111 level=info collector=diskstats msg="Parsed flag --collector.diskstats.device-exclude" flag=^(z?ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\d+n\d+p)\d+$
ts=2024-09-02T01:22:36.499Z caller=diskstats_linux.go:265 level=error collector=diskstats msg="Failed to open directory, disabling udev device properties" path=/run/udev/data
ts=2024-09-02T01:22:36.499Z caller=filesystem_common.go:111 level=info collector=filesystem msg="Parsed flag --collector.filesystem.mount-points-exclude" flag=^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+|var/lib/containers/storage/.+)($|/)
ts=2024-09-02T01:22:36.499Z caller=filesystem_common.go:113 level=info collector=filesystem msg="Parsed flag --collector.filesystem.fs-types-exclude" flag=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:111 level=info msg="Enabled collectors"
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=arp
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=bcache
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=bonding
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=btrfs
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=conntrack
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=cpu
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=cpufreq
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=diskstats
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=dmi
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=edac
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=entropy
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=fibrechannel
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=filefd
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=filesystem
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=hwmon
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=infiniband
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=ipvs
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=loadavg
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=mdadm
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=meminfo
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=netclass
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=netdev
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=netstat
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=nfs
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=nfsd
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=nvme
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=os
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=powersupplyclass
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=pressure
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=rapl
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=schedstat
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=selinux
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=sockstat
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=softnet
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=stat
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=tapestats
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=textfile
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=thermal_zone
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=time
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=timex
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=udp_queues
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=uname
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=vmstat
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=watchdog
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=xfs
ts=2024-09-02T01:22:36.500Z caller=node_exporter.go:118 level=info collector=zfs
ts=2024-09-02T01:22:36.501Z caller=tls_config.go:313 level=info msg="Listening on" address=[::]:9100
ts=2024-09-02T01:22:36.501Z caller=tls_config.go:316 level=info msg="TLS is disabled." http2=false address=[::]:9100

2、验证

验证方式可以查看进程也可以通过浏览器进行,本示例介绍的是浏览器,也即通过web UI的方式。
在浏览器输入地址:http://server2:9100/metrics
展示出如下图,则说明部署及启动成功。
在这里插入图片描述
以上,则完成了node exporter的部署、启动及验证。

四、集成监控linux运行情况

本节说明的是如何通过grafana 的dashboard展示node exporter收集的指标数据,收集的是server1到server4的4台机器。

1、添加grafana数据源

要在grafana监控任何应用的运行情况,第一步都是先建立数据源,根据grafana内置的数据源进行配置,本示例使用的是prometheus数据源。
在grafana的 web UI链接:http://server2:3000/connections/add-new-connection

1)、打开Add new connection

选择Prometheus数据源类型
在这里插入图片描述
添加Prometheus的配置
在这里插入图片描述
其他信息均默认(其他的配置信息基于实际的环境进行对应的修改,如果需要),点击“save & test”按钮,出现如下红框内提示,则表示成功。
在这里插入图片描述

2)、在添加数据源时导入dashboard

在添加数据源的页面,也可以选择dashboard选项卡,添加默认的dashboard,如下图所示。
在这里插入图片描述
添加完成后,如下图所示。
在这里插入图片描述
添加完成后,也可以在下面页面中点击查看添加的dashboard
在这里插入图片描述
例如查看Prometheus 2.0 Stats 对应的dashboard。
在这里插入图片描述
以上就完成了在grafana添加数据源。

2、添加grafana的dashboard

1)、选择新建dashboard方式

在grafana的web ui页面中选择dashborad的菜单栏,如下图所示。
在这里插入图片描述
上图按钮提供三个功能,即创建目录、新建dashboard和导入dashboard。新建目录就是将不同的dashboard归类,新建dashboard页面如下图所示。下图中的import dashboard与该按钮下的import是一个功能。
在这里插入图片描述
提供三种功能,即自己创建可视化dashboard、导入panel和导入dashboard。本示例介绍的是导入dashboard。

2)、导入dashboard

导入dashboard需要以下几步:

  • 1、在链接中选择需要的模板
  • 2、选择导入模板的方式,本示例选择复制模板ID方式
  • 3、加载模板ID后进行相应的配置
  • 4、配置完成后,进行模板最后的Load

下面就按照上述的步骤进行操作示例。

点击import a dashboard按钮,进入下面页面。
在这里插入图片描述
在上图中第一个红色框内的链接(https://grafana.com/grafana/dashboards/)提供开源模板,供使用者自行选择需要的内容,本示例选择的是“Linux主机详情”,ID是12633。可以选择复制ID或自己下载json,在上图中上传json。本示例是复制ID操作方式。
在这里插入图片描述
接下来填写好对应的模板ID,如下图所示
在这里插入图片描述
在上图中点击load按钮,进入下面图示。
在这里插入图片描述
由于作者已经添加过了该模板,所以会出现下面重复,分别填写对应的内容即可,比如dashboard的名称、对应的目录和选择对应的数据源,如果没有重复的模板不会出现让重新改变uid,最后导入即可。如下图所示。
在这里插入图片描述

3、查看添加的dashboard

在web UI的界面点击dashboard链接菜单,选择刚才添加的模板,展示结果如下图所示。
在这里插入图片描述
注:该示例展示的模板,作者有部分改动,具体以你的环境为准。你的环境添加完后的可能是下面的界面展示结果。
在这里插入图片描述

4、添加prometheus指标数据

本文的第一部分部署prometheus时,一切都是默认的配置,并没有修改任何配置,所以按照上述集成的顺序来做的话,显示的结果就是上图的内容。如果通过prometheus收集数据的话,则需要进行相应的配置。

本示例仅仅是集成grafana的示例性说明,所以仅仅修改需要的基本配置,其他如果和本示例无关,则不再说明。

1)、修改prometheus配置

增加需要收集指标的机器配置,修改完成后重启prometheus服务。操作过程如下。

[alanchan@server2 prometheus-2.54.0.linux-amd64]$ pwd
/usr/local/bigdata/prometheus-2.54.0.linux-amd64

[alanchan@server2 prometheus-2.54.0.linux-amd64]$ cat prometheus.yml 
# 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 it's Prometheus itself.
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: ["server2:9090"]
  - job_name: "node_10.41"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["server1:9100"]
  - job_name: "node_10.42"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["server2:9100"]
  - job_name: "node_10.43"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["server3:9100"]
  - job_name: "node_10.44"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["server4:9100"][alanchan@server2 prometheus-2.54.0.linux-amd64]$ 

[alanchan@server2 prometheus-2.54.0.linux-amd64]$ ./prometheus

2)、部署及启动node exporter

分别在机器server1、server3、server4上按照在server2上部署node exporter方式进行部署,不再赘述。

3)、验证prometheus

重启prometheus后,选择其对应的target,可以看到如下页面,则表示成功。
在这里插入图片描述

5、验证dashboard

都正常运行后的页面如下图所示,可以看到 我们配置的prometheus的几个机器的指标收集情况,选择对应的IP即可,参考如下图所示。
在这里插入图片描述
在这里插入图片描述
说明:如果你添加完后,没有显示数据,可能是设置的获取数据的区间不对,也可能的是安装的模板不能取得数据(可以通过数据探索或修改模板的源文件进行调试)。
以上,就完成了Prometheus与Grafana的集成工作,同时可以监控Linux的机器运行情况。

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一瓢一瓢的饮 alanchanchn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值