这一期主要来跟大家聊一下,使用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

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

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

3) 启动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技术分享专栏

Prometheus技术分享——如何监控宿主机和容器的更多相关文章

  1. docker环境 宿主机和容器之间复制文件

    容器往宿主机:docker cp 3234234324234:/database_dump_bak/db_bak.dmp /home/test 宿主机往容器:docker cp wenjian_001 ...

  2. Linux namespace技术应用实践--调用宿主机命令(tcpdump/ip/ps/top)检查docker容器网络、进程状态

    背景 最近偶然听了几堂极客时间的云原生免费公开课程,首次接触到了Linux namespace技术,并了解到这正是现在风头正劲的容器技术基石,引起了自己探究一二的兴趣,结合课程+网络搜索+实践操作,也 ...

  3. docker 宿主机与容器直接文件移动命令

    1.将容器中的文件复制到宿主机 我们把容器中的 nginx 目录整个复制到  宿主机/usr/local/nginx 目录下,使用如下命令: docker cp nginx_test: /etc/ng ...

  4. Docker拷贝宿主机与容器中的文件

    如果我们需要将宿主机文件拷贝到容器内可以使用 docker cp 命令,也可以将文件从容器内拷贝到宿主机 将宿主机文件拷贝到容器内 docker cp 要拷贝的宿主机文件或目录 容器名称:容器文件或目 ...

  5. 开发时从宿主机连接容器中的MySQL

    从宿主机连接Docker容器中的MySQL 刚接触Docker,电脑安装Docker后,使用docker命令pull了一个MySQL5.6的Docker镜像,之后docker run启动创建容器. 可 ...

  6. [Docker] 使用docker inspect查看宿主机与容器的共享目录

    docker inspect 容器名,可以查看到容器的元信息,在返回的j'son信息里面有个Mounts字段可以看到挂载目录 "Mounts": [ { "Type&qu ...

  7. Docker-使用数据卷在宿主机和容器间的数据共享

    场景一:现在用Docker创建了N个容器,但是这些容器之间需要数据共享,这个时候我们应该怎么办?[参考第四步] 场景二:docker创建了一个容器并进入容器,添加了一些定制功能,此时除了用docker ...

  8. docker容器 - 宿主机和容器之间复制文件(cp)

    实验环境 CentOS 7.5 容器 容器是镜像的运行实例.不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层:同时,容器中的应用进程处于运行状态. 主机和容器之间复制文件 要想实现在主 ...

  9. Linux环境宿主机进入Docker容器、连接数据库、复制文件

    我们默认mysql容器已经正常启动,以下为关键命令.1.docker exec -it mysql bash : 进入已经正常启动的容器bash中,mysql是指实际容器名称.2.mysql -uro ...

  10. docker容器与宿主机的数据交互

    在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 方式一.Docker cp命令 docker cp :用于容器与主机之间 ...

随机推荐

  1. TienChin 验证码响应结果分析&验证码生成接口分析

    验证码响应结果分析 首先从前端开始进行分析,进入到登录页面,打开开发者工具(f12),找到 network,f5 刷新一下页面,然后,筛选一下,筛选内容为 Fetch/XHR: 你会发现列表中有两项内 ...

  2. docker镜像打包,上传

    docker镜像打包 前言 简单栗子 1.制作dockerfile 2.打包镜像 3.镜像打上tag 4.上传到仓库 docker镜像打包 前言 docker打包镜像 简单栗子 使用nginx打包一个 ...

  3. 基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱、订酒店吃饭事件图谱等

    基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱.订酒店吃饭事件图谱等 项目构成 本项目由两个部分的组成,具体包括语料的获取以及基于语料的事件挖掘两个部分,具体项目目录包括: news_s ...

  4. Centos7 本地与网络Yum源配置

    虽然Yum工具,只需要你的主机连接互联网,就可以直接使用,但是有些时候我们需要自定义Yum源实现加速,下面我们将配置一个本地Yum源,来使用光盘中的软件,其他网络配置操作步骤相同,只是会在baseur ...

  5. 记录一次py2编码带来的坑

    "中文" == u"中文" # PY2 False"中文" == u"中文" # PY3 True

  6. MySQL创建, 修改,删除用户密码

    MySQL创建, 修改,删除用户密码 创建用新户名密码 创建用新户名密码: create user 'test1'@'localhost' identified by 'test1'; 修改用户名密码 ...

  7. IDEA破解(无限重启激活时间版)

    下载地址[将下载的目录打成zip压缩包后使用]:「ide-eval-resetter」https://www.aliyundrive.com/s/UFHpDX5d6Xv 点击链接保存,或者复制本段内容 ...

  8. 6.用户输入和 while 循环--《Python编程:从入门到实践》

    6.1 input 函数 函数input()接受一个参数:即要向用户显示的提示或说明.input 将用户输入解释为字符串. name = input("Please enter your n ...

  9. raise的研究发现,弄懂,try except 一定要raise 否则非常不利于调试。

    现在很多人 都反应 下载订单后 提示下载成功,但是 软件中却没有这个订单,经过研究发现  原因是我用了 try except end; 这个结构导致的,当订单下载过程中 遇到错误的 时候,程序 没有 ...

  10. Python树与树算法

    Python树与树算法 树的概念 树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>=1)个有限节点组成一个具 ...