docker——监控以及常用监控工具介绍和docker部署
容器监控
在公司的时候,监控类的还是接触的比较多。基本上就是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 容器?络累积传输数据总量
(单位:字节)
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!