zoukankan      html  css  js  c++  java
  • Go语言通过Docker Go语言SDK获取docker stats的信息

    一、Docker stats介绍

    docker stats是docker提供的一个监控工具,非常的好用,之前一篇博客中简单介绍来了一下,可以先去简单看看docker stats 介绍

    二、程序获取监控信息

    package main
    
    import (
    	"bytes"
    	"context"
    	"fmt"
    	"github.com/docker/docker/api/types"
    	"github.com/docker/docker/client"
    )
    
    func main() {
    	//获取ctx
    	ctx := context.Background()
    
    	//cli客户端对象
    	cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
    	if err != nil {
    		panic(err)
    	}
    
    	//获取容器id 这个其实docker ps那个命令,不过我们只需要容器id
    	containers, err := cli.ContainerList(ctx, types.ContainerListOptions{})
    	if err != nil {
    		panic(err)
    	}
    
    	//遍历获取到的容器
    	for _, container := range containers {
    		fmt.Println("--------容器ID-------")
    		fmt.Println(container.ID)
    		fmt.Println(container.Image)
    		fmt.Println(container.ImageID)
    		fmt.Println("根据容器id获取容器的stats")
    		//通过cli的ContainerStats方法可以获取到 docker stats命令的详细信息,其实是一个容器监控的方法
    		//这个方法返回了容器使用CPU 内存 网络 磁盘等诸多信息
    		containerStats, err := cli.ContainerStats(ctx, container.ID ,false)
    		if err != nil {
    			panic(err)
    		}
    /**
    		ContainerStats的返回的结构如下 注意这个Body的类型是io.ReadCloser 好奇怪的类型 下面我们给他转成json
    		type ContainerStats struct {
    			Body   io.ReadCloser `json:"body"`
    			OSType string        `json:"ostype"`
    		}
    */
    		fmt.Println(containerStats)
    		fmt.Println("containerStats.Body的内容是: ",containerStats.Body)
    		buf := new(bytes.Buffer)
    		//io.ReadCloser 转换成 Buffer 然后转换成json字符串
    		buf.ReadFrom(containerStats.Body)
    		newStr := buf.String()
    		fmt.Printf(newStr)
    	}
    }
    

    执行结果如下:

    基本数据全都有,慢慢解析json拿自己想要的信息吧!

  • 相关阅读:
    org.eclipse.core.internal.registry.ExtensionsParser的流程分析
    控件设计时的属性页定位办法
    IE的内存泄漏问题
    <<深入剖析ASP.NET组件设计>>的一个辅助类
    midp2.0 图片文件名问题
    解决了XMLTextReader的用法的一个难题,EndElement
    J2ME开发心得
    解决Js内存泄漏问题的代码片断
    asp.net代码中尖括号和百分号的含义
    string.Format和cookie代码
  • 原文地址:https://www.cnblogs.com/xwxz/p/13637730.html
Copyright © 2011-2022 走看看