我用中文简单地调查了一下可以在GUI中像tail -F一样查看日志的rtail(使用js和node)

这一天我偶然发现了一个叫做rtail的可在图形界面中查看日志的工具,所以想不经意地安装并简单介绍一下。

环境

    • node

v0.10.36

CentOS

Linux release 7.1.1503 (Core)

安装

安装Node

由于需要npm,因此需要安装node.js。
(※如果可以访问epel,则可以通过yum轻松安装。)


$ sudo yum install nodejs
=======================================================================================================================
 Package                   Arch                 Version                                       Repository          Size
=======================================================================================================================
Installing:
 nodejs                    x86_64               0.10.36-3.el7                                 epel               391 k
Installing for dependencies:
 c-ares                    x86_64               1.10.0-3.el7                                  base                78 k
 http-parser               x86_64               2.0-4.20121128gitcd01361.el7                  epel                23 k
 libuv                     x86_64               1:0.10.34-1.el7                               epel                62 k
 v8                        x86_64               1:3.14.5.10-17.el7                            epel               3.0 M

Transaction Summary
=======================================================================================================================
Install  1 Package (+4 Dependent packages)

$ node -v
v0.10.36

npm的安装

npm可以通过yum安装,需要使用epel。
依赖包好多啊…

$ sudo yum install npm
Dependencies Resolved

=======================================================================================================================
 Package                                 Arch             Version                                 Repository      Size
=======================================================================================================================
Installing:
 npm                                     noarch           1.3.6-5.el7                             epel           333 k
