专栏首页学习之旅Openstack侦探故事2

Openstack侦探故事2

原因:2017年2月6日 星期一 翻译外文blog。 说明:仅供个人学习用途。

Episode 2

Episode1的Openstack侦探故事中,我被叫到犯罪现场:我们的基于OpenStack的私有云中心器件。什么人或什么东西造成了我们的虚拟负载均衡可以拍动高度可用的IP地址。tcpdump显示我有个VRRP包具有时间延迟。这些延迟源于第一个平衡器,主负载均衡器。

在发现罪魁祸首可能是藏在里面的虚拟机,我取来我的助理sysdig我们ssh登录到为loadblancer01。与sysdig一起,开始提出问题:非常激烈,不舒服的问题,终于到达深层次。

sysdig是一个相对较新的工具,基本上所有的系统调用的痕迹和使用lua脚本–称为凿子–捕获系统调用序列的结论。总的来说,它就像tcdump一样被系统调用。因为每一个想要做有利事情的进程都需要被系统调用,你的系统的行为非常详细的视图。sysdig发展成锋利的瑞士军刀,你应该尝试一下它;特别是,读这三篇博客了解sysdig的能力,相信我。

sysdig是好的侦探助手,将其立即投入工作,把所有的问题和答案记录在一个文件中。 $ sysdig -w transcript 我对发送指令的系统命令,即实际发送keepalived的网络包问题的指令很感兴趣。

在一个进程被系统调用时,进程暂停直到系统调用已由内核完成,并且只有在执行的过程中恢复。

我感兴趣的是调用,即从用户进程到内核的事件方向。 $ sysdig -r transcript proc.name=keepalived and evt.type=sendmsg and evt.dir='>' 这引发了相当多的证据。但我想找到时间差距大于1秒的。我把我的夹克里的Lua从我隐蔽枪套里面拿出,在两条发送信息系统调用之间快速发射了一个凿子。

$ sysdig -r transcript -c find_time_gap proc.name=keepalived and evt.type=sendmsg and evt.dir='>'
370964 17:01:26.375374738 (5.03543187) keepalived > sendmsg fd=13(192.168.205.8->224.0.0.18) size=40 tuple=0.0.0.0:112->224.0.0.18:0

找到了!一个大于5秒的延迟出现在我眼前,我仔细的观看事件号为370964的事件:

$ sysdig -r transcript proc.name=keepalived and evt.type=sendmsg and evt.dir='>' | grep -C 1 370964
368250 17:01:21.339942868 0 keepalived (10400) > sendmsg fd=13(192.168.205.8->224.0.0.18) size=40 tuple=0.0.0.0:112->224.0.0.18:0
370964 17:01:26.375374738 1 keepalived (10400) > sendmsg fd=13(192.168.205.8->224.0.0.18) size=40 tuple=0.0.0.0:112->224.0.0.18:0
371446 17:01:26.377770247 1 keepalived (10400) > sendmsg fd=13(192.168.205.8->224.0.0.18) size=40 tuple=0.0.0.0:112->224.0.0.18:0

