
Tools
阿里云和Azure ICON图标矢量素材分享
学习资源 OS小编 发表了文章 0 个评论 5797 次浏览 2017-03-10 10:35
Linux下应用程序带宽限制神器「Trickle」
运维 being 发表了文章 0 个评论 8226 次浏览 2016-10-13 19:30
有时候我们经常会遇到某个应用程序占满了整个系统的带宽,然后影响到了其他程序的运行效率。这个时候其实是可以限制这个程序的带宽占用的,然后达到带宽均衡被瓜分。这个时候Trickle就可以做到,他可以控制应用程序的上下行带宽,达到带宽不至于被一个程序霸占。
什么是 Trickle
rickle是一个网络带宽调整工具,可以让我们管理应用程序的网络上下行速度,使得可以避免其中的某个应用程序霸占了全部或大部分可用的带宽。换句话说,Trickle可以让你基于单个应用程序来控制网络流量速率,而不是仅仅针对与单个用户——这是在客户端网络环境中经典的带宽调整情况。
Trickle 可以限制 Linux 命令行工具的上传和下载流量。在跨地域文件传输或者备份时非常有用,因为外网带宽往往会比较贵。
或者你想备份进程或者下载进程不对同机器的其他服务产生影响,也需要 Trickle 这样的限流工具。
再或者你在办公室想下载大文件,不希望影响其他网络用户或者应用,Trickle 就是为此设计。
Trickle 如何工作
trickle 可以帮助我们基于应用来定义优先级,所以当对整个系统进行了全局限制设定,高优先级的应用依然会自动地获取更多的带宽。为了实现这个目标,trickle 对 TCP 连接上的套接字的数据发送、接收设置流量限制。我们必须注意到,除了影响传输速率之外,在这个过程中,trickle任何时候都不会以任何方式来改变其中的数据。
Trickle不能做什么
trickle唯一的限制就是不支持静态链接的应用程序或者具有SUID或SGID位设置的二进制程序,因为它使用动态链接的方式将其载入到需要调整的进程和其关联的网络套接字之间。 Trickle此时会在这两种软件组件之间扮演代理的角色。
由于trickle并不需要超级用户的权限来运行,所以用户可以设置他们自己的流量限制。可能这并不是你想要的,我们会探索如何使用全局设定来限制系统中的所有用户的流量限制。也即是说,此时系统中的每个用户具有管理各自的流量速率,但是无论如何,都会受到系统管理员给他们设置的总体限制。
在这篇文章中,我们会描述如何通过trickle在linux平台上管理应用程序使用的网络带宽。为了生成所需的流量,在此会在客户端(CentOS 7 server – dev1: 192.168.0.17)上使用 ncftpput 和 ncftpget, 在服务器(Debian Wheezy 7.5 – dev2: 192.168.0.15)上使用vsftpd 来进行演示。 相同的指令也可以在RedHat,Fedora和Ubuntu等系统使用。
使用案例
前提条件
对于 RHEL/CentOS 7/6, 开启EPEL仓库。这些用于企业版 Linux 的额外软件包是一个由Fedora项目维护的高质量、开源的软件仓库,而且百分之百与其衍生产品相兼容,如企业版本Linux和CentOS。 在这个仓库中trickle和ncftp两者都是可用的。按照如下方式安装ncftp:
# yum update && sudo yum install ncftp [基于 RedHat 的系统]在单独的服务器上设置一个FTP服务器。需要注意的是,尽管FTP天生就不安全,但是仍然被广泛应用在安全性无关紧要的文件上传下载中。 在这篇文章中我们使用它来演示trickle的优点,同时它也会在客户端的标准输出流中显示传输速率。我们将是否在其它时间使用它放在一边讨论。
# aptitude update && aptitude install ncftp [基于 Debian 的系统]
现在,在FTP服务器上按照以下方式编辑 /etc/vsftpd/vsftpd.conf 文件。
anonymous_enable=NO在此之后,确保在你的当前会话中启动了vsftpd,并在之后的启动中让其自动启动。
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
# systemctl start vsftpd [基于 systemd 的系统]如果你选择在一个使用 SSH 密钥进行远程访问的 CentOS/RHEL 7中搭建FTP服务器,你需要一个密码受保护的用户账户,它能访问root目录之外的某个目录,并有能在其中上传和下载文件的权限。
# systemctl enable vsftpd
# service vsftpd start [基于 init 的系统]
# chkconfig vsftpd on
你可以通过在你的浏览器中输入以下的URL来浏览你的家目录。一个登录窗口会弹出来提示你输入FTP服务器中的有效的用户名和密码。
ftp://192.168.0.15如果验证成功,你就会看到你的家目录中的内容。该教程的稍后部分中,你将可以刷新页面来显示在你之前上传过的文件。
使用方法:
只需要把 trickle 和相关参数附加在其他 Linux 命令行工具命令之前即可。
比如限制 Wget 下载文件的速度为 20KB/S
trickle -s -d 20 wget -c http://blog.eood.cn/
限制文件备份到 AWS S3 的上传速度为 1MB/S:
trickle -s -u 1024 s3cmd sync /mnt/data/ s3://my-backup
当然,你也可以把 trickle 加在现有的服务器自动化脚本中完成限流功能。
其他功能:
trickle -L 设置延迟为多少 ms
trickle -w 设置窗口长度为多少 KB
假如你使用 Linux 系统作为办公和开发环境。Trickle 还可以针对每个不同的 Linux 工具进行限流,这样你可以限制 BT 下载的速度,而不影响浏览网页。
Linux下Json格式化神器jq
运维 Geek小A 发表了文章 0 个评论 15830 次浏览 2016-05-13 00:14
对于JSON格式而言,jq就像sed/awk/grep这些神器一样的方便,而且jq没有乱七八糟的依赖,只需要一个binary文件jq,就足矣。
一、安装
Centos:
# yum -y install jq
Ubuntu:
# apt-get -y install jq
二、使用
1、格式化Json
# cat json_test.txt上面的JSON是PHP json_encode之后,echo出来的字符串,很明显,可读性太差。前一阵子写文档,需要将前后段JSON写入文档,我当时是用是网上的JSON格式化工具做的。事实上,jq就可以检查JSON的合法性,并把JSON格式化成更友好更可读的格式:
{"name":"WuDi","location":{"street":"ZhongShanLu","city":"BeiJing","age":"26","country":"CN"},"employees":[{"name":"Mark","division":"DevOps"},{"name":"Lucy","division":"HR"},{"name":"Elise","division":"Marketing"}]}
看到上图,将一团乱麻的JSON格式化成个更可读的形式。其实背后另外检查了JSON的合法性。如果JSON不合法,jq .会报错。我故意写个错误的JSON:
2、JSON解析
如上图json,jq是如何解析JSON,根据key获取value?
{如何根据key获取value?
“key_1”:"value_1",
“key_2”:"value_2",
}
jq '.key'
解析不存在的元素,会返回null
3、JSON nested parse(嵌套解析)
[root@workingh ~]# cat json_test.txt | jq '.location.city'4、JSON parse array
"BeiJing"
[root@workingh ~]# cat json_test.txt | jq '.employees[1].name'5、内建函数
"Lucy"
jq还有一些内建函数如 key,has
key是用来获取JSON中的key元素的:
[root@workingh ~]# cat json_test.txt | jq 'keys'has是用来是判断是否存在某个key:
[
"employees",
"location",
"name"
]
[root@workingh ~]# cat json_test.txt | jq 'has("location")'与JSON相关的我就暂时介绍到这里,希望进一步了解jq并使用的可以去http://stedolan.github.io/jq/manual/.希望了解源码实现的,可以去https://github.com/stedolan/jq;意料之中的事情是作者用来flex和bison来parse json。我们的示例JSON来自参考文献第一篇。用google搜索,kernalpanic中有篇文章介绍了jshon和json.sh提供了另外的思路。
true
[root@workingh ~]# cat json_test.txt | jq 'has("xxoo")'
false
参考:
How to parse JSON string via command line on Linux
Parsing JSON with jq
上G大文件双机互传工具BBCP
运维 chris 发表了文章 0 个评论 4156 次浏览 2016-01-27 11:52
原由
局域网双机拷贝单个大文件 【200G大小】,不要问我是啥! 也不要问我为毛会生成那么大的单文件,事实就是这样!然后就开始了操蛋之旅!再次做下记录备忘!
方法尝试对比
方式一:scp
什么是scp: scp 命令是 SSH中最方便有用的命令了,scp就是secure copy,是用来进行远程文件拷贝的。数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证。 与rcp 不同的是,scp 在需要进行验证时会要求你输入密码或口令。方式二:rsync
速度:刚开始的时候33M/s 持续3分钟左右就跌落到3M左右的传输速度
什么是rsync: rsync是rcp的替代品之一,rsync 是一款高效的远程数据备份和镜象工具,方式三:wget
速度:无响应
什么是wget: wget 是一个经由 GPL 许可的可从网络上自动获取文件的自由软件包。它是一个非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 协议,支持代理服务器以及断点续传功能。 wget 可实现递归下载,即可跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,实现远程网站的镜像。在递归下载时,wget 将页面中的超级链接转换成指向本地文件,方便离线浏览。由于非交互特性,wget 支持后台运行,用户在退出系统后,仍可继续运行。功能强大,设置方便简单。方式四:bbcp
速度:刚开始的时候50M/s 持续3分钟左右就跌落到3M左右的传输速度
什么是bbcp: bbcp 是由SLAC(斯坦福直线加速器中心)的Andy Hanushevsky创立的点对点网络文件拷贝工具。经过简单测试,发现速度比 scp 快了10倍左右,因此推荐大家采用bbcp来取代scp等老家伙 :)附图为2G文件的传输速度:
速度:针对20G的文件进行了测试,测试下来平均下来速度在21M左右,耗时16分钟
总结
不同的应用场景使用不同的工具,单个大文件个人感觉bbcp还是极好极好的!安装bbcp【两端都要安装】
wget http://www.slac.stanford.edu/~abh/bbcp/bin/amd64_rhel60/bbcp -O /usr/bin/bbcp来自http://heylinux.com/archives/2984.html的中文参数解释:
chmod +x /usr/bin/bbcp
-k 保留所有未传输完成的文件,并允许在重试时进行覆盖参考文档:
-a 保留checkpoint信息用于校验文件的完整性
-r 递归传输指定路径下的所有文件
-P 2 每两秒显示传输的进程
-V 打印调试信息
-f 强制清除远程主机上传输失败的数据
-w 设置Disk (I/O) buffers
算法为(window = netspeed/8[i]RTT = 1000Mb/8[/i]74ms = 1000/1000/8*74 = 9.25 M)
对应链接:http://www.slac.stanford.edu/~abh/bbcp/#_Toc332986061
-s 16 设置并发数为16
参考官方建议:http://www.slac.stanford.edu/~abh/bbcp/#_Streams_(-s)
-T "ssh -x -a -p 2222 -oFallBackToRsh=no -i /home/dong.guo/.ssh/id_rsa -l heydevops heylinux.com /usr/bin/bbcp"
指定远端主机的认证方式:
采用-p 2222指定端口;
设置-oFallBackToRsh=no减少ssh响应时间;
设置-i /home/dong.guo/.ssh/id_rsa指定SSH Key;
设置-l heydevops指定登陆用户;
heylinux.com为远程主机地址;
/usr/bin/bbcp为远程主机的bbcp路径;
http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm
http://heylinux.com/archives/2984.html
http://imysql.cn/2008_12_08_using_bbcp_instead_scp
http://linux.cn/article-4527-1-rss.html
http://teachmyself.blog.163.com/blog/static/188814229201242314917237/
阅读分享原文:http://www.dwz.cn/2D55vI
新晋系统分析利器Sysdig
运维 Geek小A 发表了文章 0 个评论 2594 次浏览 2016-01-01 19:19
安装
curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -
curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
apt-get update
apt-get -y install sysdig
常用操作
sysdig 有很多 chisel, chisel 意为 铲子, 可以理解为定位某类问题的工具, sysdig 采用 Lua 编写的。
- []查看 chisel 列表[/]
sysdig -cl
- []查看具体某个 chisel 的提示[/]
sysdig -i spy_logs
- []使用某个 chisel[/]
sysdig -c spy_logs
- []过滤器可以帮助我们从各种输出信息中, 筛选出我们需要的, 比如 [i]proc.name=foo , 如果你记住不了太多过滤器也无妨, 我们可以借助如下命令查看过滤器[/[/i]]
sysdig -l
- []记录定位信息到文本, 以及从文本读取信息[/]
sysdig -w tracefile.capsysdig -r tracefile.dump proc.name=sshd
实战
- []服务器上经常需要查看哪个服务带宽占用使用较高, 特别是被 DDOS 的时候。[/]
sudo sysdig -c topprocs_net
- []查看某个IP的通讯数据,并以ASCII 码输出[/]
sudo sysdig -s2000 -A -c echo_fds fd.cip=127.0.0.1
- []查看非请求 redis-server 的其他请求进程和句柄[/]
sudo sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=redis-server"
- []查看访问该服务器的所有 GET 请求数据[/]
sudo sysdig -s 2000 -A -c echo_fds fd.port=80 and evt.buffer contains GET
- []查看访问该服务器的 SQL 语句[/]
sudo sysdig -s 2000 -A -c echo_fds evt.buffer contains SELECT
- []查看磁盘读写最高的进程[/]
sysdig -c topprocs_file
- []查看延迟最大的系统调用[/]
sysdig -c topscalls_time
- []查看具体文件的操作细节[/]
sysdig -A -c echo_fds "fd.filename=syslog"
- []查看 IO 延迟大于 1ms 的文件[/]
sudo sysdig -c fileslower 1
- []监视某个文件是否被操作, 从安全出发想象空间很大哦[/]
sudo sysdig evt.type=open and fd.name contains /etc更多方法,详情查阅sysdig官网
八大持续集成工具
运维 push 发表了文章 0 个评论 11707 次浏览 2015-12-10 23:05
一、Hudson
Hudson 是一个可扩展的持续集成引擎,主要用于:
- []持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。[/][]监控一些定时执行的任务。[/]
Hudson的特性如下:
- []易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。[/][]易于配置-所有配置都是通过其提供的web界面实现。[/][]集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。[/][]生成JUnit/TestNG测试报告。[/][]分布式构建支持-Hudson能够让多台计算机一起构建/测试。[/][]文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。[/][]插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。[/]
CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。CruiseControl提供了一个Web接口, 可随时查看当前的编译状况和历史状况。
Apache Continuum 是最新的 CI 服务器之一,也是值得关注的一个新进入者。Continuum 的安装和配置很简单:只要下载和释放 ZIP 文件,运行命令行程序,就可以运行了。基于 Web 的界面使得配置项目很容易。而且,还不需要安装 Web 服务器,因为 Continuum 内置了 Jetty Web 服务器。并且,Continuum 可以作为 Windows 服务运行,还在应用程序的某些部分嵌入了上下文敏感的文档,从而提供了很多帮助。Apache Continuum的特性:
- []与Maven 2.x的紧密集成[/][]与Maven SCM的紧密集成,支持Subversion/CVS/Starteam/Clearcase/Perforce[/][]基于web的容易使用的安装和配置接口[/][]Quartz-based scheduling[/][]简单的添加新的项目工程的方法[/][]用于 integration, automation and remoting的XML-RPC interface[/][]邮件提醒和IM(即时通讯)提醒IRC/Jabber/MSN[/]
QuickBuild 是一个持续集成和发布管理的服务器软件,它提供了一个统一的控制台用来管理这些发布的信息。
五、Bamboo
Atlassian Bamboo 是一款持续集成构建服务器软件(Build Server)。Bamboo的特点:
- []简单的用户界面 容易安装 – 顺利的话,5分钟内就可以让运行起来! 自动检测你的设置 – 如果您的Server上使用了Maven,Ant或者Java设置, Bamboo会自动检测他们; [/][]连续的日志 – 监测你的build的colour coded日志;[/][] 容易显示所有项目[/]
Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。主要用于:[list=1][]持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。[/][]监控一些定时执行的任务。[/]六、Jenkins
七、TeamCity
TeamCity是一款功能强大的持续集成(Continue Integration)工具,包括服务器端和客户端,目前支持Java,.Net项目开发。 TeamCity提供一系列特性可以让团队快速实现持续继承:IDE工具集成、各种消息通知、各种报表、项目的管理、分布式的编译等等,所有的这些,都是 让你的团队快速享有持续继承带来的效率提升、高质量的软件保障。
八、CI-Eye
CI-Eye 是一个强大的持续集成构建,无需安装和设置,CI-Eye 通过 REST API 跟很多不同的 CI 服务器交互,当前支持 Hudson, Jenkins, 以及 TeamCity. CI-Eye 在一个独立的 Web 应用中运行。
八大持续集成工具
运维 push 发表了文章 0 个评论 11707 次浏览 2015-12-10 23:05
一、Hudson
Hudson 是一个可扩展的持续集成引擎,主要用于:
- []持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。[/][]监控一些定时执行的任务。[/]
Hudson的特性如下:
- []易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。[/][]易于配置-所有配置都是通过其提供的web界面实现。[/][]集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。[/][]生成JUnit/TestNG测试报告。[/][]分布式构建支持-Hudson能够让多台计算机一起构建/测试。[/][]文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。[/][]插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。[/]
CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。CruiseControl提供了一个Web接口, 可随时查看当前的编译状况和历史状况。
Apache Continuum 是最新的 CI 服务器之一,也是值得关注的一个新进入者。Continuum 的安装和配置很简单:只要下载和释放 ZIP 文件,运行命令行程序,就可以运行了。基于 Web 的界面使得配置项目很容易。而且,还不需要安装 Web 服务器,因为 Continuum 内置了 Jetty Web 服务器。并且,Continuum 可以作为 Windows 服务运行,还在应用程序的某些部分嵌入了上下文敏感的文档,从而提供了很多帮助。Apache Continuum的特性:
- []与Maven 2.x的紧密集成[/][]与Maven SCM的紧密集成,支持Subversion/CVS/Starteam/Clearcase/Perforce[/][]基于web的容易使用的安装和配置接口[/][]Quartz-based scheduling[/][]简单的添加新的项目工程的方法[/][]用于 integration, automation and remoting的XML-RPC interface[/][]邮件提醒和IM(即时通讯)提醒IRC/Jabber/MSN[/]
QuickBuild 是一个持续集成和发布管理的服务器软件,它提供了一个统一的控制台用来管理这些发布的信息。
五、Bamboo
Atlassian Bamboo 是一款持续集成构建服务器软件(Build Server)。Bamboo的特点:
- []简单的用户界面 容易安装 – 顺利的话,5分钟内就可以让运行起来! 自动检测你的设置 – 如果您的Server上使用了Maven,Ant或者Java设置, Bamboo会自动检测他们; [/][]连续的日志 – 监测你的build的colour coded日志;[/][] 容易显示所有项目[/]
Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。主要用于:[list=1][]持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。[/][]监控一些定时执行的任务。[/]六、Jenkins
七、TeamCity
TeamCity是一款功能强大的持续集成(Continue Integration)工具,包括服务器端和客户端,目前支持Java,.Net项目开发。 TeamCity提供一系列特性可以让团队快速实现持续继承:IDE工具集成、各种消息通知、各种报表、项目的管理、分布式的编译等等,所有的这些,都是 让你的团队快速享有持续继承带来的效率提升、高质量的软件保障。
八、CI-Eye
CI-Eye 是一个强大的持续集成构建,无需安装和设置,CI-Eye 通过 REST API 跟很多不同的 CI 服务器交互,当前支持 Hudson, Jenkins, 以及 TeamCity. CI-Eye 在一个独立的 Web 应用中运行。
devops工具大全
运维 Geek小A 发表了文章 0 个评论 11504 次浏览 2015-10-27 01:12
包&产品管理
- []Chocolatey:Chocolatey是Windows下一款开源的命令行包管理软件 ,简单说这相当于Windows的apt-get;[/][]FPM:全称是Effing package management,他就是个软件包管理器,极大的缓解了多个平台构建软件包(deb,rpm,等)的痛苦;[/][]Herd:是一个基于Twitter Murder的文件分布系统;[/][]Vagrant Cachier:Vagrant的一个插件,用于缓存包方面的管理;[/][]WiX Toolset:提供一组最强大的工具集来帮助你创建Windows安装包。该工具集从XML源代码构建你的Windows安装程序包,可以无缝集成到构建过程;[/][]Boxstarter:利用Chocolatey包管理工具来自动化安装软件和创建可重复、脚本化的Windows环境;[/][]Elita:Elita是一个利用git和salt进行持续部署(部署作为服务)和API-driven基础设施的引擎/框架;[/][]Fig:主要用来跟Docker一起来实现的快速隔离的开发环境;[/][]Pulp:Pulp是一个用来管理软件库以及相关内容的平台;[/][]Veewee:Veewee是一个开源工具,用来创建和配置轻量级、可再生、便捷式虚拟机环境。[/]
日志记录&监控
- []AmonOne:现代化的自托管服务器监控工具;[/][]Anthracite:一个事件/日志改变/管理应用程序;[/][]collectd3:是一个可视化的collectd系统性能统计工具;[/][]collectd:是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制;[/][]Cronitor:监控cron工作,守护进程,和其他的一切;[/][]Datascope:可视化使用pg_stat_statements postgresql查询性能;[/][]Diamond:是一个基于Python的守护程序,主要用来收集系统指标,并且把它们发布到Graphite(或其它)工具中;[/][]Errbit:是一个用于收集和管理程序错误的开源工具;[/][]FnordMetric:是一个基于redis/ruby的实时事件跟踪应用,是个收集和可视化时间序列数据的框架,用户可以在几分钟内创建漂亮的实时分析仪表盘;[/][]Ganglia:Ganglia是一个跨平台可扩展的、高性能计算系统下的分布式监控系统,如集群和网格;[/]
云&PAAS环境
进程管理
- []Bouncy:可以作为HTTP路由主机;[/][]Supervisor:是一个客户端服务器系统,允许用户监控和控制类Unix操作系统上的进程数;[/][]God:由Ruby实现的进程监控框架。[/][]bluepill:bluepill[/]
服务发现
- []Consul:简化了分布式环境中的服务的注册和发现流程,通过HTTP或者DNS接口发现。支持外部SaaS 提供者等;[/][]etcd:是一个高可用的Key/Value存储系统,主要用于分享配置和服务发现;[/][]Apache ZooKeeper:是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题;[/][]Weave:创建一个虚拟网络并连接到部署在多个主机上的Docker容器。[/]
源代码管理
持续集成和交付
- []Buildbot:是一个系统的自动化编译/测试周期最需要的软件,以验证代码的变化。通过自动重建和测试每次发生了变化的东西,在建设迅速查明之前,减少不必要的失败;[/][]Cabot:是一个开源,自我托管的监控工具;[/][]Jenkins:是基于Java开发的一种持续集成工具,用于监控持续重复的工作;[/][]Hubot:基于脚本具有很高的灵活性,任何人都可以编写自己的脚本来扩展基本功能;[/][]Hudson:是一个可扩展的持续集成引擎,主要用于:持续、自动地构建/测试软件项目、监控一些定时执行的任务;[/][]CruiseControl.rb:是一个持续集成服务器,它可以让团队里的每个人随时了解项目的健康状况和进度;[/][]OpsBot:是一个开源的、可插入的改善通信的机器人。[/]
配置管理
希望大家有收获,查看原文可以获取到更多了解,原文中列表会持续更新。
翻译原文地址:https://dev-ops-tools.zeef.com/richard.kraayenhagen#block_41685_process-management
阿里云和Azure ICON图标矢量素材分享
学习资源 OS小编 发表了文章 0 个评论 5797 次浏览 2017-03-10 10:35
Linux下应用程序带宽限制神器「Trickle」
运维 being 发表了文章 0 个评论 8226 次浏览 2016-10-13 19:30
有时候我们经常会遇到某个应用程序占满了整个系统的带宽,然后影响到了其他程序的运行效率。这个时候其实是可以限制这个程序的带宽占用的,然后达到带宽均衡被瓜分。这个时候Trickle就可以做到,他可以控制应用程序的上下行带宽,达到带宽不至于被一个程序霸占。
什么是 Trickle
rickle是一个网络带宽调整工具,可以让我们管理应用程序的网络上下行速度,使得可以避免其中的某个应用程序霸占了全部或大部分可用的带宽。换句话说,Trickle可以让你基于单个应用程序来控制网络流量速率,而不是仅仅针对与单个用户——这是在客户端网络环境中经典的带宽调整情况。
Trickle 可以限制 Linux 命令行工具的上传和下载流量。在跨地域文件传输或者备份时非常有用,因为外网带宽往往会比较贵。
或者你想备份进程或者下载进程不对同机器的其他服务产生影响,也需要 Trickle 这样的限流工具。
再或者你在办公室想下载大文件,不希望影响其他网络用户或者应用,Trickle 就是为此设计。
Trickle 如何工作
trickle 可以帮助我们基于应用来定义优先级,所以当对整个系统进行了全局限制设定,高优先级的应用依然会自动地获取更多的带宽。为了实现这个目标,trickle 对 TCP 连接上的套接字的数据发送、接收设置流量限制。我们必须注意到,除了影响传输速率之外,在这个过程中,trickle任何时候都不会以任何方式来改变其中的数据。
Trickle不能做什么
trickle唯一的限制就是不支持静态链接的应用程序或者具有SUID或SGID位设置的二进制程序,因为它使用动态链接的方式将其载入到需要调整的进程和其关联的网络套接字之间。 Trickle此时会在这两种软件组件之间扮演代理的角色。
由于trickle并不需要超级用户的权限来运行,所以用户可以设置他们自己的流量限制。可能这并不是你想要的,我们会探索如何使用全局设定来限制系统中的所有用户的流量限制。也即是说,此时系统中的每个用户具有管理各自的流量速率,但是无论如何,都会受到系统管理员给他们设置的总体限制。
在这篇文章中,我们会描述如何通过trickle在linux平台上管理应用程序使用的网络带宽。为了生成所需的流量,在此会在客户端(CentOS 7 server – dev1: 192.168.0.17)上使用 ncftpput 和 ncftpget, 在服务器(Debian Wheezy 7.5 – dev2: 192.168.0.15)上使用vsftpd 来进行演示。 相同的指令也可以在RedHat,Fedora和Ubuntu等系统使用。
使用案例
前提条件
对于 RHEL/CentOS 7/6, 开启EPEL仓库。这些用于企业版 Linux 的额外软件包是一个由Fedora项目维护的高质量、开源的软件仓库,而且百分之百与其衍生产品相兼容,如企业版本Linux和CentOS。 在这个仓库中trickle和ncftp两者都是可用的。按照如下方式安装ncftp:
# yum update && sudo yum install ncftp [基于 RedHat 的系统]在单独的服务器上设置一个FTP服务器。需要注意的是,尽管FTP天生就不安全,但是仍然被广泛应用在安全性无关紧要的文件上传下载中。 在这篇文章中我们使用它来演示trickle的优点,同时它也会在客户端的标准输出流中显示传输速率。我们将是否在其它时间使用它放在一边讨论。
# aptitude update && aptitude install ncftp [基于 Debian 的系统]
现在,在FTP服务器上按照以下方式编辑 /etc/vsftpd/vsftpd.conf 文件。
anonymous_enable=NO在此之后,确保在你的当前会话中启动了vsftpd,并在之后的启动中让其自动启动。
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
# systemctl start vsftpd [基于 systemd 的系统]如果你选择在一个使用 SSH 密钥进行远程访问的 CentOS/RHEL 7中搭建FTP服务器,你需要一个密码受保护的用户账户,它能访问root目录之外的某个目录,并有能在其中上传和下载文件的权限。
# systemctl enable vsftpd
# service vsftpd start [基于 init 的系统]
# chkconfig vsftpd on
你可以通过在你的浏览器中输入以下的URL来浏览你的家目录。一个登录窗口会弹出来提示你输入FTP服务器中的有效的用户名和密码。
ftp://192.168.0.15如果验证成功,你就会看到你的家目录中的内容。该教程的稍后部分中,你将可以刷新页面来显示在你之前上传过的文件。
使用方法:
只需要把 trickle 和相关参数附加在其他 Linux 命令行工具命令之前即可。
比如限制 Wget 下载文件的速度为 20KB/S
trickle -s -d 20 wget -c http://blog.eood.cn/
限制文件备份到 AWS S3 的上传速度为 1MB/S:
trickle -s -u 1024 s3cmd sync /mnt/data/ s3://my-backup
当然,你也可以把 trickle 加在现有的服务器自动化脚本中完成限流功能。
其他功能:
trickle -L 设置延迟为多少 ms
trickle -w 设置窗口长度为多少 KB
假如你使用 Linux 系统作为办公和开发环境。Trickle 还可以针对每个不同的 Linux 工具进行限流,这样你可以限制 BT 下载的速度,而不影响浏览网页。
Linux下Json格式化神器jq
运维 Geek小A 发表了文章 0 个评论 15830 次浏览 2016-05-13 00:14
对于JSON格式而言,jq就像sed/awk/grep这些神器一样的方便,而且jq没有乱七八糟的依赖,只需要一个binary文件jq,就足矣。
一、安装
Centos:
# yum -y install jq
Ubuntu:
# apt-get -y install jq
二、使用
1、格式化Json
# cat json_test.txt上面的JSON是PHP json_encode之后,echo出来的字符串,很明显,可读性太差。前一阵子写文档,需要将前后段JSON写入文档,我当时是用是网上的JSON格式化工具做的。事实上,jq就可以检查JSON的合法性,并把JSON格式化成更友好更可读的格式:
{"name":"WuDi","location":{"street":"ZhongShanLu","city":"BeiJing","age":"26","country":"CN"},"employees":[{"name":"Mark","division":"DevOps"},{"name":"Lucy","division":"HR"},{"name":"Elise","division":"Marketing"}]}
看到上图,将一团乱麻的JSON格式化成个更可读的形式。其实背后另外检查了JSON的合法性。如果JSON不合法,jq .会报错。我故意写个错误的JSON:
2、JSON解析
如上图json,jq是如何解析JSON,根据key获取value?
{如何根据key获取value?
“key_1”:"value_1",
“key_2”:"value_2",
}
jq '.key'
解析不存在的元素,会返回null
3、JSON nested parse(嵌套解析)
[root@workingh ~]# cat json_test.txt | jq '.location.city'4、JSON parse array
"BeiJing"
[root@workingh ~]# cat json_test.txt | jq '.employees[1].name'5、内建函数
"Lucy"
jq还有一些内建函数如 key,has
key是用来获取JSON中的key元素的:
[root@workingh ~]# cat json_test.txt | jq 'keys'has是用来是判断是否存在某个key:
[
"employees",
"location",
"name"
]
[root@workingh ~]# cat json_test.txt | jq 'has("location")'与JSON相关的我就暂时介绍到这里,希望进一步了解jq并使用的可以去http://stedolan.github.io/jq/manual/.希望了解源码实现的,可以去https://github.com/stedolan/jq;意料之中的事情是作者用来flex和bison来parse json。我们的示例JSON来自参考文献第一篇。用google搜索,kernalpanic中有篇文章介绍了jshon和json.sh提供了另外的思路。
true
[root@workingh ~]# cat json_test.txt | jq 'has("xxoo")'
false
参考:
How to parse JSON string via command line on Linux
Parsing JSON with jq
上G大文件双机互传工具BBCP
运维 chris 发表了文章 0 个评论 4156 次浏览 2016-01-27 11:52
原由
局域网双机拷贝单个大文件 【200G大小】,不要问我是啥! 也不要问我为毛会生成那么大的单文件,事实就是这样!然后就开始了操蛋之旅!再次做下记录备忘!
方法尝试对比
方式一:scp
什么是scp: scp 命令是 SSH中最方便有用的命令了,scp就是secure copy,是用来进行远程文件拷贝的。数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证。 与rcp 不同的是,scp 在需要进行验证时会要求你输入密码或口令。方式二:rsync
速度:刚开始的时候33M/s 持续3分钟左右就跌落到3M左右的传输速度
什么是rsync: rsync是rcp的替代品之一,rsync 是一款高效的远程数据备份和镜象工具,方式三:wget
速度:无响应
什么是wget: wget 是一个经由 GPL 许可的可从网络上自动获取文件的自由软件包。它是一个非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 协议,支持代理服务器以及断点续传功能。 wget 可实现递归下载,即可跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,实现远程网站的镜像。在递归下载时,wget 将页面中的超级链接转换成指向本地文件,方便离线浏览。由于非交互特性,wget 支持后台运行,用户在退出系统后,仍可继续运行。功能强大,设置方便简单。方式四:bbcp
速度:刚开始的时候50M/s 持续3分钟左右就跌落到3M左右的传输速度
什么是bbcp: bbcp 是由SLAC(斯坦福直线加速器中心)的Andy Hanushevsky创立的点对点网络文件拷贝工具。经过简单测试,发现速度比 scp 快了10倍左右,因此推荐大家采用bbcp来取代scp等老家伙 :)附图为2G文件的传输速度:
速度:针对20G的文件进行了测试,测试下来平均下来速度在21M左右,耗时16分钟
总结
不同的应用场景使用不同的工具,单个大文件个人感觉bbcp还是极好极好的!安装bbcp【两端都要安装】
wget http://www.slac.stanford.edu/~abh/bbcp/bin/amd64_rhel60/bbcp -O /usr/bin/bbcp来自http://heylinux.com/archives/2984.html的中文参数解释:
chmod +x /usr/bin/bbcp
-k 保留所有未传输完成的文件,并允许在重试时进行覆盖参考文档:
-a 保留checkpoint信息用于校验文件的完整性
-r 递归传输指定路径下的所有文件
-P 2 每两秒显示传输的进程
-V 打印调试信息
-f 强制清除远程主机上传输失败的数据
-w 设置Disk (I/O) buffers
算法为(window = netspeed/8[i]RTT = 1000Mb/8[/i]74ms = 1000/1000/8*74 = 9.25 M)
对应链接:http://www.slac.stanford.edu/~abh/bbcp/#_Toc332986061
-s 16 设置并发数为16
参考官方建议:http://www.slac.stanford.edu/~abh/bbcp/#_Streams_(-s)
-T "ssh -x -a -p 2222 -oFallBackToRsh=no -i /home/dong.guo/.ssh/id_rsa -l heydevops heylinux.com /usr/bin/bbcp"
指定远端主机的认证方式:
采用-p 2222指定端口;
设置-oFallBackToRsh=no减少ssh响应时间;
设置-i /home/dong.guo/.ssh/id_rsa指定SSH Key;
设置-l heydevops指定登陆用户;
heylinux.com为远程主机地址;
/usr/bin/bbcp为远程主机的bbcp路径;
http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm
http://heylinux.com/archives/2984.html
http://imysql.cn/2008_12_08_using_bbcp_instead_scp
http://linux.cn/article-4527-1-rss.html
http://teachmyself.blog.163.com/blog/static/188814229201242314917237/
阅读分享原文:http://www.dwz.cn/2D55vI
新晋系统分析利器Sysdig
运维 Geek小A 发表了文章 0 个评论 2594 次浏览 2016-01-01 19:19
安装
curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -
curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
apt-get update
apt-get -y install sysdig
常用操作
sysdig 有很多 chisel, chisel 意为 铲子, 可以理解为定位某类问题的工具, sysdig 采用 Lua 编写的。
- []查看 chisel 列表[/]
sysdig -cl
- []查看具体某个 chisel 的提示[/]
sysdig -i spy_logs
- []使用某个 chisel[/]
sysdig -c spy_logs
- []过滤器可以帮助我们从各种输出信息中, 筛选出我们需要的, 比如 [i]proc.name=foo , 如果你记住不了太多过滤器也无妨, 我们可以借助如下命令查看过滤器[/[/i]]
sysdig -l
- []记录定位信息到文本, 以及从文本读取信息[/]
sysdig -w tracefile.capsysdig -r tracefile.dump proc.name=sshd
实战
- []服务器上经常需要查看哪个服务带宽占用使用较高, 特别是被 DDOS 的时候。[/]
sudo sysdig -c topprocs_net
- []查看某个IP的通讯数据,并以ASCII 码输出[/]
sudo sysdig -s2000 -A -c echo_fds fd.cip=127.0.0.1
- []查看非请求 redis-server 的其他请求进程和句柄[/]
sudo sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=redis-server"
- []查看访问该服务器的所有 GET 请求数据[/]
sudo sysdig -s 2000 -A -c echo_fds fd.port=80 and evt.buffer contains GET
- []查看访问该服务器的 SQL 语句[/]
sudo sysdig -s 2000 -A -c echo_fds evt.buffer contains SELECT
- []查看磁盘读写最高的进程[/]
sysdig -c topprocs_file
- []查看延迟最大的系统调用[/]
sysdig -c topscalls_time
- []查看具体文件的操作细节[/]
sysdig -A -c echo_fds "fd.filename=syslog"
- []查看 IO 延迟大于 1ms 的文件[/]
sudo sysdig -c fileslower 1
- []监视某个文件是否被操作, 从安全出发想象空间很大哦[/]
sudo sysdig evt.type=open and fd.name contains /etc更多方法,详情查阅sysdig官网
八大持续集成工具
运维 push 发表了文章 0 个评论 11707 次浏览 2015-12-10 23:05
一、Hudson
Hudson 是一个可扩展的持续集成引擎,主要用于:
- []持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。[/][]监控一些定时执行的任务。[/]
Hudson的特性如下:
- []易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。[/][]易于配置-所有配置都是通过其提供的web界面实现。[/][]集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。[/][]生成JUnit/TestNG测试报告。[/][]分布式构建支持-Hudson能够让多台计算机一起构建/测试。[/][]文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。[/][]插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。[/]
CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。CruiseControl提供了一个Web接口, 可随时查看当前的编译状况和历史状况。
Apache Continuum 是最新的 CI 服务器之一,也是值得关注的一个新进入者。Continuum 的安装和配置很简单:只要下载和释放 ZIP 文件,运行命令行程序,就可以运行了。基于 Web 的界面使得配置项目很容易。而且,还不需要安装 Web 服务器,因为 Continuum 内置了 Jetty Web 服务器。并且,Continuum 可以作为 Windows 服务运行,还在应用程序的某些部分嵌入了上下文敏感的文档,从而提供了很多帮助。Apache Continuum的特性:
- []与Maven 2.x的紧密集成[/][]与Maven SCM的紧密集成,支持Subversion/CVS/Starteam/Clearcase/Perforce[/][]基于web的容易使用的安装和配置接口[/][]Quartz-based scheduling[/][]简单的添加新的项目工程的方法[/][]用于 integration, automation and remoting的XML-RPC interface[/][]邮件提醒和IM(即时通讯)提醒IRC/Jabber/MSN[/]
QuickBuild 是一个持续集成和发布管理的服务器软件,它提供了一个统一的控制台用来管理这些发布的信息。
五、Bamboo
Atlassian Bamboo 是一款持续集成构建服务器软件(Build Server)。Bamboo的特点:
- []简单的用户界面 容易安装 – 顺利的话,5分钟内就可以让运行起来! 自动检测你的设置 – 如果您的Server上使用了Maven,Ant或者Java设置, Bamboo会自动检测他们; [/][]连续的日志 – 监测你的build的colour coded日志;[/][] 容易显示所有项目[/]
Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。主要用于:[list=1][]持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。[/][]监控一些定时执行的任务。[/]六、Jenkins
七、TeamCity
TeamCity是一款功能强大的持续集成(Continue Integration)工具,包括服务器端和客户端,目前支持Java,.Net项目开发。 TeamCity提供一系列特性可以让团队快速实现持续继承:IDE工具集成、各种消息通知、各种报表、项目的管理、分布式的编译等等,所有的这些,都是 让你的团队快速享有持续继承带来的效率提升、高质量的软件保障。
八、CI-Eye
CI-Eye 是一个强大的持续集成构建,无需安装和设置,CI-Eye 通过 REST API 跟很多不同的 CI 服务器交互,当前支持 Hudson, Jenkins, 以及 TeamCity. CI-Eye 在一个独立的 Web 应用中运行。
系统管理中三大利刃(htop glances dstat)
运维 Geek小A 发表了文章 0 个评论 3493 次浏览 2015-11-19 23:36
工欲善事情,必先利其器,生产环境中的服务器在处理请求并生成回应数据的时间主要消耗在服务器端,包括了众多的环节,如何全面了解我们linux服务器的CPU使用率、使用时间、内存占用比例、磁盘IO数据、网络相关数据等等众多指标,保证我们的linux服务器顺利完成每一个请求,怎能没有几个趁手的利刃,而今天就让我们见识一下系统管理中三大利刃。
一、七星绝命剑 [top]
相传一把三尺长的软剑,叫七星绝命剑,剑刃上嵌着七颗星状的暗器,一剑刺出,使剑人的内力劲透剑身之时,那七颗星状的暗器便飞脱疾出,出其不意地取人性命,(见古龙《吸血娥》)。而htop便是我们今天所讲的第一把利刃,和上面传说中的七星绝命剑类似,有着七个最常用命令,让我们先来看一下htop的真面目:
从上图可以看出,相较于CentOS发行版上系统自带的top工具,htop工具无论是信息内容丰富程度,还是在用户界面的友好度上,都有着无可比拟的优势,而且htop工具支持交互式命令,下面让我们来认识一下htop工具常见的七个交互式命令。
- []u :具有过滤功能,能显示用户指定用户的进程[/][]s :选定某个进程后,使用该命令可以跟踪该进程所发起的系统调用[/][]l :选定某个进程后,使用该命令可以显示该经常打开的文件有那些[/][]t :直接使用该命令可以显示进程的层级机构[/][]a :使用该命令可以设定某个进程的cpu亲缘性[/][]k :使用该命令可以结束某个指定进程[/][]h :该工具还有众多功能,使用该命令可以获取该工具其他帮助信息[/]
以上七个命令就是htop工具最常用的命令,掌握好这七个命令就好比拥有了七星绝命剑的七颗星状暗器,杀人于无形,旨在一瞬间,但是如何把握这七个形状暗器的力度和功用,需要我们对htop有着更深入的理解,接下来我们详细介绍htop的众多输出信息的详解
- []CPU usage bar:该行主要显示CPU使用情况,而且不光这些,htop还为将不同颜色来区分是使用情况,蓝色的表示low-prority使用,绿色的表示normal使用情况,红色的表示kernel使用情况,青色的表示vistualiz使用情况。[/][]Memory bar:该行主要表示内存使用情况,同样的htop使用了不同颜色来区分是使用情况,绿色的表示已经使用内存情况,蓝色的表示用于缓冲的内存使用情况,黄色的表示用于缓存的内存使用情况。[/][]Swap bar:该行主要显示交换分区使用情况,当你发现你的交换分区已经派上用场的时候,说明你的物理内存已经不足,需要考虑增加内存了。[/][]PID:表示进程号[/][]USER:发起该进程的用户名[/][]PRI:进程优先级[/][]NI:nice值[/][]VIRT:进程需要的虚拟内存[/][]RES:常驻内存,也就是物理内存[/][]SHR:共享内存[/][]S:进程的运行状况:R表示正在运行,S表示休眠,Z表示僵死状态[/][]CPU%:占用的CPU使用率[/][]MEM%:物理内存使用率[/][]TIME%:占用CPU的累计时长[/][]Command:进程启动的启动命令名称即路径[/]
glances并不是CentOS发行版默认安装的工具,需要在epel源里面安装使用,首先让我们先来认识一下glances吧,如下图:相传君子剑剑身乌黑,没半点光泽,就似一段黑木一般,和平常的宝剑不同,这剑既无尖头,又无剑锋,圆头钝边,倒有些似一条薄薄的木鞭,但寒气逼人,而且锋锐异常。此剑与淑女剑一模一样,大小长短,全无二致,双剑的材料完全相同,都具有极强的磁性,如果放的距离较近,双剑会自动吸在一起此剑后落到少年杨过手中,与小龙女手里的淑女剑联剑出击,以玉女素心剑法威震天下,(见《神雕侠侣》)。而glances就是我们要说的第二把利刃,与相传的君子剑有相似之处,glances支持客户端/服务器模式,远程模式使用将会有奇效,接下来我们认识这把君子淑女剑吧。
glances工具支持的选项众多,我们先来认识一下glances的常用选项:
- []b :以byte/s为单位显示网卡设备[/][]d :禁用或者关闭显示磁盘IO功能模块[/][]f :通常和-o一起使用设置输出文件位置即格式[/][]o :指明输出的格式,通常为{CSV|HTML}[/][]m :关闭mount功能模块[/][]n :关闭网络功能模块[/][]t :指明刷新时长,默认为3秒[/][]1 :单独显示每颗CPU相关的负载数据信息[/]
服务端命令:glances -s -B IPADDRESS(指定用于监听的本地地址)客户端命令:glances -c IPADDRESS(指明连入的服务器地址)以上就是glances工具常用选项,同时glances工具还支持在工作界面下直接按相对应的选项就可以关闭或者设置相关功能的,上面曾说过glances工具支持C/S模式,那它是如何在C/S模式下工作的那? 首先:server端以监听模式启动glances;其次:client端以远程模式启动glances远程连入指定服务器,并获取server上相关的性能数据。
三、绝世好剑 [dstat]glances所显示的丰富信息包括了系统运行的众多模块,包括了cpu相关模块,多核情况下每个核心的负载情况,内存使用模块,交换分去使用情况,网络使用状况,磁盘IO使用情况,以及各分区挂载情况,我相信通过了解以上系统运行期间的状况,一定能判断出当前系统运行是所出现的问题,帮助我们找出问题所在。
相传当初傲日并非打算铸造「绝世好剑」,而是要铸造「败亡之剑」,可惜「败亡」的铸造过程太过邪异,每次铸剑,均会造成人命伤亡,故此傲家中人弃「败亡」而改铸「绝世」。铸剑的最后步骤是以三毒之血「贪」(剑贪之血),「瞋」(步惊云之血),「痴」(断浪之血)炼制。但所铸成的只是威力神髓所在的真元,而真正的剑体已藏于千万铸好的绝世好剑中,绝世好剑本身有吸摄天地灵气之能,同样也可吸收别人功力转为己用。位列当世十大神兵之一,见《风云》。而我们今天所说的第三把系统管理的兵刃,于绝世好剑有过之而不及,绝世好剑需要集三毒之血(剑贪之血)、(步惊云之血)、(断浪之血)炼制而成,而dstat整合了vmstat、iostat、netstat、ifstat四款工具的功能于一身,功能无比强大,首先来看看这个利刃的庐山真面目,如下图:
通过上图可以更直观的看出系统各功能模块的使用状况,而且dstat是CentOS默认提供的一款工具,并且使用起来十分的灵活,可以通过不同的组合来显示出我们需要的功能模块,下面来认识一下dstat这款工具的主要选项有那些:
- []c :显示CPU相关的统计数据[/][]d :显示磁盘相关的统计数据[/][]g :显示Page相关的速率数据[/][]i :显示中断相关的统计数据[/][]l :显示load average相关的统计信息[/][]m:显示内存相关的统计信息[/][]n :显示网络相关的统计数据速率信息[/][]N :指定接口[/][]p :显示进程相关的统计数据[/][]r :显示IO请求的速率[/][]s :显示swap交换分区的相关数据[/][]y :显示系统相关的数据包括中断和进程间切换等相关信息[/][]top-cpu:显示最占用CPU的进程[/][]top-bio:显示最消耗块级别IO的进程[/][]top-time:显示最占用CPU时长的进程[/][]top-io:显示最占用io的进程[/][]top-mem:显示最占用内存的进程[/][]ipc:显示进程间通信相关的速率数据[/][]tcp:显示tcp套接字相关的数据[/][]udp:显示udp套接字的相关数据[/][]raw:显示raw套接字相关数据[/][]unix:显示unix sock接口相关的统计数据[/][]a :相当于-cdngy[/]
以上就是dstat工具的常用选项,之所以说该使用该工具十分领过是因为它即可以加上众多的参数来显示系统运行时丰富的各个功能模块的状态信息,如下图:
同时又可以根据自己的需要来单独显示某一个功能模块的信息或者显示当前系统最占用CPU的进程,如下图:
有人的地方就有江湖,运维的你的趁手武器是什么?
以上就是系统管理中的三把利刃,只要精通任何一个工具,都有助于我们更加深入的了解我们系统运行过程中的问题和不足,及时的发行并解决这些问题,但同时我们也应该认识到,所谓的这些工具都是通过整合或分析/proc/这个伪文件系统,为什么说它是伪文件系统那,因为它只存在内存当中而不占用外存空间,它是以文件系统的方式访问系统内核数据的操作提供接口,要想使用好以上三个工具,还需要更深入的理解系统是究竟怎么运行起来的,以及系统运行的原理是什么,当我们真的理解了这些,我想那个时候就是我们自己制作工具开始,正所谓真正的高手也都是制作工具的高手,就如同江湖里说的最好的境界乃是无剑胜有剑,摘叶飞花皆可伤人。
devops工具大全
运维 Geek小A 发表了文章 0 个评论 11504 次浏览 2015-10-27 01:12
包&产品管理
- []Chocolatey:Chocolatey是Windows下一款开源的命令行包管理软件 ,简单说这相当于Windows的apt-get;[/][]FPM:全称是Effing package management,他就是个软件包管理器,极大的缓解了多个平台构建软件包(deb,rpm,等)的痛苦;[/][]Herd:是一个基于Twitter Murder的文件分布系统;[/][]Vagrant Cachier:Vagrant的一个插件,用于缓存包方面的管理;[/][]WiX Toolset:提供一组最强大的工具集来帮助你创建Windows安装包。该工具集从XML源代码构建你的Windows安装程序包,可以无缝集成到构建过程;[/][]Boxstarter:利用Chocolatey包管理工具来自动化安装软件和创建可重复、脚本化的Windows环境;[/][]Elita:Elita是一个利用git和salt进行持续部署(部署作为服务)和API-driven基础设施的引擎/框架;[/][]Fig:主要用来跟Docker一起来实现的快速隔离的开发环境;[/][]Pulp:Pulp是一个用来管理软件库以及相关内容的平台;[/][]Veewee:Veewee是一个开源工具,用来创建和配置轻量级、可再生、便捷式虚拟机环境。[/]
日志记录&监控
- []AmonOne:现代化的自托管服务器监控工具;[/][]Anthracite:一个事件/日志改变/管理应用程序;[/][]collectd3:是一个可视化的collectd系统性能统计工具;[/][]collectd:是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制;[/][]Cronitor:监控cron工作,守护进程,和其他的一切;[/][]Datascope:可视化使用pg_stat_statements postgresql查询性能;[/][]Diamond:是一个基于Python的守护程序,主要用来收集系统指标,并且把它们发布到Graphite(或其它)工具中;[/][]Errbit:是一个用于收集和管理程序错误的开源工具;[/][]FnordMetric:是一个基于redis/ruby的实时事件跟踪应用,是个收集和可视化时间序列数据的框架,用户可以在几分钟内创建漂亮的实时分析仪表盘;[/][]Ganglia:Ganglia是一个跨平台可扩展的、高性能计算系统下的分布式监控系统,如集群和网格;[/]
云&PAAS环境
进程管理
- []Bouncy:可以作为HTTP路由主机;[/][]Supervisor:是一个客户端服务器系统,允许用户监控和控制类Unix操作系统上的进程数;[/][]God:由Ruby实现的进程监控框架。[/][]bluepill:bluepill[/]
服务发现
- []Consul:简化了分布式环境中的服务的注册和发现流程,通过HTTP或者DNS接口发现。支持外部SaaS 提供者等;[/][]etcd:是一个高可用的Key/Value存储系统,主要用于分享配置和服务发现;[/][]Apache ZooKeeper:是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题;[/][]Weave:创建一个虚拟网络并连接到部署在多个主机上的Docker容器。[/]
源代码管理
持续集成和交付
- []Buildbot:是一个系统的自动化编译/测试周期最需要的软件,以验证代码的变化。通过自动重建和测试每次发生了变化的东西,在建设迅速查明之前,减少不必要的失败;[/][]Cabot:是一个开源,自我托管的监控工具;[/][]Jenkins:是基于Java开发的一种持续集成工具,用于监控持续重复的工作;[/][]Hubot:基于脚本具有很高的灵活性,任何人都可以编写自己的脚本来扩展基本功能;[/][]Hudson:是一个可扩展的持续集成引擎,主要用于:持续、自动地构建/测试软件项目、监控一些定时执行的任务;[/][]CruiseControl.rb:是一个持续集成服务器,它可以让团队里的每个人随时了解项目的健康状况和进度;[/][]OpsBot:是一个开源的、可插入的改善通信的机器人。[/]
配置管理
希望大家有收获,查看原文可以获取到更多了解,原文中列表会持续更新。
翻译原文地址:https://dev-ops-tools.zeef.com/richard.kraayenhagen#block_41685_process-management