1. 运维技能工具箱
Bootstrapping: Kickstart、Cobbler、rpmbuild/xen、kvm、lxc、Openstack、 Cloudstack、Opennebula、Eucalyplus、RHEV
配置类工具: Capistrano、Chef、puppet、func、salstack、Ansible、rundeck
监控类工具: Cacti、Nagios(Icinga)、Zabbix、基于时间监控前端Grafana、Mtop、MRTG(网络流量监控图形工具)、Monit
性能监控工具: dstat(多类型资源统计)、atop(htop/top)、nmon(类Unix系统性能监控)、slabtop(内核slab缓存信息)、sar(性能监控和瓶颈检查)、sysdig(系统进程高级视图)、tcpdump(网络抓包)、iftop(类似top的网络连接工具)、iperf(网络性能工具)、smem)(高级内存报表工具)、collectl(性能监控工具)
1.1 Application Performance Monitor (APM)应用性能监测软件
mmtrix(最全面的分析工具)、alibench
IBM Maximo® Application Suite APM 功能---专业软件
https://www.wbolt.com/apm-tools.html
APM监控 | 应用性能监控工具 | 应用性能管理 - Site24x7
十大开源APM工具
APM执行密集的监视,收集日志,并将其转化为见解,从而将你的应用程序的性能提升到一个新水平。
Apache Skywalking APM是Github最受欢迎的开源工具之一。 目前,它有14.7万颗星,4.3万个叉,并有250个贡献者。 它在Apache License 2.0下。Apache SkyWalking非常适合处理微服务,云原生和基于容器的架构的团队。 它的最初设计是用于跟踪应用程序,但现在已演变为具有监视和诊断功能的APM工具。
Pinpoint。 目前,它有10.8万颗星,3.3万个叉,并且有近一百位贡献者。 它是用于大型分布式系统的开源APM工具。 它用Java和PHP编写,可帮助开发人员监视Java代码,是企业部署的绝佳选择。
JavaMelody也受Apache License 2.0的约束,目前有2.3k个星标,639个fork和21个贡献者。 它可以在QA和生产环境中监视Java和Java EE应用程序。
Stagemonitor是用于Java服务器应用程序的开源APM工具。 根据Github的说法,它拥有1.6万颗星,269个分叉和25个贡献者。 它具有一组工具,用于测试,生产和监视基于Java的Web应用程序。 此外,它的监视代理程序还支持集群应用程序堆栈。
Scouter最近发布了其版本2.10,并展示了其在绩效评估中的指标机制。 意思是,它的功能围绕着涉及用户,例如,活跃,最近)的指标。它还显示了服务中的指标,例如活动服务,事务处理系统(TPS),响应时间,应用程序配置文件(例如,方法配置文件,SQL配置文件,外部调用配置文件等)。 另外,它提供有关资源(例如,CPU,内存,网络和堆使用情况,连接矿池等)的度量。
App Metrics是一个开放源代码和跨平台的APM工具。 它是一个.NET库,用于记录指标并在.NET Core和.NET框架上运行。 它有1.7万颗星,217个分叉和35个来自Github的贡献者。
应用程序度量标准衡量应用程序度量标准,包括请求率,用户登录次数(在任何时间范围内),执行数据库查询所花费的时间,可用内存量等等。
Codespeed是一种APM工具,用于监视基于Python的Web应用程序。 它对代码进行深入的性能分析。 CPython,PyPy和Twisted也使用Codespeed进行性能监视。 目前,它有513颗星,106个叉和36个贡献者。
进程监控: mmonit、Supervisor
日志系统: Logstash、Scribe
绘图工具: RRDtool、Gnuplot
流控系统: Panabit、在线数据包分析工具Pcap Analyzer
安全检查: chrootkit、rkhunter
PaaS: Cloudify、Cloudfoundry、Openshift、Deis (Docker、CoreOS、Atomic、ubuntu core/Snappy)
Troubleshooting: Sysdig 、Systemtap、Perf
持续集成: Go、Jenkins、Gitlab
磁盘压测: fio、iozone、IOMeter(win)
Memcache Mcrouter(scaling memcached)
Redis Dynomite、Twemproxy、codis/SSDB/Aerospike
MySQL 监控: mytop、orzdba、Percona-toolkit、Maatkit、innotop、myawr、SQL级监控mysqlpcap、拓扑可视化工具
MySQL基准测试: mysqlsla、sql-bench、Super Smack、Percona's TPCC-MYSQL Tool、sysbench
MySQL Proxy: SOHU-DBProxy、Altas、cobar
MySQL逻辑备份工具: mysqldump、mysqlhotcopy、mydumper、MySQLDumper 、mk-parallel-dump/mk-parallel-restore
MySQL物理备份工具: Xtrabackup、LVM Snapshot
MongoDB压测: iibench&sysbench
2. 运维管理工具箱
重点介绍运维流程管理、运维发布变更、运维监控告警三个方面的具体工具,可作为工作日记使用。
第一类:运维流程管理工具
1.发布变更流程管理工具
做为系统接口与其他角色的工作衔接。并提供审批环节控制发布变更的风险。流程管理工具并不负责具体的业务操作的执行,只是作为单据系统跟踪流程和确保闭环。
2.告警和突发管理工具
体现业务受损的告警自动建单管理。人工确认之后升级为突发单。通过建单管理告警和突发确保流程的闭环,以及每次故障都能够总结出经验,并未度量业务的可用性提供KPI。
第二类:运维发布变更工具
1.版本管理工具(数据库)
所有的发布应该以版本管理为起点。研发给的版本包先入版本管理工具,再从版本管理工具分发到现网发布。杜绝 rsync 一台服务器发布另外一台的做法。
2.配置管理工具(数据库)
版本加配置等于现网每台机器的状态。最粗粒度的配置管理是到 IP 级别,相当于对机器做资产管理,分组到不同的业务,模块和大区等业务概念上。细粒度一点会管理到进程以及进程的相关配置。
3.配置和版本下发工具
把指定的版本,结合配置好的配置下发到现网的机器上。不同的版本和配置方式需要完全不同的下发方式。以 ssh/fabric 为代表的下发方式是以脚本为中心的。以 puppet/chef 为代表的下发方式是以配置为中心的。
4.现网状态同步工具
为了规避现网状态漂移,与管理工具内的记录不一致。需要有一个工具定时上报现网的实际状况。
5.服务调度工具
发布变更经常需要一个串行的流程,先做A模块,再做B模块。很多机器的时候,需要把能并发的操作并发执行,不能并发的操作确保串行执行。同时很多发布变更流程需要操作管理范围外的服务,比如云端的DNS服务器记录等。这就需要有一个服务调度工具统一调度配置和版本下发工具,流程单据工具,以及其他系统的API接口共同组装成一个流程。
6.资源管理和隔离工具
以xen/kvm为代表的工具让运维可以更灵活的切割资源。比如虚拟机的快速起停,ip在idc内的漂移等。以 lxc/docker 为代表的工具让运维可以进一步的切割资源到进程级别。资源隔离代理的细粒度的资源控制可以获得更好的资源利用率,以及更容易进行可伸缩的资源配置。
7.发布变更统一界面
包装所有的下层工具,提供简单的界面完成标准化的发布变更操作。
第三类:运维监控告警工具
1.采集工具
一般是采集日志文件,也可以是定时轮询 DB 或者其他系统的接口。流行的开源方案是 logstash。
2.收集工具
采集工具上报给收集工具。或者由开发直接修改代码上报指标给收集工具。流程的开源方案还是 logstash。
3.统计入库工具
上报可能是每次调用就上报一次,统计工具负责统计出一分钟内的次数。上报也可能是每5秒上报一次数值,统计工具负责统计出一分钟内的最大值。统计工具的存在是为了上报的方便。流行的开源方案是 statsd,也有大公司基于 storm 来做二次开发的。
4.时间序列数据库
所有定时指标会落地到数据库里。监控告警所需要的数据库需要能够支撑非常大的数据量,但是并没有很严格的 ACID 要求。
5.运维事件数据库
记录所有的告警。包括从其他系统获得告警,以及对现网的所有变更操作记录。这些数据用于支撑告警的原因定位。
6.指标异常检测工具
基于数学模型发现指标是否与过去的稳定模式背离,而推测出现网状态的变化。
7.拨测工具
定时 PING 或者 HTTP GET,模拟实际用户发现服务是否中断,产生告警。同时也产生指标上报给收集系统。拨测又分为本地拨测,和远程拨测。本地拨测可以用于发现磁盘只读等本机告警。远程拨测可以模拟用户的地理分布,把网络的链路状况也包含在拨测覆盖的范围内。
8.告警收敛工具
综合所有来源的告警,进行频率收敛,根源分析。统一汇总成报告催促人工修复。
9.告警自动修复工具
接受告警进行自动化的处理。帮运维完成固定的故障机下架退库等操作。或者在业务本身没有做高可用的情况下,做故障机替换,ip漂移等现网修复操作,一定程度地提高业务可用性。
10.告警通知工具
重要的告警需要升级为电话。需要有高可用的电话,短信,微信等通知接口。
11.监控告警统一界面
屏蔽下层各种工具,提供统一的agent安装,指标采集设置,指标曲线展示,告警查询的界面。一个地方知道现网的所有的问题。
3. 运维工具选型
1. zabbix
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
- zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
- Zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows (2000/2003/XP/Vista)等系统之上。//zabbix可以监控windows
Zabbix server可以单独监视远程服务器的服务状态;同时也可以与Zabbix agent配合,可以轮询Zabbix agent主动接收监视数据(agent方式),同时还可被动接收Zabbix agent发送的数据(trapping方式)。