【云原生监控系列第一篇】一文详解Prometheus普罗米修斯监控系统(山前前后各有风景,有风无风都很自由)_普罗米修斯 监控

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

cat /usr/local/prometheus/prometheus.yml | grep -v “^#”
global: #用于prometheus的全局配置,比如采集间隔,抓取超时时间等
scrape_interval: 15s #采集目标主机监控数据的时间间隔,默认为1m
evaluation_interval: 15s #触发告警生成alert的时间间隔,默认是1m

scrape_timeout is set to the global default (10s).

scrape_timeout: 10s #数据采集超时时间,默认10s

alerting: #用于alertmanager实例的配置,支持静态配置和动态服务发现的机制
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093

rule_files: #用于加载告警规则相关的文件路径的配置,可以使用文件名通配机制

- “first_rules.yml”

- “second_rules.yml”

scrape_configs: #用于采集时序数据源的配置

The job name is added as a label job=<job\_name> to any timeseries scraped from this config.

  • job_name: “prometheus” #每个被监控实例的集合用job_name命名,支持静态配置(static_configs)和动态服务发现的机制(*_sd_configs)

    metrics_path defaults to ‘/metrics’

    scheme defaults to ‘http’.

    static_configs: #静态目标配置,固定从某个target拉取数据

    • targets: [“localhost:9090”]

(2)配置系统启动文件,启动 Prometheust



cat > /usr/lib/systemd/system/prometheus.service <<‘EOF’
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus
–config.file=/usr/local/prometheus/prometheus.yml
–storage.tsdb.path=/usr/local/prometheus/data/
–storage.tsdb.retention=15d
–web.enable-lifecycle

ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF


[Unit] #服务单元
Description=Prometheus Server #描述
Documentation=https://prometheus.io
After=network.target #依赖关系

