使用以下命令:
/usr/bin/journalctl -o short -f \ ncat {若干-ip}{某些端口}
将日志输出转发到某个远程日志跟踪应用程序。
问题是,我在打印输出中缺少了systemd单元/服务名称,因此很难判断哪个服务产生哪一行日志。
例如,这是一个nginx行:
6月25日07:51:09本地主机bash497:10.23.132.98 - 25 / Jun :07:51:09 +0000 "GET /page.html HTTP/1.1“200 321 "https://{ip}”Mozilla/5.0 (Windows 6.1;WOW64) AppleWebKit/537.36 (壁虎) Chrome/35.0.1916.153 Safari/537.36“
日志中有bash497 -进程的PID。如何向日志中添加更多数据?例如,这个PID的停靠容器名称还是systemd服务/单元名称?
发布于 2014-06-26 09:14:37
最后,我以不同的方式实现了这一点。
每个服务/ systemd单元都有一个post执行脚本,该脚本使用:
/usr/bin/journalctl -u {单位名称} -o短-f _ sed /^/{单位名称}/‘\ ncat {一些-ip}{某些端口}
现在,在日志行的开头,我有了单元名称!我的日志收集器在消息中有单元名称!
示例
日志( mongodb.service -u -o short -f \ sed sed-f /‘\ ncat {若干-ip}{某些端口})
将产出:
mongodb六月26日09:11:35本地主机bash1710: 2014-06-26T09:11:35.714+0000
发布于 2014-08-04 01:35:42
不要使用-o short,它会删除信息!
试试-o json或-o verbose
发布于 2015-06-01 07:51:32
Python可以这样做:
from systemd import journal
j = journal.Reader()
j.this_boot()
j.add_match(_SYSTEMD_UNIT="newnginx.service")
for entry in j:
print('{} {}'.format(entry['_SYSTEMD_UNIT'], entry['MESSAGE']))( CentOS 7上的python)
https://stackoverflow.com/questions/24403387
复制相似问题