我用中文简单地调查了一下可以在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/
我认为您的显示应该是这样的。画面很漂亮!根据我的环境,我确认在访问时屏幕会实时更新。
其他
初始脚本 (Chū shǐ
如果您在 GitHub 页面上编写 init 脚本,可能还有类似的东西,那么似乎也可以实现守护进程化。
那么 CentOS7 究竟可以吗?
简单的设置更改
点击右上方的齿轮图标,可以调整白色背景和字体周围的设置。
选项
听说可以使用以下命令选项来获取帮助。
请提供更多上下文 供我进行翻译。
$ 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の素敵な記事をみつけたのでリンクさせてもらいました。