首页 文章 精选 留言 我的

精选列表

搜索[springboot2],共10000篇文章
优秀的个人博客,低调大师

容器监控知多少 (2) cAdvisor

本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。上一篇我们了解了docker自带的监控子命令以及开源监控工具Weave Scope,这一篇我们来了解一下Google开发的容器监控工具cAdvisor。cAdvisor能够较好地展示Host和容器两个层次的监控数据,并且能够展示历史变化数据。 实验环境:阿里云ECS主机两台,CentOS 7.4 一、cAdvisor简介 为了解决容器的监控问题,Google开发了一款容器监控工具cAdvisor(_Container Advisor_),它为容器用户提供了对其运行容器的资源使用和性能特征的直观展示。它是一个运行守护程序,用于收集,聚合,处理和导出有关正在运行的容器的信息。 cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况。 cAdvisor使用go语言开发,如果想了解更多请访问其官方github:https://github.com/google/cadvisor 二、安装cAdvisor cAdvisor 有两种方法来运行,一种是以二进制可执行文件安装运行,另一种是以 Docker 容器运行。这里我们主要介绍第二种以Docker方式安装运行。 我们可以通过以下命令来在实验环境的云服务器中运行cAdvisor容器: 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方式运行成功,我们可以通过 http://[Your Host IP]:8080(默认是8080端口)来访问cAdvisor。看到以下界面,代表我们的安装工作完成。 三、使用cAdvisor 3.1 监控容器 cAdvisor提供了对Host和容器的监控,单击“Docker Containers”链接: 我们即可进入容器监控列表 单击其中某个容器例如exceptionless_api_1,即可进入该容器实例的监控页面(前方长图,注意流量): 我们可以清楚地看到:CPU、内存、网络、文件系统的动态使用情况。 3.2 监控Host 除了监控容器之外,cAdvisor也提供了对Host的监控。退出Docker Containers,我们在首页就可以看到如下图所示的Host动态性能数据: 同样,我们也能清楚地看到CPU、内存、网络、文件系统等资源的动态使用情况以及历史数据的变化。 四、小结 本文简单介绍了Google开发的容器监控工具cAdvisor的基本安装与使用,总结下来cAdvisor可以帮助展示Host和容器两方面的监控数据,还可以动态展示历史数据的变化。但是,cAdvisor的缺点也非常明显,那就是它的操作界面比较简陋,而且需要多个页面来回跳转,其易用性甚至还不如Weave Scope。更为重要的是,它不能监控多个Host,而Weave Scope至少还可以监控多个Host。那么,为何我们还要学习它呢?因为cAdvisor有一个亮点之处就在于它可以将监控数据导出给第三方工具,而这个第三方工具就是我们下一篇将要学习的Prometheus,Prometheus会对这些监控数据做进一步加工处理。 因此,我们后续的监控结构是:Prometheus + Node Exporter & cAdvisor + Grafana,敬请期待。 参考资料 Cloud Man,《每天5分钟玩转Docker容器技术》 二二向箔,《容器监控实践-cAdvisor》 Ein Verne,《使用Google出品的cAdvisor监控Docker容器》

优秀的个人博客,低调大师

Mockito 2 关于打标(stubbing)

请参考下面有关于打标的代码。 //You can mock concrete classes, not just interfacesLinkedList mockedList = mock(LinkedList.class); //stubbingwhen(mockedList.get(0)).thenReturn("first");when(mockedList.get(1)).thenThrow(newRuntimeException()); //following prints "first"System.out.println(mockedList.get(0)); //following throws runtime exceptionSystem.out.println(mockedList.get(1)); //following prints "null" because get(999) was not stubbedSystem.out.println(mockedList.get(999)); //Although it is possible to verify a stubbed invocation, usually it's just redundant//If your code cares what get(0) returns, then something else breaks (often even before verify() gets executed).//If your code doesn't care what get(0) returns, then it should not be stubbed.verify(mockedList).get(0);在默认情况下,所有的方法都会有一个返回值。mock 函数默认返回的是 null,一个空的集合或者一个被对象类型包装的内置类型。例如,针对int/Integer 将会返回 0,针对 boolean/Boolean 将会返回 false。打标(Stubbing)可以被重写:例如一个通用的打标可以在启动的时候被确定(fixture),但是测试方法可以对其进行重写(override)。请注意重写的打标可能会在有很多标记的时候存在潜在的问题。一旦被打标,方法将会总是返回已标记的内容,这个与这个方法被调用多少次无关。最后的标记非常重要——当你对有相同参数的方法进行多次标记的时候。换句话说就是:标记的顺序是有关的(the order of stubbing matters),但是这个意义并不是很大。例如,这个只在标记完全相同的方法或者有时候参数匹配(argument matchers)被启用的时候,等情况下才会出现。, etc. 测试代码请访问 GitHub https://github.com/cwiki-us-demo/mockito-demo-java/blob/master/src/test/java/com/ossez/demo/mockito/MockitoStubbingTest.java 请注意,上面的测试代码在运行的时候回出现错误。 这是因为在测试代码运行的时候,我们尝试输出mockedList.get(1),这个在测试的时候,因为我们打标为抛出异常,所以这一句话将会在测试代码中抛出异常。 运行时候,抛出异常的界面如下: https://www.cwiki.us/pages/viewpage.action?pageId=47843418

资源下载

更多资源
Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。