• 日志
  • 监控日志
    • 过滤
    • 实时日志
    • 局限
  • 使用外部的日志收集器

    日志

    tsuru会收集每个应用的标准输入和标准错误,使得调试问题更加容易。要使用日志,请确保你应用的日志发送到了stdout和stderr。

    监控日志

    要看到应用的日志。可以使用tsuru app-log命令:

    1. $ tsuru app-log -a <appname>
    2. 2014-12-11 16:36:17 -0200 [tsuru][api]: ---> Removed route from unit 1d913e0910
    3. 2014-12-11 16:36:17 -0200 [tsuru][api]: ---- Removing 1 old unit ----
    4. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Starting gunicorn 18.0
    5. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Listening at: http://0.0.0.0:8100 (51)
    6. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Using worker: sync
    7. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Booting worker with pid: 60
    8. 2014-12-11 16:36:28 -0200 [tsuru][api]: ---> Removed old unit 1/1

    缺省只会显示日志的最后十行。可以通过-l/—lines参数去查看更多的日志:

    1. $ tsuru app-log -a <appname> --lines 100

    过滤

    你可以通过单元或者源去过滤日志。按单元过滤,可以使用-u/—unit参数:

    1. $ tsuru app-log -a <appname> --unit 11f863b2c14b
    2. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Starting gunicorn 18.0
    3. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Listening at: http://0.0.0.0:8100 (51)
    4. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Using worker: sync

    .. 参阅:: 要获得单元id,可以使用tsuru app-info -a <appname>命令。

    可以通过进程或者tsuru api发送日志。通过源过滤,需要使用-s/—source参数:

    1. $ tsuru app-log -a <appname> --source app
    2. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Starting gunicorn 18.0
    3. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Listening at: http://0.0.0.0:8100 (51)
    4. 2014-12-11 16:36:22 -0200 [app][11f863b2c14b]: Using worker: sync
    5. $ tsuru app-log -a <appname> --source tsuru
    6. 2014-12-11 16:36:17 -0200 [tsuru][api]: ---> Removed route from unit 1d913e0910
    7. 2014-12-11 16:36:17 -0200 [tsuru][api]: ---- Removing 1 old unit ----

    实时日志

    tsuru app-log有一个-f/—follow参数,可以持续等待新的日志而不停止。有了这个参数就可以看到应用的实时行为,这对于调试问题很有帮助。

    1. $ tsuru app-log -a <appname> --follow

    可以通过Ctrl-C结束回话。

    局限

    tsuru原生日志系统设计的目的是快速且能显示应用最近的日志。tsuru不会保存应用所有类型的日志。想要保存所有的日志,就得适用外部的日志收集工具。

    使用外部的日志收集器

    你也可以将日志发给外部的日志收集器。tsuru使用Syslog协议。要使用Syslog,你应当在应用中设置以下的环境变量:

    1. TSURU_SYSLOG_SERVER
    2. TSURU_SYSLOG_PORT (probably 514)
    3. TSURU_SYSLOG_FACILITY (something like local0)
    4. TSURU_SYSLOG_SOCKET (tcp or udp)

    可以用tsuru env-set命令在应用中设置这些环境变量:

    1. $ tsuru env-set -a myapp TSURU_SYSLOG_SERVER=myserver.com TSURU_SYSLOG_PORT=514 TSURU_SYSLOG_FACILITY=local0 TSURU_SYSLOG_SOCKET=tcp

    原文: http://doc.oschina.net/tsuru-paas?t=52827