首页 文章 精选 留言 我的

精选列表

搜索[企业应用],共10012篇文章
优秀的个人博客,低调大师

《Greenplum企业应用实战》一导读

前 言 为什么写作本书 阿里巴巴是国内最早使用Greenplum作为数据仓库计算中心的公司。从2009年到2012年Greenplum都是阿里巴巴B2B最重要的数据计算中心,它替换掉了之前的Oracle RAC,有非常多的优点。 Greenplum的性能在数据量为TB级别时表现非常优秀,单机性能相比Hadoop要快好几倍。 Greenplum是基于PostgreSQL的一个完善的数据库,在功能和语法上都要比Hadoop上的SQL引擎Hive好用很多,对于普通用户来说更加容易上手。 Greenplum有着完善的工具,相比Hive,整个体系都比较完善,不需要像Hive一样花太多的时间和精力进行改造,非常适合作为一些大型的数据仓库解决方案。 Greenplum能够方便地与Hadoop进行结合,可直接把数据写在Hadoop上,还可以直接在数据

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

zabbix企业应用之监控docker容器资源情况

关于docker的监控,无论开源的CAdvisor、Data Dog还是我自己写的监控(http://dl528888.blog.51cto.com/2382721/1635951),不是通过docker的statsapi就是使用socket来进行。 单独看一个主机的监控项还行,比如只查看容器test的cpu、内存还是网络,但如果想批量查看的话,比如查看容器test1-test10的所有监控项或者只是看cpu资源使用比较费劲了,现在我使用zabbix通过docker stats api监控容器资源,然后使用lld技术自动监控,使用zatree进行批量展示监控效果。 不说太多的废话,直接看效果图,满足自己需求在继续深入研究 一、效果图 1、监控容器cpu使用率 2、监控容器内存使用量 3、监控容器网络流量值 目前我监控docker就监控这些东西,至于其他的资源个人有需求可以自己写。 下面是如何部署 二、部署 1、环境 我的zabbix是2.0.6,所以想使用我的模板,必须是2.0.x以上的zabbix版本; docker使用1.6版本,如果想使用我的监控,docker必须大于1.5; 需要安装jq,如何安装参考http://stedolan.github.io/jq/tutorial/ 监控客户端里必须安装docker的python 模块 安装的话,可以使用 easy_installdocker-py 2、客户端部署 A.在zabbix_agentd.conf最后添加以下内容 UserParameter=zabbix_low_discovery[*],/bin/bash/usr/local/zabbix/bin/zabbix_low_discovery.sh$1 UserParameter=docker_stats[*],sudo/usr/local/zabbix/bin/zabbix_monitor_docker.py$1$2 B.把下面的脚本放到/usr/local/zabbix/bin里,然后给与755权限,并修改用户与组为zabbix [root@ip-10-10-125-8bin]#catzabbix_monitor_docker.py #!/usr/bin/envpython #-*-coding:utf-8-*- #author:DengLei #email:dl528888@gmail.com fromdockerimportClient importos importre importsys importsubprocess importtime defcheck_container_stats(container_name,collect_item): container_collect=docker_client.stats(container_name) old_result=eval(container_collect.next()) new_result=eval(container_collect.next()) container_collect.close() ifcollect_item=='cpu_total_usage': result=new_result['cpu_stats']['cpu_usage']['total_usage']-old_result['cpu_stats']['cpu_usage']['total_usage'] elifcollect_item=='cpu_system_uasge': result=new_result['cpu_stats']['system_cpu_usage']-old_result['cpu_stats']['system_cpu_usage'] elifcollect_item=='cpu_percent': cpu_total_usage=new_result['cpu_stats']['cpu_usage']['total_usage']-old_result['cpu_stats']['cpu_usage']['total_usage'] cpu_system_uasge=new_result['cpu_stats']['system_cpu_usage']-old_result['cpu_stats']['system_cpu_usage'] cpu_num=len(old_result['cpu_stats']['cpu_usage']['percpu_usage']) result=round((float(cpu_total_usage)/float(cpu_system_uasge))*cpu_num*100.0,2) elifcollect_item=='mem_usage': result=new_result['memory_stats']['usage'] elifcollect_item=='mem_limit': result=new_result['memory_stats']['limit'] elifcollect_item=='mem_percent': mem_usage=new_result['memory_stats']['usage'] mem_limit=new_result['memory_stats']['limit'] result=round(float(mem_usage)/float(mem_limit)*100.0,2) #network_rx_packets=new_result['network']['rx_packets'] #network_tx_packets=new_result['network']['tx_packets'] elifcollect_item=='network_rx_bytes': network_check_command="""dockerexec%sifconfigeth1|grepbytes|awk-F':''{print$2,$3}'|awk-F'(''{print$1,$2}'|awk-F')''{print$1}'|awk'{print"{\\"rx\\":"$1",\\"tx\\":"$2"}"}'"""%container_name network_old_result=eval(((subprocess.Popen(network_check_command,shell=True,stdout=subprocess.PIPE)).stdout.readlines()[0]).strip('\n')) time.sleep(1) network_new_result=eval(((subprocess.Popen(network_check_command,shell=True,stdout=subprocess.PIPE)).stdout.readlines()[0]).strip('\n')) #unitKB result=int(network_new_result['rx'])-int(network_old_result['rx']) elifcollect_item=='network_tx_bytes': network_check_command="""dockerexec%sifconfigeth1|grepbytes|awk-F':''{print$2,$3}'|awk-F'(''{print$1,$2}'|awk-F')''{print$1}'|awk'{print"{\\"rx\\":"$1",\\"tx\\":"$2"}"}'"""%container_name network_old_result=eval(((subprocess.Popen(network_check_command,shell=True,stdout=subprocess.PIPE)).stdout.readlines()[0]).strip('\n')) time.sleep(1) network_new_result=eval(((subprocess.Popen(network_check_command,shell=True,stdout=subprocess.PIPE)).stdout.readlines()[0]).strip('\n')) result=int(network_new_result['tx'])-int(network_old_result['tx']) returnresult if__name__=="__main__": docker_client=Client(base_url='unix://var/run/docker.sock',version='1.17') container_name=sys.argv[1] collect_item=sys.argv[2] printcheck_container_stats(container_name,collect_item) C.监控内容的json化 下面在是我的json监控docker容器的json展示 [root@ip-10-10-125-6~]#sh/usr/local/zabbix/bin/zabbix_low_discovery.shdocker { "data":[ { "{#CONTAINERNAME}":"nodeA"}, { "{#CONTAINERNAME}":"xiaotg-mesos.5"}, { "{#CONTAINERNAME}":"xiaotg-mesos.4"}, { "{#CONTAINERNAME}":"xiaotg-mesos.3"}, { "{#CONTAINERNAME}":"xiaotg-mesos.2"}, { "{#CONTAINERNAME}":"xiaotg-mesos.1"}, { "{#CONTAINERNAME}":"xiaotg-mesos.0"}, { "{#CONTAINERNAME}":"ulimit_test.1"}, { "{#CONTAINERNAME}":"ulimit_test.0"} ] } 脚本内容如下: [root@ip-10-10-125-6tmp]#catzabbix_low_discovery.sh #!/bin/bash #Fucation:zabbixlow-leveldiscovery docker(){ port=($(sudodockerps-a|grep-v"CONTAINERID"|awk'{print$NF}')) printf'{\n' printf'\t"data":[\n' forkeyin${!port[@]} do if[["${#port[@]}"-gt1&&"${key}"-ne"$((${#port[@]}-1))"]];then printf'\t{\n' printf"\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"},\n" else[["${key}"-eq"((${#port[@]}-1))"]] printf'\t{\n' printf"\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"}\n" fi done printf'\t]\n' printf'}\n' } case$1in docker) docker ;; *) echo"Usage:`basename$0`{docker}" ;; esac 把此文件存放到/usr/local/zabbix/bin里,然后给与755权限,并修改用户与组为zabbix,同时允许zabbix用户无密码运行docker echo"zabbixALL=(root)NOPASSWD:/bin/docker,/usr/local/zabbix/bin/zabbix_monitor_docker.py">>/etc/sudoers D.重启zabbix服务 ps-ef|grepzabbix|grep-vgrep|awk'{print$2}'|xargskill-9 /usr/local/zabbix/sbin/zabbix_agentd-c/usr/local/zabbix/conf/zabbix_agentd.conf 3、服务端部署 A、模板导入 把Template Docker Auto Discovery导入到zabbix里(模板在附件),具体操作不介绍。 B.主机关联模板 把需要监控docker容器的主机管理模板即可监控,默认是60秒后自动更新,如下图 由于在zabbix里监控docker只是为了查看方便,所以报警就没有做,有需求可以自己来修改。 附件:http://down.51cto.com/data/2365800 本文转自 dl528888 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1660844,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册