Installing for dependencies:
 c-ares-devel                            x86_64           1.10.0-3.el7                            base            72 k
 gyp                                     noarch           0.1-0.11.1617svn.el7                    epel           403 k
 http-parser-devel                       x86_64           2.0-4.20121128gitcd01361.el7            epel           9.2 k
 libuv-devel                             x86_64           1:0.10.34-1.el7                         epel            41 k
 node-gyp                                noarch           0.10.6-2.el7                            epel            26 k
 nodejs-abbrev                           noarch           1.0.4-6.el7                             epel           7.4 k
 nodejs-ansi                             noarch           0.2.1-1.el7                             epel            13 k
 nodejs-archy                            noarch           0.0.2-8.el7                             epel           6.7 k
 nodejs-asn1                             noarch           0.1.11-3.el7                            epel            11 k
 nodejs-assert-plus                      noarch           0.1.4-1.el7                             epel           7.3 k
 nodejs-async                            noarch           0.2.10-1.el7                            epel            21 k
 nodejs-aws-sign                         noarch           0.3.0-1.el7                             epel           5.7 k
 nodejs-block-stream                     noarch           0.0.7-1.el7                             epel           8.7 k
 nodejs-boom                             noarch           0.4.2-2.el7                             epel            37 k
 nodejs-child-process-close              noarch           0.1.1-2.el7                             epel           6.1 k
 nodejs-chmodr                           noarch           0.1.0-4.el7                             epel           5.9 k
 nodejs-chownr                           noarch           0.0.1-9.el7                             epel           6.4 k
 nodejs-cmd-shim                         noarch           1.1.0-3.el7                             epel           7.7 k
 nodejs-combined-stream                  noarch           0.0.4-3.el7                             epel           7.9 k
 nodejs-config-chain                     noarch           1.1.7-1.el7                             epel            10 k
 nodejs-cookie-jar                       noarch           1:0.3.0-1.el7                           epel           6.1 k
 nodejs-cryptiles                        noarch           0.2.2-1.el7                             epel           6.9 k
 nodejs-ctype                            noarch           0.5.3-3.el7                             epel            31 k
 nodejs-delayed-stream                   noarch           0.0.5-5.el7                             epel           7.9 k
 nodejs-devel                            x86_64           0.10.36-3.el7                           epel           329 k
 nodejs-editor                           noarch           0.0.4-2.el7                             epel           6.4 k
 nodejs-forever-agent                    noarch           0.5.0-1.el7                             epel           5.6 k
 nodejs-form-data                        noarch           0.1.1-1.el7                             epel            11 k
 nodejs-fstream                          noarch           0.1.24-1.el7                            epel            25 k
 nodejs-fstream-ignore                   noarch           0.0.7-1.el7                             epel           8.9 k
 nodejs-fstream-npm                      noarch           0.1.5-1.el7                             epel            11 k
 nodejs-github-url-from-git              noarch           1.1.1-2.el7                             epel           6.0 k
 nodejs-glob                             noarch           3.2.6-1.el7                             epel            16 k
 nodejs-graceful-fs                      noarch           2.0.0-2.el7                             epel            11 k
 nodejs-hawk                             noarch           1.0.0-1.el7                             epel           105 k
 nodejs-hoek                             noarch           0.9.1-1.el7                             epel            51 k
 nodejs-http-signature                   noarch           0.10.0-3.el7                            epel            17 k
 nodejs-inherits                         noarch           2.0.0-4.el7                             epel           8.6 k
 nodejs-ini                              noarch           1.1.0-3.el7                             epel           8.3 k
 nodejs-init-package-json                noarch           0.0.10-1.el7                            epel           9.5 k
 nodejs-json-stringify-safe              noarch           5.0.0-1.el7                             epel           6.6 k
 nodejs-lockfile                         noarch           0.4.2-1.el7                             epel            11 k
 nodejs-lru-cache                        noarch           2.3.0-3.el7                             epel           9.6 k
 nodejs-mime                             noarch           1.2.11-1.el7                            epel            22 k
 nodejs-minimatch                        noarch           0.2.12-2.el7                            epel            18 k
 nodejs-mkdirp                           noarch           0.3.5-3.el7                             epel           7.5 k
 nodejs-mute-stream                      noarch           0.0.4-1.el7                             epel           7.5 k
 nodejs-node-uuid                        noarch           1.4.1-1.el7                             epel            10 k
 nodejs-nopt                             noarch           2.1.2-1.el7                             epel            15 k
 nodejs-normalize-package-data           noarch           0.2.1-1.el7                             epel            13 k
 nodejs-npm-registry-client              noarch           0.2.28-3.el7                            epel            21 k
 nodejs-npm-user-validate                noarch           0.0.3-1.el7                             epel           6.1 k
 nodejs-npmconf                          noarch           0.1.3-1.el7                             epel            17 k
 nodejs-npmlog                           noarch           0.0.4-3.el7                             epel           9.6 k
 nodejs-oauth-sign                       noarch           0.3.0-1.el7                             epel           4.9 k
 nodejs-once                             noarch           1.1.1-5.el7                             epel           6.0 k
 nodejs-opener                           noarch           1.3.0-7.el7                             epel           6.9 k
 nodejs-osenv                            noarch           0.0.3-5.el7                             epel           7.1 k
 nodejs-packaging                        noarch           7-1.el7                                 epel            11 k
 nodejs-promzard                         noarch           0.2.0-6.el7                             epel            12 k
 nodejs-proto-list                       noarch           1.2.2-5.el7                             epel           6.7 k
 nodejs-qs                               noarch           0.6.6-3.el7                             epel           8.7 k
 nodejs-read                             noarch           1.0.5-1.el7                             epel           8.7 k
 nodejs-read-installed                   noarch           0.2.4-1.el7                             epel           9.5 k
 nodejs-read-package-json                noarch           1.1.3-1.el7                             epel            12 k
 nodejs-request                          noarch           2.25.0-1.el7                            epel            27 k
 nodejs-retry                            noarch           0.6.0-5.el7                             epel            11 k
 nodejs-rimraf                           noarch           2.2.2-1.el7                             epel           8.1 k
 nodejs-semver                           noarch           2.1.0-3.el7                             epel            16 k
 nodejs-sha                              noarch           1.2.1-1.el7                             epel           7.6 k
 nodejs-sigmund                          noarch           1.0.0-5.el7                             epel           8.3 k
 nodejs-slide                            noarch           1.1.5-1.el7                             epel           9.9 k
 nodejs-sntp                             noarch           0.2.4-1.el7                             epel            10 k
 nodejs-tar                              noarch           0.1.18-1.el7                            epel            23 k
 nodejs-tunnel-agent                     noarch           0.3.0-1.el7                             epel           6.3 k
 nodejs-uid-number                       noarch           0.0.3-7.el7                             epel           7.1 k
 nodejs-which                            noarch           1.0.5-8.el7                             epel           8.0 k
 v8-devel                                x86_64           1:3.14.5.10-17.el7                      epel            71 k

