docker——监控以及常用监控工具介绍和docker部署

发布时间:2024年01月04日

容器监控

在公司的时候,监控类的还是接触的比较多。基本上就是grafana + datasource(prometheus、pg、es) + 告警规则

下面简单介绍一些监控维度以及几种数据源工具和grafana使用(全部以docker部署,方便学习)

监控维度

在主机上运?的容器是监控的重中之重。作为应?的直接载体,使?者需要对容器的各类信息进?实时监控,以保证应?的正常运?。Docker在底层使?了Linux内核提供的资源机制——namespace和cgroups,以此来?持容器的运?。通过这些机制,我们可以很?便地获取容器的各项监控指标。

  • 容器的基本信息
  • 容器的运?状态
  • 容器的?量信息

? 容器的基本信息包括容器的总数、ID、名称、镜像、启动命令、端?等信息。容器监控时可以依据容器的运?状态,即运?中、暂停、停?及异常退出,来统计各状态的容器的数量,并实时反馈各个容器的运?状态。容器的?量信息则是?户最关?的,也是监控中最为复杂的部分,它可以统计容器的CPU使?率、内存使?量、块设备I/O使?量、?络使?情况等资源的使?情况

监控命令

  • docker ps 命令

通过使?docker ps 命令,可以查看当前主机上的容器信息,包括容器ID、镜像名、容器启动执?命令、创建时间、状态、端?信息和容器名称。

  • docker images 命令

通过使?docker images 命令,可以查看当前主机上的镜像信息,包括镜像所属的库、标签、ID、创建时间和实际??。该命令默认只会列出所有顶层镜像的信息,可以通过-a参数来查看所有中间层的镜像信息

  • docker stats命令

docker stats 命令是Docker1.5版本提供的命令,专??于容器状态信息的统计,同时还有配套的API(GET /containers/(id)/stats),可供开发?员调?。使?该命令,可以实时监控运?中的容器运?情况,包括CPU、内存、块设备I/O和?络I/O,这些信息都会定期刷新以现实最新运?情况。

docker stats container_name_or_id
echo -e "GET /containers/cidemo/stats HTTP/1.0\r\n" | nc -U /var/run/docker.sock

者可以使?stats api 将容器的运?状态信息传递到??构建的应?中,以实现容器的的系统监控

  • docker inspect 命令

通过使?docker inspect 命令,可以查看镜像或容器的底层详细信息,以此来了解镜像或容器的完整构建信息,包括基础配置、主机配置、?络设置、状态信息等。同时,如果需要查看其他特定信息,可以通过-f参数来设定输出格式。

docker inspect -f {{.NetworkSettings.IPAddress}} <容器名称/ID>
  • docker top 命令

通过使?docker top 命令,可以查看正在运?的容器中的进程的运?情况。该命令可以使?户在没有通过/bin/bash终端与容器交互式,帮助?户查看容器内的进程信息,包括进程号、?进程号、命令等。

  • docker port

docker port 命令的?途较为特定化,?于查看容器与主机之间的端?映射关系。

常用监控工具

cAdvisor

cAdvisor对Node机器上的资源及容器进?实时监控和性能数据采集,包括CPU使?情况、内存使?情况、?络吞吐量及?件系统使?情况。

源码

cadvisor获取的典型监控指标

指标名称                                   类型             含义
container_cpu_load_average_10s           gauge     过去10秒容器CPU的平均负
载
container_cpu_usage_seconds_total       counter   容器在每个CPU内核上的累
积占?时间 (单位:秒)
container_cpu_system_seconds_total     counter   System CPU累积占?时间
(单位:秒)
container_cpu_user_seconds_total         counter   User CPU累积占?时间
(单位:秒)
container_fs_usage_bytes                 gauge     容器中?件系统的使?量
(单位:字节)
container_fs_limit_bytes                 gauge     容器可以使?的?件系统总
量(单位:字节)
container_fs_reads_bytes_total           counter   容器累积读取数据的总量
(单位:字节)
container_fs_writes_bytes_total           counter   容器累积写?数据的总量
(单位:字节)
container_memory_max_usage_bytes     gauge     容器的最?内存使?量(单
位:字节)
container_memory_usage_bytes             gauge     容器当前的内存使?量(单
位:字节
container_spec_memory_limit_bytes       gauge     容器的内存使?量限制
machine_memory_bytes                     gauge     当前主机的内存总量
container_network_receive_bytes_total     counter   容器?络累积接收数据总量
(单位:字节)
container_network_transmit_bytes_total   counter   容器?络累积传输数据总量
(单位:字节)

cAdvisor 对外暴露的Prometheus容器指标

docker启动cAdvisor

# 安装cAdvisor 来收集容器信息 所有节点运?以下命令来安装cAdvisor
docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8081:8080 \
--detach=true \
--name=cadvisor \
--privileged=true \
-v "/etc/localtime:/etc/localtime" \
google/cadvisor:latest
Node Exporter

Node Exporter 是prometheus官?提供的agent,是非常常用的采集agent。 同时可以在代码中自定义实现exporter,将指标暴露给prometheus采集

1.源码地址

2.默认启?指标

3.默认禁用指标

安装Node Exporter

# 安装Node Exporter 来收集硬件信息
docker run -d -p 9100:9100 \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
-v "/etc/localtime:/etc/localtime" \
--net=bridge \
prom/node-exporter \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)
($|/)"

Prometheus

?个系统和服务监控系统。它以给定的时间间隔从配置的?标收集度量,评估规则表达式,显示结果,并在观察到指定条件时触发警报。

  • 多维数据模型(由度量名称和键/值维度集定义的时间序列)
  • PromQL提供?种强??灵活的查询语?
  • 不依赖分布式存储;单服务器节点是?治的
  • ?种?于时间序列采集的HTTP pull模型
  • 通过批处理作业的中间?关?持推送时间序列
  • 通过服务发现或静态配置发现?标
  • 多种图形和仪表板?持模式

源码地址

安装

# 拉取镜像
docker pull prom/prometheus
# 查看docker的ip地址
ifconfig | grep -A 1 docker0
# 创建?录/opt/prometheus
mkdir -p /opt/prometheus
# 新增prometheus.yml?件
vim /opt/prometheus/prometheus.yml

# prometheus.yml的内容如下
# 其中targets中的?址是对应服务器所在的地址
global:
 scrape_interval: 20s
 evaluation_interval: 20s
scrape_configs:
 - job_name: 'prometheus'
   static_configs:
   - targets: ['192.168.28.12:9090']
 - job_name: 'linux'
   static_configs:
   - targets: ['192.168.28.12:9100']
 - job_name: 'cadvisor'
   static_configs:
   - targets: ['192.168.28.12:8081']


# 创建prometheus容器
docker run -itd --name prometheus -p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /etc/localtime:/etc/localtime:ro \
prom/prometheus

grafana

?个开源的监控系统Web UI ,?持多种数据源。?持?定义看板

可以去官网导入各种模板,并配置数据源配合使用

官网

docker run -d -i -p 3000:3000 \
-v "/etc/localtime:/etc/localtime" \
-e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
-e "GF_SECURITY_ADMIN_PASSWORD=admin123" \
--net=bridge \
grafana/grafana

访问对应主机3000端口即可,admin账户密码设置为admin123

文章来源:https://blog.csdn.net/qq_43058348/article/details/135381832
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。