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

这篇具有很好参考价值的文章主要介绍了Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


监控,这一个词对于我们开发人员已经习以为常,我们通过对于内存、IO、CPU等性能的监控去判断当前运行状态的情况,容器作为一个已经打包好的虚拟环境亦是如此,特别是多个容器运行,需要收集docker各容器的运行状态和运行信息,本章将进行容器监控,第三方容器监控来进行讲解。
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus

一、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 查看容器各项资源消耗情况

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

像有些命令我们已经非常常见了,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的信息
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus

Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
我们试着来监听一下

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

Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
现在,我们就可以很清楚的知道,Sysdig通过对于/var/run/docker.sock数据卷的共享,可以来获取我们容器的信息。

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

csysdig                 

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

2.2 基本操作

2.2.1 切换视图

点击我们下面的views
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
界面左边列出了sysdig支持的View,一共30多项,涵盖了操作系统的各个方面因为这里主要是讨论容器监控
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus

所以我们将光标移到Containers这一项,界面右边立即显示出此View的功能介绍,双击可以进入视图
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus

2.2.2 查看标签含义

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

2.2.3 排序

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

2.2.4 查看内部进程

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

2.2.5 查找

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

2.2.6 暂停

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

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的分享
|
 ————网盘下的,这样操作
     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

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

3.2基本操作

3.2.1 显示容器

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

3.2.2 选择容器

单击小图标,同时会将容器信息进行显示
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus

3.2.3 按照CPU使用情况排序

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

3.2.4 控制容器

Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
attach到容器启动进程,相当于执行docker container attach
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
打开shell,相当于执行docker container exec
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
重启容器,相当于执行docker container restart
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
暂停容器,相当于执行docker container pause
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
关闭容器,相当于执行docker container stop

3.2.5 搜索容器

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

3. 两台主机监控

名称 IP地址
小唐A 192.168.2.98
郑崽B 192.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

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

四、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

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

4.2 基本操作

4.2.1查看容器

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

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

4.2.1查看单个容器状态

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

五、Prometheus

5.1介绍

Prometheus是一个非常优秀的监控工具。准确地说,应该是监控方案Prometheus提供了监控数据搜集、存储、处理、可视化和告警一套完整的解决方案。我们先来看看他的架构,这个真的是这篇文章中最硬核的东西了
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+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地址
小唐A 192.168.2.98
郑崽B 192.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

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

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

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

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

Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
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

Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+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

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

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

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

5.2数据大屏导入

当然也可以到官网去看其他的图标
官网
这里需要我们去登陆一下,github或者微软的账号都可以
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus

Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
导入
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
然后选择好我们的对于的仓库,完成!!!

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

六、对比

部署容易度

ps/top/stats无疑是最容易使用的,它们是Docker自带的子命令,随时随地都可以用来快速了解容器的状态。其余几种也都可以容器的方式运行,总的来说都不算复杂。相对而言,Prometheus涉及的组件比较多,搭建整个方案需要运行的容器数量也要多些,部署和管理的难道稍大。

数据详细度

ps/top/stats和cAdvisor能够监控容器基本的资源使用情况,Sysdig、 WeaveScope和Prometheus则能提供更丰富的数据

多Host监控

Weave Scope和Prometheus可以监控整个集群,而其余的工具只提供单个Host的监控能力。

告警功能

只有Prometheus具备原生的告警功能

监控非容器资源

Sysdig、 Weave Scope和 Advisor可 以监控到 Host操 作系统的状态,而Prometheus则可以通过Exporter支持应用级别的监控,比如监控ceph、haproxy等。文章来源地址https://www.toymoban.com/news/detail-462710.html

到了这里,关于Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker 容器学习笔记

    容器的由来 早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重: 容器技术只隔离应用程序的运行时环境但容器之间共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配

    2024年02月11日
    浏览(42)
  • docker学习笔记 一-----容器介绍

    最近准备离职了,提前学习些新的知识,找工作的时候发现了很多公司招聘需求上都要求要懂docker和k8s,所以学习一下吧。 一、容器介绍 既然要学docker就首先要了解一下什么是容器:容器也是一种虚拟化的方案。但是容器与虚拟机不同,虚拟机是通过中间层将一台或多台虚

    2024年04月10日
    浏览(44)
  • Docker 容器学习笔记以及安装配置

    容器的由来 早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重: 容器技术只隔离应用程序的运行时环境但容器之间共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配

    2024年02月09日
    浏览(32)
  • Docker可视化容器监控工具portainer.io(docker监控docker)(Docker Standalone、Docker Swarm、Kubernetes、ACI、Nomad)监控容器

    Ubuntu上有一些流行的Docker容器监控服务,可以通过Web界面进行查看和管理。以下是一些常用的Docker容器监控工具: Portainer:Portainer是一个轻量级的Docker管理界面,提供了直观的Web界面来管理和监控Docker容器。它支持容器的创建、启动、停止、删除等操作,并提供了实时的容器

    2024年02月08日
    浏览(40)
  • Prometheus监控实战之Docker容器监控

    容器的使用已经非常普及,将服务迁移到容器上正成为了越来越多公司的选择。而对于运维人员而言,熟悉容器的使用与监控,也已成为一项必不可少的专业技能。 关于容器的开源产品,目前知名的有Docker、Containerd、CoreOS rkt、LXC 等,在这其中Docker占据了绝对的统治地位,也

    2024年02月06日
    浏览(39)
  • 【云原生】Docker容器命令监控+Prometheus监控平台

    目录 1.常用命令监控 docker ps docker top docker stats 2.weave scope 1.下载 2.安装 3.访问查询即可 3.Prometheus监控平台 1.部署数据收集器cadvisor 2.部署Prometheus 3.部署可视化平台Gragana 4.进入后台控制台 1.常用命令监控 docker ps 字段含义 docker top 查看指定容器内的进程 选项 查看详细docker容器

    2024年02月15日
    浏览(43)
  • prometheus+cadvisor监控docker容器

    一、安装cadvisor 二、运行容器 若出现如下报错 执行 三、访问页面 ip:8088 四、Prometheus集成 五、在grafana中导入面板 六、监控图

    2024年02月11日
    浏览(43)
  • Loki+Grafana监控docker容器日志

    目标:最近开发人员时常需要查看各个环境项目中容器日志,而直接通过ssh终端使用docker logs命令查看日志不太安全,这会导致很多人员知道服务器的账户和密码,有没有一种可以收集所有容器日志的平台系统。那么这套系统就是Loki+Grafana组合。 重要提醒 :不要用于生产环境

    2024年02月12日
    浏览(40)
  • Docker容器监控(Cadvisor +Prometheus+Grafana)

    环境部署,接着上一篇文章Docker容器部署(Cadvisor +InfluxDB+Grafana)开始 目录 1、先清理一下容器 2、部署Cadvisor 3、访问Cadvisor页面 4、部署Prometheus 5、准备配置 6、运行prometheus容器 7、访问prometheus页面 8、部署Grafana  9、配置Grafana  10、测试 1、先清理一下容器 2、部署Cadvisor 3、

    2024年02月14日
    浏览(38)
  • netdata监控服务器主机(包括Docker容器)

    创建挂载目录 docker运行 通过ip:19999端口访问web界面 此时默认是英文界面,netdata暂不支持中文语言 下载汉化文件,我这直接git拉取 修改dashboard.js文件 快速搜索定位/NETDATA.jQuery ,将jquery版本修改成jquery-3.6.0.min.js 进入netdata容器 切换到web目录下 将dashboard_info.js、、index.html、

    2024年02月11日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包