[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus
–config.file=/usr/local/prometheus/prometheus.yml \ #配置文件
–storage.tsdb.path=/usr/local/prometheus/data/ \ #数据目录
–storage.tsdb.retention=15d \ #保存时间
–web.enable-lifecycle #开启热加载

ExecReload=/bin/kill -HUP $MAINPID #重载
Restart=on-failure

[Install]
WantedBy=multi-user.target


![在这里插入图片描述](https://img-blog.csdnimg.cn/40fc9748bc0b4500ba80743b9772269e.png#pic_center)


(3)启动



systemctl start prometheus
systemctl enable prometheus

netstat -natp | grep :9090

浏览器访问:http://192.168.109.138:9090 ,访问到 Prometheus 的 Web UI 界面
点击页面的 Status -> Targets,如看到 Target 状态都为 UP,说明 Prometheus 能正常采集到数据
http://192.168.109.138:9090/metrics ,可以看到 Prometheus 采集到自己的指标数据


![在这里插入图片描述](https://img-blog.csdnimg.cn/f5ffb01c7aa7420cbfbc0cb689dc27e5.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a249ee057aa648ac934cfe0d7dec45ad.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/23995d4d056f492480a582d873364b8c.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7e2e798530c44935a9c36c64beae33d6.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5e9e7e922f4b44dabd1f2a233b3c11c4.png#pic_center)


## 三、部署 Exporters


部署 Node Exporter 监控系统级指标


(1)上传 node\_exporter-1.3.1.linux-amd64.tar.gz 到 /opt 目录中,并解压



cd /opt/
tar xf node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin


![在这里插入图片描述](https://img-blog.csdnimg.cn/e7c95ea5bd3f457386f77aa63ac27c80.png#pic_center)


(2)配置启动文件



cat > /usr/lib/systemd/system/node_exporter.service <<‘EOF’
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter
–collector.ntp
–collector.mountstats
–collector.systemd
–collector.tcpstat

ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF


![在这里插入图片描述](https://img-blog.csdnimg.cn/0aa2b579e96d4a04a7f4bf980fe1769c.png#pic_center)


(3)启动



systemctl start node_exporter
systemctl enable node_exporter

netstat -natp | grep :9100

浏览器访问:http://192.168.109.138:9100/metrics ,可以看到 Node Exporter 采集到的指标数据



> 
> 常用的各指标:
> 
> 
> * node\_cpu\_seconds\_total
> * node\_memory\_MemTotal\_bytes
> * node\_filesystem\_size\_bytes{mount\_point=PATH}
> * node\_system\_unit\_state{name=}
> * node\_vmstat\_pswpin:系统每秒从磁盘读到内存的字节数
> * node\_vmstat\_pswpout:系统每秒钟从内存写到磁盘的字节数
> 
> 
> 更多指标介绍:<https://github.com/prometheus/node_exporter>
> 
> 
> 


![在这里插入图片描述](https://img-blog.csdnimg.cn/283643f4277246dbacb78f339790c136.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ea1a49576c57442a8e53084c5650ac65.png#pic_center)


(4)修改 prometheus 配置文件,加入到 prometheus 监控中



vim /usr/local/prometheus/prometheus.yml
#在尾部增加如下内容

  • job_name: nodes
    metrics_path: “/metrics”
    static_configs:
    • targets:
      • 192.168.109.138:9100
      • 192.168.109.137:9100
      • 192.168.109.136:9100
        labels:
        service: kubernetes

![在这里插入图片描述](https://img-blog.csdnimg.cn/d1cda3823f6a4aedb0a5a59d7fe8527c.png#pic_center)


(5)重新载入配置



curl -X POST http://192.168.109.138:9090/-/reload #热加载
或systemctl reload prometheus
浏览器查看 Prometheus 页面的 Status -> Targets


![在这里插入图片描述](https://img-blog.csdnimg.cn/b1d0c9aa0cae4ce9977fea7288f15568.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1b19650719f844f7963a3c6ee79fcc2e.png#pic_center)


## 四、部署Grafana进行展示


(1)下载和安装



> 
> 下载地址:
> 
> 
> <https://grafana.com/grafana/download>
> 
> 
> <https://mirrors.bfsu.edu.cn/grafana/yum/rpm/>
> 
> 
> 



#使用yum解决依赖关系 我这边直接上传软件包到opt
yum install -y grafana-7.4.0-1.x86_64.rpm

systemctl start grafana-server
systemctl enable grafana-server

netstat -natp | grep :3000

浏览器访问:http://192.168.109.138:3000 ,默认账号和密码为 admin/admin


![在这里插入图片描述](https://img-blog.csdnimg.cn/332dd8dfaa954e328b2ac9b69b54a6a8.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/179bf9bf7fd2447c855bfd9cda902975.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/59da51b420de4e0193a3232bf30859a3.png#pic_center)


(2)配置数据源



Configuration -> Data Sources -> Add data source -> 选择 Prometheus
HTTP -> URL 输入 http://192.168.109.138:9090
点击 Save & Test

点击 上方菜单 Dashboards,Import 所有默认模板
Dashboards -> Manage ,选择 Prometheus 2.0 Stats 或 Prometheus Stats 即可看到 Prometheus job 实例的监控图像


![在这里插入图片描述](https://img-blog.csdnimg.cn/4a2a3949482b4cc1bcaaa405b627503b.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/3899e72250b944ed903506b8c8d67010.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9b2d2260b44b499c9f9b11ed903cdfc3.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7b8a958f2bd340c88754cdd87b7e33d2.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/259b1d294b104ebc803b47d7b1d6d531.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0556b707a202446d8bdc8ba9214e2863.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0579fdb33ff24fee840cf42c2f1b6f51.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/550ca9ce28834b1c8d7c09e2b3a78ad8.png#pic_center)


(3)导入 grafana 监控面板



浏览器访问:https://grafana.com/grafana/dashboards ,在页面中搜索 node exporter ,选择适合的面板,点击 Copy ID 或者 Download JSON

在 grafana 页面中,+ Create -> Import ,输入面板 ID 号或者上传 JSON 文件,点击 Load,即可导入监控面板


![在这里插入图片描述](https://img-blog.csdnimg.cn/cc1f7391ae284c56917a2edb38754072.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0295107f5ca44060b4d2d31cd2d94957.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/bcf6a7a244bc4f0a86c1dc4f6336e567.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/91d0f22277de4a4a9c97b8c245d999cd.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1c329c93543649f49d31279847f69b0a.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9c9192a8c5814f5eabcf995939569c35.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/37ac39125191464183dde326e0b54baa.png#pic_center)


## 五、部署Prometheus服务发现


### 5.1 基于文件的服务发现


基于文件的服务发现是仅仅略优于静态配置的服务发现方式,它不依赖于任何平台或第三方服务,因而也是最为简单和通用的实现方式。


Prometheus Server 会定期从文件中加载 Target 信息,文件可使用 YAML 和 JSON 格式,它含有定义的 Target 列表,以及可选的标签信息。


(1)创建用于服务发现的文件,在文件中配置所需的 target



cd /usr/local/prometheus
mkdir targets

vim targets/node-exporter.yaml

  • targets:
    • 192.168.109.131:9100
    • 192.168.109.132:9100
    • 192.168.109.133:9100
      labels:
      app: node-exporter
      job: node

#修改 prometheus 配置文件,发现 target 的配置,定义在配置文件的 job 之中
vim /usr/local/prometheus/prometheus.yml

scrape_configs:

  • job_name: nodes
    file_sd_configs: #指定使用文件服务发现
    • files: #指定要加载的文件列表
      • targets/node*.yaml #文件加载支持通配符
        refresh_interval: 2m #每隔 2 分钟重新加载一次文件中定义的 Targets,默认为 5m
        systemctl reload prometheus
        浏览器查看 Prometheus 页面的 Status -> Targets


> 
> 前提是该node节点装好node-exporter组件,这个步骤在前面就不展示了,可以使用scp命令从普罗米修斯机子传过去
> 
> 
> 


![在这里插入图片描述](https://img-blog.csdnimg.cn/9f4f100ae6b747939b4984ca460a06d6.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f839dea492204ee7a777212e2b3ebe7b.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7e0b48fb249b43bb8eca91a990311ba3.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/33fa9c0f6d4445fdb18fb8c79a35c5bc.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/649db08618a04187adc016643eb7b65a.png#pic_center)


### 5.2 基于 Consul 的服务发现


Consul 是一款基于 golang 开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。


​ 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。


下载地址:<https://www.consul.io/downloads/>


(1)部署 Consul 服务



cd /opt/
unzip consul_1.9.2_linux_amd64.zip
mv consul /usr/local/bin/

#创建 Consul 服务的数据目录和配置目录
mkdir /var/lib/consul-data
mkdir /etc/consul/

#使用 server 模式启动 Consul 服务
consul agent
-server
-bootstrap
-ui
-data-dir=/var/lib/consul-data
-config-dir=/etc/consul/
-bind=192.168.109.138
-client=0.0.0.0
-node=consul-server01 &> /var/log/consul.log &

#查看 consul 集群成员
consul members


![在这里插入图片描述](https://img-blog.csdnimg.cn/e8b5c4f60f0f4f308080c5f6587e9b5a.png#pic_center)


(2)在 Consul 上注册 Services



#在配置目录中添加文件
vim /etc/consul/nodes.json
{
“services”: [
{
“id”: “node_exporter-node01”,
“name”: “node01”,
“address”: “192.168.109.138”,
“port”: 9100,
“tags”: [“nodes”],
“checks”: [{
“http”: “http://192.168.109.138:9100/metrics”,
“interval”: “5s”
}]
},
{
“id”: “node_exporter-node02”,
“name”: “node02”,
“address”: “192.168.109.134”,
“port”: 9100,
“tags”: [“nodes”],
“checks”: [{
“http”: “http://192.168.109.134:9100/metrics”,
“interval”: “5s”
}]
}
]
}

#让 consul 重新加载配置信息
consul reload

浏览器访问:http://192.168.109.138:8500



> 
> 同样134机子需要配置node-exporter,这边不展示
> 
> 
> 


![在这里插入图片描述](https://img-blog.csdnimg.cn/bac975ab20014a7885e98cbd29e38c32.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/4389bca4ac9f4dcc89f20a8032b8c026.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c206404af7c941f4995df3767eed4662.png#pic_center)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)**
![img](https://img-blog.csdnimg.cn/img_convert/39ac0359ef096f8cbf6fb33a1e08d060.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

ab20014a7885e98cbd29e38c32.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/4389bca4ac9f4dcc89f20a8032b8c026.png#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c206404af7c941f4995df3767eed4662.png#pic_center)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)**
[外链图片转存中...(img-vpQjR0Wy-1713355423435)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值