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

这一期主要来跟大家聊一下,使用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技术分享专栏

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,下面是一个快速部署 Prometheus 监控 docker 容器宿主机和 Ceph 集群的 docker-compose.yaml 文件: ```yaml version: '3' services: prometheus: image: prom/prometheus ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' depends_on: - node-exporter - cadvisor - ceph-exporter node-exporter: image: prom/node-exporter volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' cadvisor: image: google/cadvisor ports: - 8080:8080 volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro ceph-exporter: image: galexrt/ceph-exporter:latest environment: CLUSTER_NAME: mycluster CEPH_USERNAME: admin CEPH_KEYRING_BASE64: <base64-encoded ceph.client.admin.keyring> ports: - 9128:9128 ``` 其中,Prometheus 监控的配置文件 prometheus.yml 可以参考下面的示例: ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'docker' metrics_path: '/metrics' static_configs: - targets: ['node-exporter:9100'] labels: group: 'docker' - job_name: 'node' metrics_path: '/metrics' static_configs: - targets: ['node-exporter:9100'] labels: group: 'node' - job_name: 'cadvisor' metrics_path: '/metrics' static_configs: - targets: ['cadvisor:8080'] labels: group: 'docker' - job_name: 'ceph' metrics_path: '/metrics' static_configs: - targets: ['ceph-exporter:9128'] labels: group: 'ceph' ``` 在这个配置文件中,我们定义了四个 job: - prometheus监控 Prometheus 本身的指标。 - docker监控 Docker 容器运行时的指标。 - node监控宿主机的指标。 - ceph:监控 Ceph 集群的指标。 对于 dockernode,它们都使用了 node-exporter 来收集指标。而对于 ceph,我们使用了 ceph-exporter 来收集指标。 在部署前,需要将 ceph.client.admin.keyring 文件的内容进行 base64 编码,并将编码后的内容填入 docker-compose.yaml 文件中的 CEHP_KEYRING_BASE64 环境变量中。 部署完成后,可以通过访问 http://localhost:9090 来访问 Prometheus 的 Web 界面。在这里,你可以查看所有收集到的指标,并且可以创建自己的监控规则和仪表盘。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值