Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus

news2024/11/24 22:51:26

文章目录

  • 一、Docker命令监控
  • 二、Sysdig
    • 2.1介绍
    • 2.2 基本操作
      • 2.2.1 切换视图
      • 2.2.2 查看标签含义
      • 2.2.3 排序
      • 2.2.4 查看内部进程
      • 2.2.5 查找
      • 2.2.6 暂停
      • 2.2.7 上一级
      • 2.2.8 退出
  • 三、Weave Scope
    • 3.1介绍
    • 3.2基本操作
      • 3.2.1 显示容器
      • 3.2.2 选择容器
      • 3.2.3 按照CPU使用情况排序
      • 3.2.4 控制容器
      • 3.2.5 搜索容器
    • 3. 两台主机监控
  • 四、cAdvisor
    • 4.1介绍
    • 4.2 基本操作
      • 4.2.1查看容器
      • 4.2.1查看单个容器状态
  • 五、Prometheus
    • 5.1介绍


监控,这一个词对于我们开发人员已经习以为常,我们通过对于内存、IO、CPU等性能的监控去判断当前运行状态的情况,容器作为一个已经打包好的虚拟环境亦是如此,特别是多个容器运行,需要收集docker各容器的运行状态和运行信息,本章将进行容器监控,第三方容器监控来进行讲解。
在这里插入图片描述

一、Docker命令监控

我们先去运行几个容器

docker run -d -p 80 --name ceshi-1-httpd httpd
docker run -d -it --name ceshi-2-busybox busybox
docker run -d -it --name ceshi-3-centos centos
命令解释
ps查看容器状态
container ls查看容器状态
top 【容器ID】查看容器内进程
stats查看容器各项资源消耗情况

在这里插入图片描述

像有些命令我们已经非常常见了,Docker所自带的容器指令可以实时的去捕捉信息,但是我们也会存在一些问题,数缺形时少直观,无法反应所占用的趋势,为此,我们引入第三方监控软件。

二、Sysdig

2.1介绍

Sysdig 是一款命令行监控工具,因其轻量级的特点深受广大用户的喜爱。Svsdig 就像放大镜,使用户可以更清晰地看到宿主机与容器的各项行为。它相当干多种 Linux 监控工具的合集。同时docker上为我们提供了他的容器镜像!

docker run -it --rm --name sysdig --privileged=true  \
--volume=/var/run/docker.sock:/host/var/run/docker.sock  \
--volume=/dev:/host/dev  \
--volume=/proc:/host/proc:ro  \
--volume=/boot:/host/boot:ro  \
--volume=/lib/modules:/host/lib/modules:ro  \
--volume=/usr:/host/usr:ro sysdig/sysdig


#--privileged=true:赋予特殊权限;

其实看到这里,我们会有一个疑问,他作为一个容器,他怎么去获取我们的容器的信息的,我们注意到这个命令**/var/run/docker.sock**我们现在来详细参看下命令,我们在前面的学习中,已经知道我们docker是由client和server组成,我们输入命令实际上是通过客户端将请求发送到同一台电脑上的Doceker Daemon服务,由Docker Daemon返回信息,客户端收到信息后展示在控制台上。我们去看Docker Daemon的信息
在这里插入图片描述

在这里插入图片描述
我们试着来监听一下

curl --unix-socket /var/run/docker.sock http://localhost/events
docker run -it --rm nginx sh

在这里插入图片描述
现在,我们就可以很清楚的知道,Sysdig通过对于/var/run/docker.sock数据卷的共享,可以来获取我们容器的信息。

我们接着往下走,等到我们上面命令执行完输入csysdig(退出的话ctrl+P+Q)

csysdig                 

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

2.2 基本操作

2.2.1 切换视图

点击我们下面的views
在这里插入图片描述
在这里插入图片描述
界面左边列出了sysdig支持的View,一共30多项,涵盖了操作系统的各个方面因为这里主要是讨论容器监控
在这里插入图片描述

所以我们将光标移到Containers这一项,界面右边立即显示出此View的功能介绍,双击可以进入视图
在这里插入图片描述

2.2.2 查看标签含义

点击legend
在这里插入图片描述
在这里插入图片描述

2.2.3 排序

双击头部
在这里插入图片描述
在这里插入图片描述

2.2.4 查看内部进程

双击容器进入
在这里插入图片描述
在这里插入图片描述

2.2.5 查找

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

2.2.6 暂停

在这里插入图片描述

2.2.7 上一级

退格

2.2.8 退出

按住q

三、Weave Scope

3.1介绍

Weave Scope的最大特点是会自动生成一张Docker容器地图,能够直观地理解、监控和控制容器。

#下载scope命令脚本文件并赋予x执行权限:
curl -L git.io/scope -o /usr/local/bin/scope

