【自学,后续整理成文】Prometheus教程

背景

云原生背景下,必须学会使用普罗米修斯监控容器。
虽然zabbix也能监控容器,但实际使用中当容器运行时使用containerd时,zabbix存在一定限制。
普罗米修斯和K8S一样是CNCF基金所管理的项目,二者匹配性绝佳。
先分点记录学习过程,达到一定学习成果后,再统一整理教程。

相关地址

【Prometheus官网】
【Prometheus官方代码项目仓库】
【Grafana官网】

基础知识

  1. 普罗米修斯也是云原生基金会的。
  2. 普鲁米修斯只提供简单的图形化界面,最终需要配合grafana使用。

基本启停操作

首先prometheus和node_exporter都是开箱即用,建议的安装方式是:解压并将可执行文件复制到系统/usr/sbin目录下,即可不添加环境变量,就能全局执行相关命令。

启动node_exporter

问题:使用ansible启动的node_exporter并不是后台运行。
建议解决办法:先用ansible将node_exporter注册成系统服务,后续在用asible service模块启动。
以下是shell远程启动的参考命令,不建议这么做。

ansible -i target.ini all -m shell -a "nohup node_exporter --collector.textfile.directory /var/lib/node_exporter/textfile_collector --collector.systemd --collector.systemd.unit-whitelist=\"(docker|ssh|rsyslog).service\" &"
ansible -i target.ini all -m shell -a "netstat -ano |grep 9100|grep LISTEN"


重启prometheus

方式一:直接kill,再次执行prometheus。
方式二:优雅重启reload
先强制杀死进程,然后启动时新增参数,之后再次重启即可通过POST请求优雅重启,参考下列操作记录

[root@localhost prometheus-2.45.1.linux-amd64]# curl -XPOST http://127.0.0.1:9090/-/reload
Lifecycle API is not enabled.[root@localhost prometheus-2.45.1.linux-amd64]# 
[root@localhost prometheus-2.45.1.linux-amd64]# 
[root@localhost prometheus-2.45.1.linux-amd64]# ps -ef |grep prometheus
root       29719       1  0 Oct07 ?        00:04:43 ./prometheus
root       34679   34502  0 10:39 pts/1    00:00:00 grep --color=auto prometheus
[root@localhost prometheus-2.45.1.linux-amd64]# kill -9 29719
[root@localhost prometheus-2.45.1.linux-amd64]# nohup ./prometheus --web.enable-lifecycle &
[1] 34681
[root@localhost prometheus-2.45.1.linux-amd64]# nohup: ignoring input and appending output to 'nohup.out'

[root@localhost prometheus-2.45.1.linux-amd64]# curl -XPOST http://127.0.0.1:9090/-/reload
[root@localhost prometheus-2.45.1.linux-amd64]# ps -ef |grep prometheus
root       34681   34502  5 10:40 pts/1    00:00:01 ./prometheus --web.enable-lifecycle
root       34693   34502  0 10:40 pts/1    00:00:00 grep --color=auto prometheus

筛选node_exporter监控指标

可在prometheus.yml配置文件中新增筛选字段,将部分指标过滤。
需要进一步思考这么做有什么好处?减少性能浪费、优化计算吗?但node_exporter到底有多费资源呢?几乎没有呀。而且都是server端主动去拉取监控指标数据。
筛选前:监控所有服务器的cpu指标
在这里插入图片描述

筛选后:排除4台K8S服务器的cpu指标
在这里插入图片描述
在这里插入图片描述

从系统指标中计算更直观的监控指标(以CPU使用时间为例)

node_exporter获取的是一堆系统指标,未经计算,比如node_cpu_seconds_total中显示了idle、iowait的使用时间。
但实际上我们更习惯用百分比比率来直观检查idle、iowai、sys等监控指标。因此需要通过promQL计算。
在普罗米修斯最简单的web界面分别输入以下两行内容,并执行,查看二者的区别。

node_cpu_seconds_total
irate(node_cpu_seconds_total{job="K8s"}[5m])

在这里插入图片描述
在这里插入图片描述

avg(irate(node_cpu_seconds_total{job="K8s"}[5m])) by (instance)

在这里插入图片描述
在这里插入图片描述

查看systemd collector的指标

node_systemd_unit_state{name="docker.service",state="active"}
node_systemd_unit_state{name="docker.service"} == 1

查看可用性指标

up{job=“prometheus”,instance=“localhost:9090”}
ip

Grafana集成

之前已经基本了解了prometheus的应用,下一步可以集成grafa了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值