Transaction Summary
=======================================================================================================================
Install  1 Package (+78 Dependent packages)

$ npm -v
1.3.6

安装 rtail

這是有關於安裝rtail的問題。

$ sudo npm install -g rtail

...
※けっこう長い感じなので省略します。
...

rtail@0.2.1 /lib/node_modules/rtail
├── moniker@0.1.2
├── strip-ansi@3.0.0 (ansi-regex@2.0.0)
├── debug@2.2.0 (ms@0.7.1)
├── split@1.0.0 (through@2.3.8)
├── json5@0.4.0
├── yargs@3.16.1 (camelcase@1.2.0, decamelize@1.0.0, window-size@0.1.2, y18n@3.0.0, cliui@2.1.0)
├── through2-map@2.0.0 (xtend@4.0.0, through2@2.0.0)
├── update-notifier@0.5.0 (is-npm@1.0.0, string-length@1.0.1, chalk@1.1.0, repeating@1.1.3, configstore@1.2.0, semver-diff@2.0.0, latest-version@1.0.1)
├── express@4.13.1 (escape-html@1.0.2, merge-descriptors@1.0.0, array-flatten@1.1.0, cookie@0.1.3, path-to-regexp@0.1.6, utils-merge@1.0.0, cookie-signature@1.0.6, methods@1.1.1, fresh@0.3.0, range-parser@1.0.2, vary@1.0.1, content-type@1.0.1, etag@1.7.0, parseurl@1.3.0, content-disposition@0.5.0, serve-static@1.10.0, depd@1.0.1, qs@4.0.0, on-finished@2.3.0, finalhandler@0.4.0, send@0.13.0, proxy-addr@1.0.8, type-is@1.6.5, accepts@1.2.12)
├── request@2.60.0 (aws-sign2@0.5.0, forever-agent@0.6.1, caseless@0.11.0, stringstream@0.0.4, oauth-sign@0.8.0, tunnel-agent@0.4.1, isstream@0.1.2, json-stringify-safe@5.0.1, extend@3.0.0, node-uuid@1.4.3, qs@4.0.0, mime-types@2.1.4, combined-stream@1.0.5, bl@1.0.0, form-data@1.0.0-rc3, tough-cookie@2.0.0, http-signature@0.11.0, hawk@3.1.0, har-validator@1.8.0)
├── chrono-node@1.0.6 (moment@2.10.6)
└── socket.io@1.3.6 (has-binary-data@0.1.3, debug@2.1.0, socket.io-adapter@0.3.1, socket.io-parser@2.2.4, engine.io@1.5.2, socket.io-client@1.3.6)

包裝結構很多。

$ rtail -v
0.2.1

这样安装就完成了。

怎么使用

根据查看的 GitHub 页面来看,非常简单。只需要将想要查看的日志通过管道流传即可。例如如下所示。

$ tail -F /var/log/httpd/access_log |rtail

作为准备工作,我已经进行了端口的解放。通常情况下,我会使用8888端口。如果端口没有打开,请打开它(也可以指定其他端口)。

$ sudo firewall-cmd --add-port=8888/tcp --zone=public --permanent
success
]$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-all |grep 8888
  ports: ... 8888/tcp ...略

将日志流到rtail

我的做法是这样的。

$ tail -F /var/log/httpd/access_log |rtail
※コンソールはtailの画面が続きます

启动 rtail-server