【真的太慢了,百度网盘都比他快】
链接:https://pan.baidu.com/s/1HWePWMZBkhkyYVlrqHY2Rw?pwd=3wva 
提取码:3wva 
--来自百度网盘超级会员V4的分享
|
 ————网盘下的,这样操作
     mkdir /usr/local/bin/scope
     cp 你放的位置 /usr/local/bin/scope

#加入权限
chmod a+x /usr/local/bin/scope

#以容器的方式启动Weave Scope
scope launch
#授权端口
apt install firewalld
firewall-cmd --add-port=4040/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

在这里插入图片描述

3.2基本操作

3.2.1 显示容器

在这里插入图片描述

3.2.2 选择容器

单击小图标,同时会将容器信息进行显示
在这里插入图片描述

3.2.3 按照CPU使用情况排序

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

3.2.4 控制容器

在这里插入图片描述
attach到容器启动进程,相当于执行docker container attach
在这里插入图片描述
打开shell,相当于执行docker container exec
在这里插入图片描述
重启容器,相当于执行docker container restart
在这里插入图片描述
暂停容器,相当于执行docker container pause
在这里插入图片描述
关闭容器,相当于执行docker container stop

3.2.5 搜索容器

在这里插入图片描述

3. 两台主机监控

名称IP地址
小唐A192.168.2.98
郑崽B192.168.2.108
因为小唐的已经装好了,所以直接传到郑崽的目录就好
username<登录用户名你服务器的名字【就是你直接打开控制台的名字】>
serverip<客户端ip(ip addr查看)> 192.168.2.108
scp -r -p <本机地址> username@serverip:<要传的地址> 

scp -r -p /usr/local/bin/scope root-u@192.168.2.108:/usr/local/bin/scope


【郑崽B】:chmod 777 /usr/local/bin
-------------等待小唐传输-------------
【小唐A】:scp -r -p /usr/local/bin/scope root-u@192.168.2.108:/usr/local/bin/scope
-------------传输完毕-----------------
【郑崽B】:ls /usr/local/bin (检查一下)
【郑崽B】:chmod +x /usr/local/bin/scope
【郑崽B】:scope launch 192.168.2.108 192.168.2.98
【郑崽B】:docker run -d -it --name ceshi-4-centos centos
各自的ip在前,其他主机的在后
【小唐A】:scope launch 192.168.2.98 192.168.2.108

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

四、cAdvisor

4.1介绍

cAdvisor是google开发的容器监控工具,我们一起来看看吧

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

如果出现

docker: Error response from daemon: driver failed programming external connectivity on endpoint cadvisor (dbd62fd04c955df34e34aa72b78de70f21019a08da5bb1a06da55c4a1fad228a):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8090 -j DNAT --to-destination 172.17.0.2:8090 ! -i docker0: iptables: No chain/target/match by that name.
【停止再重启docker】
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
systemctl restart docker

在这里插入图片描述

4.2 基本操作

4.2.1查看容器

在这里插入图片描述

在这里插入图片描述

4.2.1查看单个容器状态

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

五、Prometheus

5.1介绍

Prometheus是一个非常优秀的监控工具。准确地说,应该是监控方案Prometheus提供了监控数据搜集、存储、处理、可视化和告警一套完整的解决方案。我们先来看看他的架构,这个真的是这篇文章中最硬核的东西了
在这里插入图片描述

1.Prometheus Server ------服务端 —处理,储存数据
Prometheus Server负责从Exporter拉取和存储监控数据,并提供一套灵活的查询语言 (PromQL) 供用户使用。
2. Exporter-----客户端 —采集数据
Exporter负责收集目标对象 (host、container等)的性能数据,并通过HTTP接口供Prometheus Server获取。
3.可视化组件
监控数据的可视化展现对于一个监控方案至关重要,以前Prometheus自己开发了一套>>工具,不过后来废弃了,因为开源社区出现了更为优秀的产品Grafana。Grafana能够与Prometheus无缝集成,提供完美的数据展示能力。
4.Alertmanager—告警方式—实现告警
用户可以定义基于监控数据的告警规则,规则会触发告警。一旦Alertmanager收到告警,会通过预定义的方式发出告警通知。支持的方式包括Email.PagerDuty、Webhook等

工作流程

  1. Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。
  2. Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。
  3. Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。
  4. 在图形界面中,可视化采集数据。

下面我们来对Prometheus进行一个简单的实践

名称IP地址
小唐A192.168.2.98
郑崽B192.168.2.108

我们将使用Prometheus对于小唐A和郑崽B进行监控
(1)同时Prometheus Server, Prometheus Server本身也将以容器的方式运行在小唐A
Node Exporter: 负责收集host硬件和操作系统数据,它将以容器方式运在所有host
cAdvisor: 负责收集容器数据,它将以容器方式运行在所有host
(2) Grafana,显示多维数据,Grafana本身也将以容器方式运行在小唐A

