热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Prometheuscadvisor容器监控和nodeexporter节点监控

往期文章Prom
往期文章

Prometheus监控系统
https://blog.csdn.net/qq_39578545/article/details/108754585

Docker之compose介绍
  • 使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Compose。
  • Dockerfile可以让用户管理一个单独的应用容器,而compose则允许用户在一个模板(yaml格式)中定义一组相关联的应用容器(被称为一个project,即项目)
  • 例如一个web服务再加上后端的数据库服务容器等。

docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)

  • docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名。
  • 一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。
  • 一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。因此需要借助其他工具实现服务发现及负载均衡,比如consul。
    docker-compose的工程配置文件默认为docker-compose.yml。可以通过环境变量COMPOSE_FILE -f 参数自定义配置文件,其自定义多个有依赖关系的服务及每个人服务运行的容器。
  • 简单来说:就是来管理多个容器的,定义启动顺序的,合理编排,方便管理。

Prometheus监控容器

需要一台docker 宿主机,docker 容器安装prometheus服务

1.下载compose软件

curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

2、授予可执行权限

[root@docker1 ~]# chmod +x /usr/local/bin/docker-compose
[root@docker1 ~]# which docker-compose
/usr/local/bin/docker-compose
[root@docker1 ~]# docker compose version
Docker Compose version v2.7.0

3、编辑prometheus的配置文件

[roott@docker1 ~]# mkdir /prom_docker
[roott@docker1 ~]# cd /prom_docker/
[roott@docker1 prom_docker]#
[root@docker1 prom_docke]# vim prometheus.yml
[root@docker1 prom_docker]# cat prometheus.yml
scrape_configs:
- job_name: cadvisorscrape_interval: 5sstatic_configs:- targets:- cadvisor:8080[root@docker1 prom_docke]# vim docker-compose.yaml
[root@docker1 prom_docker]# cat docker-compose.yml
version: '3.2'
services:prometheus:image: prom/prometheus:latestcontainer_name: prometheusports:- 9090:9090command:- --config.file=/etc/prometheus/prometheus.ymlvolumes:- ./prometheus.yml:/etc/prometheus/prometheus.yml:rodepends_on:- cadvisorcadvisor:image: gcr.io/cadvisor/cadvisor:latestcontainer_name: cadvisorports:- 8080:8080volumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rodepends_on:- redisredis:image: redis:latestcontainer_name: redisports:- 6379:6379

cadvisor相当于node_exporter


4、下载cadvisor.tar镜像

docker pull gcr.io/cadvisor/cadvisor:latest
由于下载该镜像需访问谷歌,因此国内无法成功下载,有条件可以使用香港的服务器里去下载镜像,或者通过其他途径获取该镜像

https://download.csdn.net/download/qq_39578545/87613018

iptables -F
真正删除规则需要重启机器

cAdvisor(需要监控的主机都要安装)
官方地址:https://github.com/google/cadvisor
CAdvisor是谷歌开发的用于分析运行中容器的资源占用和性能指标的开源工具。CAdvisor是一个运行时的守护进程,负责收集、聚合、处理和输出运行中容器的信息。
docker监控也需要用一个exporter,这个exporter就是cAdvisor,类似zabbix的各种agent

[root@localhost prom_docker]# pwd
/prom_docker
[root@localhost prom_docker]# ls
cadvisor.tar docker-compose.yml prometheus.ymldocker tag 68c29634fe49 gcr.io/cadvisor/cadvisor:latest

5、使用docker compose启动容器

[root@docker1 prom_docker]# docker compose up -d
[+] Running 4/4⠿ Network prom_docker_default Created 0.3s⠿ Container redis Started 1.1s⠿ Container cadvisor Started 2.3s⠿ Container prometheus Started 3.5s
[root@docker1 prom_docker]# docker compose ps
NAME COMMAND SERVICE STATUS PORTS
cadvisor "/usr/bin/cadvisor -…" cadvisor running (starting) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp
prometheus "/bin/prometheus --c…" prometheus running 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp
redis "docker-entrypoint.s…" redis running 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp如启动有问题注意检查配置文件的格式问题,查看配置文件中各个端口本机是否已经占用等

6、访问cadvisor和prometheus

8080 端口访问 cadvisor
9090 端口访问 prometheus
http://192.168.48.129:8080
在这里插入图片描述

7、安装grafana ,使用能显示docker容器的模板

[root@docker1 prom_docker]# docker run -d -p 3001:3000 --name sc-grafana-1 grafana/grafana
Unable to find image 'grafana/grafana:latest' locally
latest: Pulling from grafana/grafana
9621f1afde84: Pull complete
37c977d2b27c: Pull complete
c808de7a697e: Pull complete
86659f76fb09: Pull complete
747aee88ceca: Pull complete
99d875e11915: Pull complete
3fb2327ae1ed: Pull complete
ac9523800f50: Pull complete
e15e29cdce8f: Pull complete
Digest: sha256:980ff2697655a0aa5718e40bbda6ac52299d2f3b1584d0081152e2d0a4742078
Status: Downloaded newer image for grafana/grafana:latest
c4aae27eb48ce7be7add6af0d8073aed15c305de81ec94e788ebdfc529836353http://192.168.48.129:3001/
首次进入时,需要输入用户名和密码,皆为admin1、添加数据源 datasource
2、导入图标模板
https://grafana.com/grafana/dashboards
该网站有许多已经搭建好了的grafana模板,每个模板都有一个id,也可以下载成json文件,

在这里插入图片描述