使用指定的webhost启动(需要的人还需要指定端口)。

我已经执行了以下操作。

$ rtail-server --webhost 0.0.0.0(自身のアドレスを設定してください)
※ --id name で画面に表示するログの名前を任意の名前にすることが出来ます。

服务器已启动,请访问 http://0.0.0.0:8888/

rTail_after.png

我认为您的显示应该是这样的。画面很漂亮!根据我的环境,我确认在访问时屏幕会实时更新。

其他

初始脚本 (Chū shǐ

如果您在 GitHub 页面上编写 init 脚本,可能还有类似的东西,那么似乎也可以实现守护进程化。
那么 CentOS7 究竟可以吗?

简单的设置更改

config.png

点击右上方的齿轮图标,可以调整白色背景和字体周围的设置。

选项

听说可以使用以下命令选项来获取帮助。

请提供更多上下文 供我进行翻译。

$ rtail --help
Usage: cmd | rtail [OPTIONS]

Options:
  --host, -h     The server host                 [string] [default: "127.0.0.1"]
  --port, -p     The server port                        [string] [default: 9999]
  --id, --name   The log stream id                 [string] [default: (moniker)]
  --mute, -m     Don't pipe stdin with stdout                          [boolean]
  --tty          Keeps ansi colors                     [boolean] [default: true]
  --parse-date   Looks for dates to use as timestamp   [boolean] [default: true]
  --help         Show help                                             [boolean]
  --version, -v  Show version number                                   [boolean]

Examples:
  server | rtail > server.log         localhost + file
  server | rtail --id api.domain.com  Name the log stream
  server | rtail --host example.com   Sends to example.com
  server | rtail --port 43567         Uses custom port
  server | rtail --mute               No stdout
  server | rtail --no-tty             Strips ansi colors
  server | rtail --no-date-parse      Disable date parsing/stripping

rtail服务器

$ rtail-server -h
Usage: rtail-server [OPTIONS]

Options:
  --udp-host, --uh  The listening UDP hostname            [default: "127.0.0.1"]
  --udp-port, --up  The listening UDP port                       [default: 9999]
  --web-host, --wh  The listening HTTP hostname           [default: "127.0.0.1"]
  --web-port, --wp  The listening HTTP port                      [default: 8888]
  --web-version     Define web app version to serve                     [string]
  --help, -h        Show help                                          [boolean]
  --version, -v     Show version number                                [boolean]

Examples:
  rtail-server --web-port 8080         Use custom HTTP port
  rtail-server --udp-port 8080         Use custom UDP port
  rtail-server --web-version stable    Always uses latest stable webapp
  rtail-server --web-version unstable  Always uses latest develop webapp
  rtail-server --web-version 0.1.3     Use webapp v0.1.3

利用

我找到了一篇很有用的文章,分享给大家。请务必查看。
由于 rTail 效果很好,我利用 npm 脚本集中了日志,效率提高了很多。

我希望以后能够调查的事情

缓存了正在显示的日志部分。

如果程序需要始终运行且大量输出标志,我会担心文件会出问题,所以想要调查一下这方面的情况。
如果有解释说明的话就好了,但我不会读英文,也需要阅读源代码才行。但我也不懂js和node,所以可能会花费一些时间。

在CentOS7上将其以守护进程方式运行的方法。

自从使用systemd以来,我还没有编写替代init脚本的service文件,所以好像还需要调查一下。具体而言,

    • そもそもserviceでつかうファイルの書き方

 

    rtailがstop,startに使う部分のお作法の調査。

如果有时间进行调查,我想在追加中向您报告。如果有人懂JS,我将不胜感激地请教。

※参考网址
github rtail:https://github.com/kilianc/rtail

添加记录

    • 2015/08/03

指摘頂いた -f より ーF の方がというものについて調べたら確かにその通りだったのでそれを変更しました。
–idのオプションについてメモで記載しました
rtailの素敵な記事をみつけたのでリンクさせてもらいました。

广告
将在 10 秒后关闭
bannerAds