1.运行Node Exporter【所有host都做】

docker run -d --net="host" --name node_exporter --restart=unless-stopped -p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter

在这里插入图片描述

在这里插入图片描述

2.运行cAdvisor【所有host都做】

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

在这里插入图片描述

在这里插入图片描述
3.运行Prometheus Server【小唐A做】

【会报错,但是我们会拿到prometheus.yml,我们接着去修改我们的yml文件】
docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
【复制到本地】
docker cp prometheus:/etc/prometheus/prometheus.yml .
【修改配置文件】

【开个管理员】
sudo su
ls /root
vi /root/prometheus.yml

 targets: ["localhost:9090","localhost:8080","localhost:9100","192.168.2.108:9090","192.168.2.108:8080","192.168.2.108:9100"]


【删除刚刚的容器】
docker rm prometheus -f

【再次运行】
docker run -d -p 9090:9090 \
--name prometheus \
--net=host  \
-v /root/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

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

4.运行grafana容器【小唐A做】

docker run -d -i -p 3000:3000 \
-e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
-e "GF_SECURITY_ADMIN_PASSWORD=secret" \
--net=host \
grafana/grafana

做到这里的时候我已经想哭了,终于出来了
账号:admin
密码:secret

在这里插入图片描述
添加数据
在这里插入图片描述

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

在这里插入图片描述

当然也可以到官网去看其他的图标
官网
这里需要我们去登陆一下,github或者微软的账号都可以
在这里插入图片描述

在这里插入图片描述
导入
在这里插入图片描述
在这里插入图片描述
然后选择好我们的对于的仓库,完成!!!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/478475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手动开发 简单的 Spring 基于 XML 配置的程序

目录 手动开发- 简单的 Spring 基于 XML 配置的程序 需求说明 思路分析 WyxApplicationContextTest xml配置 注意 手动开发- 简单的 Spring 基于 XML 配置的程序 需求说明 1. 自己写一个简单的 Spring 容器, 通过读取 beans.xml&#xff0c;获取第 1 个 JavaBean: Mon…

【建议收藏】Pandas(一)——初见Series

文章目录 &#x1f4da;引言&#x1f4d6;库的安装以及一些说明&#x1f4d1;库的安装&#x1f4d1;一些说明 &#x1f4d6;Series&#x1f4d1;创建一个Series&#x1f516;从列表创建Series&#x1f516;从字典创建Series&#x1f516;标量创建Series &#x1f4d1;Series的特…

SpringSecurity认证原理和自定义认证

认证原理和自定义认证 认证配置表单认证注销登录前后端分离认证添加验证码 自定义认证 自定义资源权限规则 /index 公共资源/hello … 受保护资源 权限管理 在项目中添加如下配置就可以实现对资源权限规则设定: Configuration public class WebSecurityConfigurer extend…

node笔记_http服务搭建(渲染html、json)

文章目录 ⭐前言⭐初始化项目调整npm 的script运行入口搭建hello world的http服务npm run dev执行主函数的http服务 ⭐http返回类型html模板文件返回安装express渲染html的字符串 渲染html文件 sendFile渲染json返回数据类型 res.json ⭐结束 ⭐前言 大家好&#xff0c;我是ym…

CTF权威指南 笔记 -第二章二进制文件- 2.2 -ELF文件格式

目录 ELF的文件类型 ELF文件的结构 ELF文件头 节头表 代码节 数据节和只读数据节 bss节 字符串表 符号表 重定位 可执行文件的装载 常见的段 ELF就是可执行可连接格式 为linux运行文件格式 ELF的文件类型 我们使用复杂的例子进行演示 #include<stdio.h>int gl…

成功解决长时间挂起虚拟机后再次打开无法连接网络,并提示网络激活失败(亲测有效)

成功解决长时间挂起虚拟机后再次打开无法连接网络&#xff0c;并提示网络激活失败&#xff08;亲测有效&#xff01;&#xff09; 之前做区块链的一个虚拟机很久没打开&#xff0c;一直处于挂起状态&#xff0c;一直提示网络连接激活失败。试了很多种方法没解决&#xff0c;更…

人力资源管理系统有哪些推荐?

人力资源管理系统是现代企业管理中必不可少的工具&#xff0c;它可以帮助企业高效地管理人员的入职、离职、考勤、绩效、薪酬等方面的信息。 然而&#xff0c;市场上的HRM系统琳琅满目&#xff0c;选择一款合适的系统并不容易。 今天就来给大家介绍六款好用的人力资源管理系统…

自动化运维工具---Ansible Playbook语法实战(一)

