Prometheus技术分享——如何监控宿主机和容器

news/2024/5/18 22:44:15 标签: prometheus, java, 服务器

这一期主要来跟大家聊一下,使用node_exporter工具来暴露主机和因公程序上的指标,利用prometheus来监控宿主机;以及通过通过Cadvisor监控docker容器。

一、部署node_exporter监控宿主机

1 下载软件包

wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz

创建node exporter运行目录

mkdir -p /usr/local/node_exporter
tar -xf node_exporter-1.4.0.linux-amd64.tar.gz
cd node_exporter-1.4.0.linux-amd64 && mv ./* /usr/local/node_exporter
#验证
./node_exporter --version
查看node_exporter配置
./node_expoter –help

#默认运行端口

–web.listen-address=”:9100″

暴露指标的路径

–web.telemetry-path=”/metrics”

#注意:通过配置参数,可以决定启用哪些收集器。

#启动node_exporter,可以指定参数进行覆盖

nohup ./node_exporter –web.listen-address=”:9600″

–web.telemetry-path=”/metrics” &

#查看是否启动完成 ps -ef | grep node_exporter

部署配置textfile收集器
说明: textfile收集器允许我们暴露自定义指标,这些自定义指标可能是批处理或cron作业无法抓取的,或者是没有可用的exporter

原理:收集器通过扫描指定目录中的问津,提取所有格式为prometheus指标的字符串,然后暴露他们以便被prometheus sever抓取

1) 创建收集器目录

mkdir /usr/local/node_exporter/textfile_collector

  1. 创建新指标,注意指标在以.prom结尾的文件内定义

echo ‘metadata{role=”docker”,data_center=”ShangHai”} 2’ >metadata.prom

  1. 启动textfile收集器

textfile收集器不需要配置参数,默认就会被加载,我们在启动node_exporter的时候,指定textfile收集器的目录即可

参数:

collector.textfile.directory

启动

nohup ./node_exporter –web.listen-address=”:9600″ –web.telemetry-path=”/metrics” –collector.textfile.directory=”/usr/local/node_exporter/textfile_collector” &

部署配置systemd收集器
说明: systemd收集器记录了systemd管理的服务,通过–collector.systemd.unit-whitelist参数指定需要收集的服务,按需收集

启动:

nohup ./node_exporter –web.listen-address=”:9600″ –web.telemetry-path=”/metrics” –collector.textfile.directory=”/usr/local/node_exporter/textfile_collector” –collector.systemd –collector.systemd.unit-whitelist=”(docker|sshd|rsyslog).service” &

配置prometheus对node_exporter进行指标采集

– job_name: “node_exporter”
static_configs:
– targets: [“192.168.161.118:9600”] #这个端口尽量使用默认端口9100,方便辨认

二、部署Cadvisor监控容器

docker run

-v /:/rootfs:ro

-v /var/run:/var/run/:rw

-v /sys:/sys:ro

-v /dev/disk:/dev/disk:ro

-v /home/docker:/var/lib/docker:ro

-p 8080:8080

–detach=true –name=cadvisor –net=host google/cadvisor

#注意:/home/docker为实际部署的docker数据目录,默认应该为/var/lib/docker

验证:

在这里插入图片描述
查看指标:

http://192.168.161.118:8080/metrics

配置prometheus server抓取CAdvisor

配置prometheus.yml配置文件

job_name: “docker” static_configs:
targets: [“192.168.161.118:8080”]
热重启prometheus

#prometheus server启动开启热更新配置

参数:–web.enable-lifecycle

nohup ./prometheus –web.enable-lifecycle –config.file=prometheus.yml &

#热重启prometheus

curl -X POST http://192.168.161.118:9090/-/reload

查看prometheus 的targets,即可发现,docker容器监控完成,到此本期的分享就结束了,更多关于prometheus的干货分享,可以持续关注乐维社区,或者prometheus技术分享专栏。


http://www.niftyadmin.cn/n/17054.html

相关文章

AIGC-ChatGPT

一、AIGC AI Generate Content(人工智能生成内容)是指通过人工智能技术生成文本、图像、视频或音频等内容的方法。这种方法通常使用大型语言模型和生成式深度学习技术,能够自动生成高质量的内容。人工智能生成内容的应用场景包括新闻摘要生成…

良心总结!Git 各指令的本质,真是通俗易懂啊

1前言 作为当前世界上最强大的代码管理工具Git相信大家都很熟悉,但据我所知有很大一批人停留在clone、commit、pull、push...的阶段,是不是对rebase心里没底只敢用merge?碰见版本回退就抓瞎?别问我怎么知道的,问就是&…

C++初阶 priority_queue(优先级队列)的使用和模拟实现

作者:小萌新 专栏:C初阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:介绍优先级队列的使用和模拟实现 优先级队列的使用和模拟实现priority_queue的使用priority_queue的介绍priority_queue的定义priority…

Mobtech秒验SDK——一站式解决用户登录场景

据悉,北京中文万维科技有限公司旗下多款APP,和MobTech开发的秒验SDK达成合作,为其提供用户一键登录解决方案。 北京中文万维科技有限公司是一家立志以移动互联网阅读为发展起点的阅读互动娱乐高新技术企业,旗下拥有多款阅读类APP。…

leetcode解题思路分析(一百三十四)1131 - 1143 题

1131.绝对值表达式的最大值 给你两个长度相等的整数数组&#xff0c;返回下面表达式的最大值&#xff1a; |arr1[i] - arr1[j]| |arr2[i] - arr2[j]| |i - j| 其中下标 i&#xff0c;j 满足 0 < i, j < arr1.length。 把Point(i, arr[i], arr[j])看作三位空间中的一个…

Web端H5播放FLV、HLS、MP4 (二)

使用video.js播放HLS、FLV、MP4。 MP4、FLV、HLS、RTMP等协协和播放器之间的支持情况&#xff0c;参看这里。 一、主要JS插件&#xff1a; jquery(v3.6.0) video.js (v7.21.0&#xff0c;其它版本没试) https://cdn.bootcdn.net/ajax/libs/video.js/7.21.0/video.min.js f…

Spring学习初整理

spring的核心 spring是一个开源框架 spring是为了简化企业开发而生的&#xff0c;使得开发变得更加优雅和简洁 spring是一个IOC和AOP的容器框架 IOC&#xff1a;控制反转 AOP&#xff1a;面向切面编程 容器&#xff1a;包含并管理应用对象的生命周期 spring的优势 1&#…

fetch向后端请求数据:get/post/put/patch/delete方式、解决catch不能主动捕获错误问题(超详细笔记)

1、什么是fetch&#xff1a; fetch是ES6出现的&#xff0c;它使用了 ES6 提出的 promise 对象&#xff0c;为了取代XMLHttpRequest而诞生的&#xff1b;提到XMLHttpRequest就不得不提ajax&#xff0c;ajax是一种实现前后端交互的技术&#xff0c;而ajax是基于XMLHttpRequest模块…