Prometheus概述以及安装(下)

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: Prometheus概述以及安装(下)

三、部署node_exporter与普罗米修斯集成



在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。


从上面的描述中可以看出Exporter可以是一个相对开放的概念,其可以是一个独立运行的程序独立于监控目标以外,也可以是直接内置在监控目标中。只要能够向Prometheus提供标准格式的监控样本数据即可。


这里为了能够采集到主机的运行指标如CPU, 内存,磁盘等信息。我们可以使用Node Exporter。


(1)实验环境



系统 主机名 ip 实验软件
Centos7.4 prometheus 192.168.100.202 桥接网卡 prometheus-2.16.0.linux-amd64.tar.gz influxdb-1.7.8.x86_64.rpm
Centos7.4 node 192.168.100.203 node_exporter-0.18.1.linux-amd64.tar.gz


(2)实验步骤


-安装exporter节点


******(1)这里继续上面的步骤,上面已经安装普罗米修斯了,所以这里直接部署节点即可,先做节点的基础配置
[root@Centos7 ~]# hostnamectl set-hostname node
[root@Centos7 ~]# su
[root@node ~]# systemctl stop firewalld
[root@node ~]# setenforce 0
setenforce: SELinux is disabled
[root@node ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
mount: /dev/sr0 已经挂载或 /mnt 忙
       /dev/sr0 已经挂载到 /mnt 上
******(2)上传软件包安装exporter
[root@node ~]# ll
总用量 7900
-rw-------. 1 root root    1264 1月  12 18:27 anaconda-ks.cfg
-rw-r--r--  1 root root 8083296 7月  12 11:48 node_exporter-0.18.1.linux-amd64.tar.gz
[root@node ~]# tar xf node_exporter-0.18.1.linux-amd64.tar.gz 
[root@node ~]# mv node_exporter-0.18.1.linux-amd64 /usr/local/exporter
******(3)启动exporter
[root@node exporter]# ./node_exporter  #在前台启动exporter
。。。。。。
使用Ctrl+C退出
#复制一个node节点终端,进行测试
[root@node ~]# curl 127.0.0.1:9100/metrics   
#使用这个命令可以看到node_exporter节点暴露出来的数据,这是查看本地的
******(3)编写启动脚本
[root@node exporter]# cd /usr/lib/systemd/system
[root@node system]# vim node_exporter.service   #写入
[Unit]
Description=node_exporter
After=network.target
[Service]
User=prometheus
Group=prometheus
ExecStart=/usr/local/exporter/node_exporter --web.listen-address=:20001 --collector.systemd --collector.systemd.unit-whitelist=(sshd|nginx).service --collector.processes --collector.tcpstat
[Install]
WantedBy=multi-user.target
#保存退出
[root@node system]# systemctl daemon-reload  #重载系统服务
[root@node system]# useradd prometheus   #因为这里的系统脚本是用普罗米修斯用户启动的,所以需要创建
[root@node system]# systemctl start node_exporter  #启动
[root@node system]# systemctl status node_exporter  #查看状态
● node_exporter.service - node_exporter
   Loaded: loaded (/usr/lib/systemd/system/node_exporter.service; disabled; vendor preset: disabled)
   Active: active (running) since 一 2021-07-12 12:01:03 CST; 8s ago
 Main PID: 1413 (node_exporter)
   CGroup: /system.slice/node_exporter.service
           └─1413 /usr/local/exporter/node_exporter --web.listen-address=:20001 --collector.systemd --collector.systemd.unit-whitelist...
7月 12 12:01:03 node node_exporter[1413]: time="2021-07-12T12:01:03+08:00" level=info msg=" - systemd" source="node_exporter.go:104"
7月 12 12:01:03 node node_exporter[1413]: time="2021-07-12T12:01:03+08:00" level=info msg=" - tcpstat" source="node_exporter.go:104"
7月 12 12:01:03 node node_exporter[1413]: time="2021-07-12T12:01:03+08:00" level=info msg=" - textfile" source="node_exporter.go:104"
7月 12 12:01:03 node node_exporter[1413]: time="2021-07-12T12:01:03+08:00" level=info msg=" - time" source="node_exporter.go:104"
7月 12 12:01:03 node node_exporter[1413]: time="2021-07-12T12:01:03+08:00" level=info msg=" - timex" source="node_exporter.go:104"
7月 12 12:01:03 node node_exporter[1413]: time="2021-07-12T12:01:03+08:00" level=info msg=" - uname" source="node_exporter.go:104"
7月 12 12:01:03 node node_exporter[1413]: time="2021-07-12T12:01:03+08:00" level=info msg=" - vmstat" source="node_exporter.go:104"
7月 12 12:01:03 node node_exporter[1413]: time="2021-07-12T12:01:03+08:00" level=info msg=" - xfs" source="node_exporter.go:104"
7月 12 12:01:03 node node_exporter[1413]: time="2021-07-12T12:01:03+08:00" level=info msg=" - zfs" source="node_exporter.go:104"
7月 12 12:01:03 node node_exporter[1413]: time="2021-07-12T12:01:03+08:00" level=info msg="Listening on :20001" source="node_e...go:170"
Hint: Some lines were ellipsized, use -l to show in full.
[root@node system]# netstat -anpt | grep 20001   #查看监听端口,20001是因为在启动文件中指的就是20001
tcp6       0      0 :::20001                :::*                    LISTEN      1413/node_exporter
[root@node system]# systemctl enable node_exporter
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.

使用浏览器访问测试

677a7822b5334f19a0936bfb21bf36df.png

140c83821bca43c380555298ff324916.png

可以看到node节点的信息

每一个监控指标之前都会有一段类似于如下形式的信息:
1.  # HELP node_cpu Seconds the cpus spent in each mode.
2.  # TYPE node_cpu counter
3.  node_cpu{cpu="cpu0",mode="idle"} 362812.7890625
4.  # HELP node_load1 1m load average.
5.  # TYPE node_load1 gauge
6.  node_load1 3.0703125
其中HELP用于解释当前指标的含义,TYPE则说明当前指标的数据类型。在上面的例子中node_cpu的注释表明当前指标是cpu0上idle进程占用CPU的总时间,CPU占用时间是一个只增不减的度量指标,从类型中也可以看出node_cpu的数据类型是计数器(counter),与该指标的实际含义一致。又例如node_load1该指标反映了当前主机在最近一分钟以内的负载情况,系统的负载情况会随系统资源的使用而变化,因此node_load1反映的是当前状态,数据可能增加也可能减少,从注释中可以看出当前指标类型为仪表盘(gauge),与指标反映的实际含义一致。
除了这些以外,在当前页面中根据物理主机系统的不同,你还可能看到如下监控指标:
• node_boot_time:系统启动时间
• node_cpu:系统CPU使用量
• nodedisk*:磁盘IO
• nodefilesystem*:文件系统用量
• node_load1:系统负载
• nodememeory*:内存使用量
• nodenetwork*:网络带宽
• node_time:当前系统时间
• go_*:node exporter中go相关指标
• process_*:node exporter自身进程相关运行指标

-配置普罗米修斯采集node节点信息

******(1)在普罗米修斯机器上修改主配置文件
[root@prometheus ~]# cd /usr/local/prometheus/
[root@prometheus prometheus]# vim prometheus.yml
。。。。。。
 21 scrape_configs:
 22   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
 23   - job_name: 'prometheus'
 24 
 25     # metrics_path defaults to '/metrics'
 26     # scheme defaults to 'http'.
 27 
 28     static_configs:
 29     - targets: ['localhost:9090']
 30   - job_name: "node"          #增加一段job_name
 31     static_configs:
 32     - targets:
 33       - "192.168.100.203:20001"    #指定node节点的20001端口
 34 remote_write:
 35   - url: "http://localhost:8086/api/v1/prom/write?db=prometheus"
 36 
 37 remote_read:
 38   - url: "http://localhost:8086/api/v1/prom/read?db=prometheus"
#保存退出
[root@prometheus prometheus]# systemctl restart prometheus  #重启服务
[root@prometheus prometheus]# systemctl status prometheus   #查看服务状态
● prometheus.service - prometheus
   Loaded: loaded (/usr/lib/systemd/system/prometheus.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2021-07-12 12:08:54 CST; 10s ago
 Main PID: 1128 (prometheus)
   CGroup: /system.slice/prometheus.service
           └─1128 /usr/local/prometheus/prometheus
7月 12 12:08:55 prometheus prometheus[1128]: level=info ts=2021-07-12T04:08:55.172Z caller=head.go:625 component=tsdb msg="WAL...ment=25
7月 12 12:08:55 prometheus prometheus[1128]: level=info ts=2021-07-12T04:08:55.184Z caller=head.go:625 component=tsdb msg="WAL...ment=25
7月 12 12:08:55 prometheus prometheus[1128]: level=info ts=2021-07-12T04:08:55.184Z caller=head.go:625 component=tsdb msg="WAL...ment=25
7月 12 12:08:55 prometheus prometheus[1128]: level=info ts=2021-07-12T04:08:55.186Z caller=main.go:676 fs_type=XFS_SUPER_MAGIC
7月 12 12:08:55 prometheus prometheus[1128]: level=info ts=2021-07-12T04:08:55.186Z caller=main.go:677 msg="TSDB started"
7月 12 12:08:55 prometheus prometheus[1128]: level=info ts=2021-07-12T04:08:55.186Z caller=main.go:747 msg="Loading configurat...eus.yml
7月 12 12:08:55 prometheus prometheus[1128]: ts=2021-07-12T04:08:55.186Z caller=dedupe.go:112 component=remote level=info remo...=0283ed
7月 12 12:08:55 prometheus prometheus[1128]: ts=2021-07-12T04:08:55.187Z caller=dedupe.go:112 component=remote level=info remo...=0283ed
7月 12 12:08:59 prometheus prometheus[1128]: level=info ts=2021-07-12T04:08:59.241Z caller=main.go:775 msg="Completed loading ...eus.yml
7月 12 12:08:59 prometheus prometheus[1128]: level=info ts=2021-07-12T04:08:59.242Z caller=main.go:630 msg="Server is ready to...uests."
Hint: Some lines were ellipsized, use -l to show in full.
  • 使用浏览器访问普罗米修斯


d24d07ad002c4c72b9e3ec67c13d191e.png


8ef8e0aad0814b248f81543e666e3842.png


UP表示成功获取node节点的监控指标

当前在每一个Job中主要使用了静态配置(static_configs)的方式定义监控目标。除了静态配置每一个Job的采集Instance地址以外,Prometheus还支持与DNS、Consul、E2C、Kubernetes等进行集成实现自动发现Instance实例,并从这些Instance上获取监控数据。


除了通过使用“up”表达式查询当前所有Instance的状态以外,还可以通过Prometheus UI中的Targets页面查看当前所有的监控采集任务,以及各个任务下所有实例的状态:


我们也可以访问http://192.168.100.202:9090/targets直接从Prometheus的UI中查看当前所有的任务以及每个任务对应的实例信息。



1734e00f9ef34d968d0aca0927b50a45.png


四、使用PromQL查询监控数据


  • Prometheus UI是Prometheus内置的一个可视化管理界面,通过Prometheus UI用户能够轻松的了解Prometheus当前的配置,监控任务运行状态等。 通过Graph面板,用户还能直接使用PromQL实时查询监控数据:

e6a5fc43828044a886e220f8ff849853.png


切换到Graph面板,用户可以使用PromQL表达式查询特定监控指标的监控数据。如下所示,查询主机负载变化情况,可以使用关键字node_load1可以查询出Prometheus采集到的主机负载的样本数据,这些样本数据按照时间先后顺序展示,形成了主机负载随时间变化的趋势图表:


87ce00d46bcf47fbb7cc3f991c0cf5ab.png


PromQL是Prometheus自定义的一套强大的数据查询语言,除了使用监控指标作为查询关键字以为,还内置了大量的函数,帮助用户进一步对时序数据进行处理。例如使用rate()函数,可以计算在单位时间内样本数据的变化情况即增长率,因此通过该函数我们可以近似的通过CPU使用时间计算CPU的利用率:


五、普罗米修斯配合Grafana


******(1)在普罗米修斯主机上安装并启动Grafana
[root@prometheus ~]# yum -y install fontconfig freetype* urw-fonts  #安装依赖
。。。。。。
完毕!
[root@prometheus ~]# ll   #上传grafana的rpm包
总用量 163076
-rw-------. 1 root root     1264 1月  12 18:27 anaconda-ks.cfg
-rw-r--r--  1 root root 56363500 7月  12 12:28 grafana-6.1.4-1.x86_64.rpm
-rw-r--r--  1 root root 51010897 7月  10 17:11 influxdb-1.7.8.x86_64.rpm
-rw-r--r--  1 root root 59608515 7月  10 17:01 prometheus-2.16.0.linux-amd64.tar.gz
[root@prometheus ~]# yum -y install grafana-6.1.4-1.x86_64.rpm 
。。。。。。
完毕!
[root@prometheus ~]# systemctl start grafana-server
[root@prometheus ~]# netstat -anpt | grep 3000
tcp6       0      0 :::3000                 :::*                    LISTEN      14992/grafana-serve 
  • (2)在浏览器中打开grafana
  • 用户名:admin 密码:admin


6fcd1244c8b04f83b53cd331c9266132.png

6803b10dcb67486fad4329f641ceedbb.png

image.png

6e27a9dd67564a9194bf0a094f7f3cf3.png

abd04f00d8fa4c648805005e9131b667.png33491ce4ed29490087cb245914a590bf.png


image.png

image.png


在输入1860后会自动跳转的,有一项Unique identifier(uid)那一项如果报错的话,就点击change然后自己随便输入一串字符串就行,不能为空

image.png


在导入后就可以看到数据了,但是发现有几个是报错的,这是因为他默认的查询语句是错的,需要自己改,改了之后就可以了


6ef0668317d74aa6bb93739f73b49587.png

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
目录
相关文章
|
6月前
|
Prometheus 监控 Kubernetes
Prometheus + Grafana安装
Prometheus + Grafana安装
|
6月前
|
Prometheus Cloud Native Java
微服务框架(二十三)Prometheus + Grafana 安装、配置及使用
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文为Prometheus + Grafana 安装、配置及使用 本系列文章中所使用的框架版本为Spring ...
|
6天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
34 2
|
3月前
|
Prometheus 监控 Kubernetes
prometheus学习笔记之简介与安装
prometheus学习笔记之简介与安装
prometheus学习笔记之简介与安装
|
2月前
|
Prometheus 监控 Cloud Native
docker安装prometheus+Granfan并监控容器
【9月更文挑战第14天】本文介绍了在Docker中安装Prometheus与Grafana并监控容器的步骤,包括创建配置文件、运行Prometheus与Grafana容器,以及在Grafana中配置数据源和创建监控仪表盘,展示了如何通过Prometheus抓取数据并利用Grafana展示容器的CPU使用率等关键指标。
|
2月前
|
存储 Prometheus 监控
在Ubuntu系统上安装与配置Prometheus的步骤
通过以上步骤,您应该已经成功在Ubuntu系统上安装并配置了Prometheus。您现在可以开始使用Prometheus收集和分析您的系统和应用程序的指标数据了。
128 1
|
3月前
|
Prometheus 监控 Cloud Native
prometheus学习笔记之Grafana安装与配置
prometheus学习笔记之Grafana安装与配置
|
3月前
|
存储 Prometheus 监控
Prometheus·概述
Prometheus·概述
53 3
|
12月前
|
Prometheus Cloud Native
Mac下安装 Prometheus+Grafana
Mac下安装 Prometheus+Grafana
407 0
|
6月前
|
Prometheus 监控 Cloud Native
Prometheus 安装与配置
Prometheus 安装与配置