目录 一、Ansible Playbook剧本初识 1.1 Ansible Playbook 基本概述 1.1.1 什么是playbook 1.1.2 Ansible playbook 与AD-Hoc的关系 1.2 Ansible Playbook 书写格式 1.2.1安装NFS 服务 1.3 Playbook变量详解 1.3.1 使用 vars定义变量 1.3.2 使用 vars_flies定义变量 …

中国平安将在2023年出现转机,复苏才刚刚开始

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 在解封后股价出现短暂反弹之后&#xff0c;由于市场担忧中国平安&#xff08;02318&#xff09;人寿保险部门新业务NBV&#xff08;用于衡量寿险公司新业务价值的一个重要指标,当一家保险公司的NBV指标越高,那么说明每新增…

码出高效:Java开发手册笔记(线程安全)

并发与并行的目标都是尽可能快地执行完所有任务。以医生坐诊为例&#xff0c;某个科室有两个专家同时出诊&#xff0c;这就是两个并行任务&#xff0c;其中一个医生&#xff0c;时而问诊&#xff0c;时而查看化验单&#xff0c;然后继续问诊&#xff0c;突然又中断去处理病人的…

总线、I/O总线、I/O接口

总线是计算机内数据传输的公共路径&#xff0c;用于实现两个或以上部件之间的信息交换。计算机系统中有多种总线&#xff0c;它们在各个层次上提供部件之间的连接和信息交换通路。 核内总线&#xff1a;在处理器核内部各元件之间连线的总线称为核内总线&#xff0c;可连接核内…

Java-数据结构-并查集<二>

一.并查集的简单介绍 二. 并查集的主要构成和实现方式 三.HashMap模板和数组模板 由于在下文的模板基本一致&#xff0c;不再每次都罗列&#xff0c;大体的模板如下&#xff0c;若有错误可以在leetcode找到对应的题目解答&#xff0c;已经附上连接。 HashMap class UnionFi…

本周大新闻|苹果首款MR没有主打卖点;Meta认为AI是AR OS的基础

​本周XR大新闻&#xff0c;AR方面&#xff0c;苹果首款MR或没有主打卖点&#xff0c;反而尽可能支持更多App和服务&#xff1b;扎克伯格表示基于AI的AR眼镜操作系统是下一代计算平台的基础&#xff1b;微软芯片工程VP Jean Boufarhat加入Meta芯片团队&#xff1b;Humane展示了…

[计算机图形学]高级光线传播与复杂外观建模(前瞻预习/复习回顾)

本篇不涉及技术细节* 一、高级光线传播* 1.有偏和无偏估计 无偏估计&#xff0c;比如我们在之前做路径追踪的时候&#xff0c;我们用许多样本去近似定积分的值&#xff0c;无论我们取的样本数量是多少&#xff0c;它的期望永远是对的&#xff0c;也就是我们真实的定积分的值&…

Python入门(一)Python概述与环境搭建

Python概述与环境搭建 1.概述1.1版本及下载1.2 Python 特点 2.环境搭建3.第一个程序“hello&#xff0c;world”4.可能会存在的问题 1.概述 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性&#xff0c;相比其他语言…

【WAF】雷池waf升级体验

文章目录 前言一、更新二、功能体验1.仪表板2.自定义规则&#xff1a;3. 通用配置&#xff1a; 更新总结新增优化&#xff1a; 前言 最近雷池有比较大的更新&#xff0c;安装可以参考以前文章雷池waf安装&#xff0c;更新了数据统计也就是仪表板和自定义规则和通用配置还有IP高…

AI行为分析预警系统 opencv

AI行为分析预警系统通过pythonopencv网络模型Ai视觉智能分析技术&#xff0c;AI行为分析预警系统可以对实际场景下如车间、电力场景、化工场景、工业生产场景下的人员作业操作行为规范进行有针对性的定制开发&#xff0c;根据每个项目的不同的识别预警需求。OpenCV可以在不同的…

BEV(0)---Transformer

1 Transformer Transformer是一个Sequence to Sequence model&#xff0c;特别之处在于它大量用到了self-attention&#xff0c;替代了RNN&#xff0c;既考虑了Sequence的全局信息也解决了并行计算的问题。 1.1 self-attention&#xff1a; ①. 输入x1 ~ x4为一个sequence&…

Mysql-SQL优化

SQL优化 插入数据优化1&#xff09;批量插入数据2&#xff09;手动控制事务3&#xff09;主键顺序插入大批量插入数据 主键优化order by优化group by优化limit优化count优化update优化小结 插入数据优化 插入数据优化主要是对于insert进行批量插入时优化&#xff0c;下面我们就…

验证二叉搜索树-递归双指针法

1题目 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1&#xff1a…