当前位置: 首页 > news >正文

systemd-journald日志持久化的操作方法

一、背景

每当遇到诸如网卡、数据库、Apache及其他一些应用无法正常启动时,系统会提示我们使用journalctl -ex命令进行查看,往往能迅速找到相关日志,分析日志后问题一般能够迅速被解决。虽然经常使用,但是也没有过多深究。

在CentOS7.X中,systemd统一管理着所有unit的启动日志,systemd-journald就是一个被systemd管理的进型日志管理服务,可以收集来自内核、系统早期启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。该日志服务仅仅把日志集中保存在单一结构的日志文件/run/log中,由于日志是经过压缩和格式化的二进制数据,所以在查看和定位的时候很迅速,我们可以只用journalctl一条命令就能查看所有日志(内核日志和 应用日志)。

[root@ChatDevOps ~]# systemctl list-units|grep journal*
  systemd-journal-flush.service                                                       loaded active exited    Flush Journal to Persistent Storage
  systemd-journald.service                                                            loaded active running   Journal Service
  systemd-journald.socket                                                             loaded active running   Journal Socket

对于journal的配置,我们可以参见配置文件:/etc/systemd/journald.conf,可以根据实际情况进行自定义,默认情况下并不会持久化保存日志,只会保留一个月的日志。如果需要永久保留改日志文件呢?

二、操作步骤

1.创建相关的目录来存放journal日志,修改权限,重启systemd-journal服务。

[root@ChatDevOps ~]# mkdir /var/log/journal
[root@ChatDevOps ~]# chgrp systemd-journal /var/log/journal
[root@ChatDevOps ~]# chmod g+s /var/log/journal
[root@ChatDevOps ~]# systemctl restart systemd-journald

2.重启数次观察日志记录结果。

[root@ChatDevOps ~]# journalctl --list-boots
-2 3b8ad5992dc84becbee8e7d2c1a053cd 二 2018-06-12 10:54:34 CST—二 2018-06-12 11:03:57 CST
-1 13935fc1d8d9499baf4bbc453daf1e56 二 2018-06-12 11:04:05 CST—二 2018-06-12 20:08:03 CST
 0 eed68f873742408ca746a2272961f73d 二 2018-06-12 20:08:21 CST—二 2018-06-12 20:09:43 CST

从上面我们可以清晰地看到本日内的三次引导记录。

3.观察最近一次引导过程。

[root@ChatDevOps ~]# journalctl -b 0

4.之前/run/log/journal目录已经不存在,取而代之的是/var/log/journal目录。

三、总结

1.journalctl是一个非常好用的日志查看命令。

2.关于journal的使用可以参见下文:https://blog.csdn.net/zstack_org/article/details/72356864

相关文章:

  • Azure系列2.1.7 —— BlobRequestOptions
  • 华为交换机基础操作
  • 基于webpack 的 vue 多页架构
  • 弹性计算双周刊 第7期
  • SpringBoot Mybatis 分页插件PageHelper
  • 用北哥三个火枪手(yii2+houjs+yii2-wx)实现微信礼物打赏功能 --- 上部
  • 创建字符串的方法
  • Unity 灯光探针用法教程
  • 深度学习入门和学习书籍
  • Python总纲路线
  • MySQL 支持的数据类型
  • 展晓凯:“零经验”的我与唱吧从零到四亿
  • Yaml文件语法及读写小结
  • Zabbix 深度实践
  • Mysql常用命令行大全
  • 《深入 React 技术栈》
  • 07.Android之多媒体问题
  • Angular 4.x 动态创建组件
  • const let
  • express + mock 让前后台并行开发
  • Git学习与使用心得(1)—— 初始化
  • Nacos系列:Nacos的Java SDK使用
  • Netty 4.1 源代码学习:线程模型
  • Python 基础起步 (十) 什么叫函数?
  • Spark RDD学习: aggregate函数
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • unity如何实现一个固定宽度的orthagraphic相机
  • 讲清楚之javascript作用域
  • 前端攻城师
  • 强力优化Rancher k8s中国区的使用体验
  • 自定义函数
  • 选择阿里云数据库HBase版十大理由
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #{}和${}的区别是什么 -- java面试
  • (20050108)又读《平凡的世界》
  • (6)设计一个TimeMap
  • (day 12)JavaScript学习笔记(数组3)
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (转)四层和七层负载均衡的区别
  • (转载)Google Chrome调试JS
  • *1 计算机基础和操作系统基础及几大协议
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core 中插件式开发实现
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Framework .NET Core与 .NET 的区别
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET 事件模型教程(二)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET开发人员必知的八个网站
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .so文件(linux系统)
  • :如何用SQL脚本保存存储过程返回的结果集