日志
tsuru会收集每个应用的标准输入和标准错误,使得调试问题更加容易。要使用日志,请确保你应用的日志发送到了stdout和stderr。
监控日志
要看到应用的日志。可以使用tsuru app-log
命令:
$ tsuru app-log -a <appname>
2014-12-11 16:36:17 -0200 [tsuru][api]: ---> Removed route from unit 1d913e0910
2014-12-11 16:36:17 -0200 [tsuru][api]: ---- Removing 1 old unit ----
2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Starting gunicorn 18.0
2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Listening at: http://0.0.0.0:8100 (51)
2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Using worker: sync
2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Booting worker with pid: 60
2014-12-11 16:36:28 -0200 [tsuru][api]: ---> Removed old unit 1/1
缺省只会显示日志的最后十行。可以通过-l/—lines
参数去查看更多的日志:
$ tsuru app-log -a <appname> --lines 100
过滤
你可以通过单元或者源去过滤日志。按单元过滤,可以使用-u/—unit
参数:
$ tsuru app-log -a <appname> --unit 11f863b2c14b
2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Starting gunicorn 18.0
2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Listening at: http://0.0.0.0:8100 (51)
2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Using worker: sync
.. 参阅:: 要获得单元id,可以使用tsuru app-info -a <appname>
命令。
可以通过进程或者tsuru api发送日志。通过源过滤,需要使用-s/—source
参数:
$ tsuru app-log -a <appname> --source app
2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Starting gunicorn 18.0
2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Listening at: http://0.0.0.0:8100 (51)
2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Using worker: sync
$ tsuru app-log -a <appname> --source tsuru
2014-12-11 16:36:17 -0200 [tsuru][api]: ---> Removed route from unit 1d913e0910
2014-12-11 16:36:17 -0200 [tsuru][api]: ---- Removing 1 old unit ----
实时日志
tsuru app-log
有一个-f/—follow
参数,可以持续等待新的日志而不停止。有了这个参数就可以看到应用的实时行为,这对于调试问题很有帮助。
$ tsuru app-log -a <appname> --follow
可以通过Ctrl-C结束回话。
局限
tsuru原生日志系统设计的目的是快速且能显示应用最近的日志。tsuru不会保存应用所有类型的日志。想要保存所有的日志,就得适用外部的日志收集工具。
使用外部的日志收集器
你也可以将日志发给外部的日志收集器。tsuru使用Syslog协议。要使用Syslog,你应当在应用中设置以下的环境变量:
TSURU_SYSLOG_SERVER
TSURU_SYSLOG_PORT (probably 514)
TSURU_SYSLOG_FACILITY (something like local0)
TSURU_SYSLOG_SOCKET (tcp or udp)
可以用tsuru env-set
命令在应用中设置这些环境变量:
$ tsuru env-set -a myapp TSURU_SYSLOG_SERVER=myserver.com TSURU_SYSLOG_PORT=514 TSURU_SYSLOG_FACILITY=local0 TSURU_SYSLOG_SOCKET=tcp