scrape_configs:- job_name: cadvisorscrape_interval: 5sstatic_configs:- targets:- cadvisor:8080- job_name: 'prometheus'static_configs:- targets: ['127.0.0.1:9090']- job_name: 'job1'static_configs:- targets: ['192.168.48.129:9100']- job_name: 'job2'static_configs:- targets: ['192.168.48.129:6379']

Node_exporter

Node-exporter 可以采集机器(物理机、虚拟机、云主机)的监控指标数据,能够采集到的指标包括cpu、内存、磁盘、网络、文件数等信息。

各种各样的exporter下载地址:https://prometheus.io/download/
1、下载安装

curl -O -L https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz# 解压
tar -zxvf node_exporter-1.5.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/node_exporter-1.5.0.linux-amd64/ /usr/local/node_exporter-1.5.0
# 创建软连接
ln -s /usr/local/node_exporter-1.5.0/ /usr/local/node_exporter

2、添加到系统服务

sudo tee /usr/lib/systemd/system/node_exporter.service <[Unit]
Description&#61;Prometheus node_exporter
[Service]
User&#61;nobody
ExecStart&#61;/usr/local/node_exporter/node_exporter --log.level&#61;error
ExecStop&#61;/usr/bin/killall node_exporter
[Install]
WantedBy&#61;default.target
EOF

3、启动

# 启动
systemctl start node_exporter
# 查看服务状态
systemctl status node_exporter访问地址&#xff1a;http://192.168.48.129:9100/metrics&#xff0c;可以看到监控的指标信息

4、配置Prometheus

global:scrape_interval: 5sevaluation_interval: 5sscrape_timeout: 5sscrape_configs:- job_name: &#39;prometheus&#39;static_configs:- targets: [&#39;localhost:9090&#39;]- job_name: &#39;linux-exporter&#39;metrics_path: /metricsstatic_configs:- targets: [&#39;localhost:9100&#39;]

5、grafana DashBoard添加
https://grafana.com/grafana/dashboards/12884-1-node-exporter-for-prometheus-dashboard-cn-v20200628/
https://grafana.com/grafana/dashboards
在这里插入图片描述


推荐阅读
  • Spring Boot单元测试中Redis连接失败的解决方案
    本文探讨了在Spring Boot项目中进行单元测试时遇到Redis连接问题的原因及解决方法,详细分析了配置文件加载路径不当导致的问题,并提供了有效的解决方案。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 在Win10上利用VS2015构建Caffe2环境
    本文详细介绍如何在Windows 10操作系统上通过Visual Studio 2015编译Caffe2深度学习框架的过程。包括必要的软件安装、环境配置以及常见问题的解决方法。 ... [详细]
  • Windows环境下部署Kubernetes Dashboard指南
    本指南详细介绍了如何在Windows系统中部署Kubernetes Dashboard,包括下载最新配置文件、修改服务类型以支持NodePort访问、下载所需镜像并启动Dashboard服务等步骤。 ... [详细]
  • 探讨在同时运行 Rails 3 和 Rails 4 的环境中,如何有效地管理和同步 Sprockets 清单文件,以支持无中断的资产加载及回滚功能。 ... [详细]
  • 应用场景在开发中,我们经常需要把一些随时可能变化的属性配置到配置文件中,这样耦合性低,方便维护。SpringBoot在这方面为我们提供了很大的便捷,我们可以很轻易的将propert ... [详细]
  • 利用GitHub热门资源,成功斩获阿里、京东、腾讯三巨头Offer
    Spring框架作为Java生态系统中的重要组成部分,因其强大的功能和灵活的扩展性,被广泛应用于各种规模的企业级应用开发中。本文将通过一份在GitHub上获得极高评价的Spring全家桶文档,探讨如何掌握Spring框架及其相关技术,助力职业发展。 ... [详细]
  • Flutter 高德地图插件使用指南
    本文档详细介绍了如何在Flutter项目中集成和使用高德地图插件,包括安装、配置及基本使用方法。 ... [详细]
  • Linux双网卡绑定技术详解与实践
    本文详细介绍了如何在Linux系统中实现双网卡绑定,即将两块物理网卡合并为一个逻辑网卡,以提高网络性能和可靠性。文中不仅涵盖了基本的概念,还提供了具体的配置步骤和测试方法。 ... [详细]
  • 本文详细探讨了在Python开发中遇到的ImportError: 无法找到名为Crypto.Cipher的模块的问题,并提供了多种解决方案,包括环境配置、库安装和代码调整等方法。 ... [详细]
  • 微服务架构详解及其入门指南
    本文详细介绍了微服务的基本概念、发展历程、与传统架构的区别及优势,并探讨了适合采用微服务架构的场景。此外,文章还深入分析了几个主流的微服务开发框架,特别是Spring Cloud的组成和特点。 ... [详细]
  • 深入理解 .NET 中的中间件
    中间件是插入到应用程序请求处理管道中的组件,用于处理传入的HTTP请求和响应。它在ASP.NET Core中扮演着至关重要的角色,能够灵活地扩展和自定义应用程序的行为。 ... [详细]
  • 在使用Node.js运行时环境的Next.js应用程序部署过程中,遇到了与目录文件数量相关的错误。本文将详细探讨该问题及其解决方案。 ... [详细]
  • 深入解析 RuntimeClass 及多容器运行时应用
    本文旨在探讨RuntimeClass的起源、功能及其在多容器运行时环境中的实际应用。通过详细的案例分析,帮助读者理解如何在Kubernetes集群中高效管理不同类型的容器运行时。 ... [详细]
  • Kubernetes 实践指南:初次体验
    本文介绍了如何通过官方提供的简易示例,快速上手 Kubernetes (K8S),并深入理解其核心概念和操作流程。 ... [详细]
author-avatar
阿都欧巴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有