现在清晰了,上文中第一行与第二行,远大于1秒的延迟。引起keepalived发送数据延迟的罪犯就隐藏在虚拟机之中,但是,它是谁?

  • 经过排除一些无关的旁观者,我发现了这个:$ sysdig -r transcript | tail -n +368250 | grep -v "keepalived\|haproxy\|zabbix" 369051 17:01:23.621071175 3 (0) > switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369052 17:01:23.621077045 3 (7) > switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369053 17:01:23.625105578 3 (0) > switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369054 17:01:23.625112785 3 (7) > switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369055 17:01:23.628568892 3 (0) > switch next=25978(sysdig) pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369056 17:01:23.628597921 3 sysdig (25978) > switch next=0 pgft_maj=0 pgft_min=2143 vm_size=99684 vm_rss=6772 vm_swap=0 369057 17:01:23.629068124 3 (0) > switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369058 17:01:23.629073516 3 (7) > switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369059 17:01:23.633104746 3 (0) > switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369060 17:01:23.633110185 3 (7) > switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369061 17:01:23.637061129 3 (0) > switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369062 17:01:23.637065648 3 (7) > switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369063 17:01:23.641104396 3 (0) > switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369064 17:01:23.641109883 3 (7) > switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369065 17:01:23.645069607 3 (0) > switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369066 17:01:23.645075551 3 (7) > switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369067 17:01:23.649071836 3 (0) > switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369068 17:01:23.649077700 3 (7) > switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369069 17:01:23.653073066 3 (0) > switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369070 17:01:23.653078791 3 (7) > switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369071 17:01:23.657069807 3 (0) > switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369072 17:01:23.657075525 3 (7) > switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369073 17:01:23.658678681 3 (0) > switch next=25978(sysdig) pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0 369074 17:01:23.658698453 3 sysdig (25978) > switch next=0 pgft_maj=0 pgft_min=2143 vm_size=99684 vm_rss=6772 vm_swap=0 端口号为0与7后的进程任务在消耗虚拟CPU0与7?这些低进程ID指示内核线程!我使用sysdig的管理员权限重复检验了,只为了保证我的猜想是对的。 内核,犯罪者?这个努力工作,永远可靠的家伙?不,我不敢相信。必须有更多。顺便说一下,虚拟机没有被载入。那么虚拟机的内核在做什么……除了…什么都没做?也许它在等待IO!会是这样吗?因为所有的虚拟机硬件,嗯,虚拟的,IO等待只能在裸机的水平。 我离开loadbalancer01的裸机node01。在路上,我试图让我的头思考正在发生的事情。这是怎么回事?这么多的代理,这么多的事情发生在阴影。这么多假嫌疑犯。这不是一个正常的情况。幕后有更恶毒的事情发生。我必须找到它…

后文:Openstack侦探故事3

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Angularjs项目(2)

    原因:2016年11月23日 星期三 继Angularjs项目(1)后接着总结开发的经验与遇到的问题。 说明:本记录主要介绍bower与MVC框架。

    ZHaos
  • 数据结构

    原因:2018年4月7日 星期六 说明:毕业近2年,系统的整理一下相关数据结构之所学,有基础,有拓展。

    ZHaos
  • Ceph CookBook

    ZHaos
  • 1.15 克隆虚拟机

    克隆前,需先关闭虚拟机 选择“虚拟机”,在选择“管理”,在“克隆”,创建链接克隆,改名为hf-02 在vi /etc/sysconfig/network-scr...

    运维小白
  • MVC、MVP以及Model2[上篇]

    对于大部分面向最终用户的应用来说,它们都需要具有一个可视化的UI与用户进行交互,我们将这个UI称为视图(View)。在早期,我们倾向于将所有与视图相关的逻辑糅合...

    蒋金楠
  • 【词向量】Hsigmoid加速词向量训练

    导语 PaddlePaddle提供了丰富的运算单元,帮助大家以模块化的方式构建起千变万化的深度学习模型来解决不同的应用问题。这里,我们针对常见的机器学习任务,提...

    用户1386409
  • Ubuntu环境编辑OpenJDK11源码

    版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boli...

    程序员欣宸
  • DVWA笔记(一)----环境搭建 "渗透测试学习笔记"

    在国庆这么美好的假期,作为一个web萌新,我决定在实验室度过,来学习下DVWA(Damn Vulnerable Web Application),那么这玩意是个...

    用户5878089
  • 面试题-----五大框架总结!!!

    3、再被Struts调用,通过Struts2的核心配置文件决定调用某个action

    框架师
  • 华为路由交换技术 | 华为命令行简介

    [ ]undo info-center enable 关闭信息中心 ,防止弹出日志

    网络技术联盟站

扫码关注云+社区

领取腾讯云代金券