背景
基础架构已经在公司内部推广Flink作为新一代流式计算引擎 ,但由于历史原因和学习成本问题部分业务线尚未完成升级,部分业务不能仍然基于Mesos+Docker+Marathon+JStorm来构建实时计算应用。
[username@hostname ~]$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5dabb6db5e23 docker2.x.cn:port/jstorm/jstorm-supervisor:2.0.1 "/bin/sh -c 'sh -x /u" 4 months ago Up 4 months mesos-7a72fc35x 7081bf2f80f6 docker2.x.cn:port/jstorm/jstorm-supervisor:2.0.1 "/bin/sh -c 'sh -x /u" 4 months ago Up 4 months mesos-7a72fc35y 6d3a3ba3eec7 docker2.x.cn:port/jstorm/jstorm-supervisor:2.0.1 "/bin/sh -c 'sh -x /u" 4 months ago Up 4 months mesos-7a72fc35z
JStorm计算框架、数据、集群等任何一个环节出现问题诊断起来还是比较耗费时间的,尤其是在docker中进行异常分析。高峰期最会出现一个波峰,准备看看是不是业务代码引起来的,登入docker中执行top和clear发现都无法执行:
[username@hostname ~]$ sudo docker exec -it 5dabb6db5e23 /bin/bash [root@hostname /]# top TERM environment variable not set. [root@hostname /]# clear TERM environment variable not set. [root@hostname /]# info info: Terminal type `dumb' is not smart enough to run Info.
终端修复
可以看到系统提示当前终端是哑终端,什么是哑终端大概提一下。通常使用虚拟终端类型主要包括TELETYPE、DUMB、ANSI、VT52和VT100共5种终端类型,其中哑终端相对于其他比较“聪明”的计算机终端而言的是功能较为有限的计算机终端,不能执行诸如“删行”( clearing a line)、“清屏”(clearing ascreen)或“控制指针位置”(control cursor position)。
为了解决上述问题,将TERM设置成xterm即可:
[root@hostname /]# export TERM=xterm [root@hostname /]# top