首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Journalctl :在日志打印输出中添加_SYSTEMD_UNIT字段

Journalctl :在日志打印输出中添加_SYSTEMD_UNIT字段
EN

Stack Overflow用户
提问于 2014-06-25 08:09:55
回答 4查看 1.4K关注 0票数 4

使用以下命令:

/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服务/单元名称?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2014-08-04 01:35:42

不要使用-o short,它会删除信息!

试试-o json-o verbose

票数 1
EN

Stack Overflow用户

发布于 2015-06-01 07:51:32

Python可以这样做:

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24403387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档