rsyslogd作为CentOS:7系统自带的日志管理工具,为很多服务提供了便捷的日志管理接入方案,然而 CentOS:7的官方镜像 默认是不支持rsyslogd的。我们做个实验:

1)启动测试容器

docker run -it --name=test-syslog centos:7 /bin/bash

2)安装rsyslogd

yum -y install rsyslog

3)测试rsyslogd

rsyslogd  # 启动日志服务
logger "Hello rsyslog" # 发送一条日志
cat /var/log/messages # 查看日志内容

我们可以看到并没有任何输出。

4)分析原因

原因比较简单,即rsyslog默认通过 journal 读取日志信息,但CentOS镜像默认并未安装systemd和journald。有两个解决方案:(1)按官方提供的教程(systemd integration)将systemd和journald集成到CentOS:7镜像里;(2)修改 rsyslogd 的配置,不经过 journal 读取日志信息。这里讲解下方案(2)的具体操作。

5)修改配置

cat /var/run/syslogd.pid  # 查看刚才启动的rsyslogd进程pid
kill -9 进程号 # 将刚才启动的rsyslogd关掉
rm -rf /etc/rsyslog.d/listen.conf  # 将 journal 的配置删除

vi 打开 /etc/rsyslog.conf 文件,将 $ModLoad imjournal 和 $IMJournalStateFile imjournal.state 这两行注释;将 $OmitLocalLogging on 改为 $OmitLocalLogging off。保存退出。

6)测试验证

rsyslogd  # 启动日志服务
logger "Hello rsyslog" # 发送一条日志
cat /var/log/messages # 查看日志内容

可以看到如下输出,说明日志服务已正常:

May 21 08:57:54 60c66cdf443f rsyslogd:  [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="108" x-info="http://www.rsyslog.com"] start
May 21 08:58:05 60c66cdf443f root: Hello rsyslog

 

docker容器中使用rsyslogd的更多相关文章

  1. Docker容器中运行ASP.NET Core

    在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...

  2. 在 docker 容器中捕获信号

    我们可能都使用过 docker stop 命令来停止正在运行的容器,有时可能会使用 docker kill 命令强行关闭容器或者把某个信号传递给容器中的进程.这些操作的本质都是通过从主机向容器发送信号 ...

  3. Docker容器中开始.NETCore之路

    一.引言 开始写这篇博客前,已经尝试练习过好多次Docker环境安装,.Net Core环境安装了,在这里替腾讯云做一个推广,假如我们想学习.练手.net core 或是Docker却苦于没有开发环境 ...

  4. 隔离 docker 容器中的用户

    笔者在前文<理解 docker 容器中的 uid 和 gid>介绍了 docker 容器中的用户与宿主机上用户的关系,得出的结论是:docker 默认没有隔离宿主机用户和容器中的用户.如果 ...

  5. Docker容器中开始.Net Core之路

    开始写这篇博客前,已经尝试练习过好多次Docker环境安装,.Net Core环境安装了,在这里替腾讯云做一个推广,假如我们想学习.练手.net core 或是Docker却苦于没有开发环境,服务器也 ...

  6. Docker容器中找不到vim命令

    docker容器中,有的并未安装vi和vim,输入命令vim,会提示vim: command not found(如下图).此时我们就要安装vi命令 执行命令:apt-get update apt-g ...

  7. docker容器中Postgresql 数据库备份

    查看运行的容器: docker ps 进入目标容器: docker exec -u root -it 容器名 /bin/bash docker 中,以root用户,创建备份目录,直接执行如下命令, p ...

  8. .NetCore下使用IdentityServer4 & JwtBearer认证授权在CentOS Docker容器中运行遇到的坑及填坑

    今天我把WebAPI部署到CentOS Docker容器中运行,发现原有在Windows下允许的JWTBearer配置出现了问题 在Window下我一直使用这个配置,没有问题 services.Add ...

  9. 一个docker容器中运行多个服务还是弄一堆docker容器运行?

    不建议直接在单个 Docker 容器中运行多个程序. 以 2017年 10 月18 日 Docker 官方支持 Kubernetes 为分水岭计算,Kubernetes 赢得容器编排之战的最终胜利已经 ...

随机推荐

  1. 【转载】Visual Studio2017中如何设置解决方案中的某个项目为启动项目

    在C#的应用程序开发过程中,一个完成的解决方案可能包含多个子项目,有时候需要设置某一个子项目为启动项目,在Visual Studio 2017集成开发工具中,设置解决方案中的某个项目为启动项目的操作方 ...

  2. java的数据类型相关知识点

    总结就是八个字: 数据2型,四类八种 (个人理解,仅供参考) 解析图如下: 基本数据类型: 1.逻辑类:boolean 布尔类型,它比较特殊,布尔类型只允许存储true(真)或者false(假),不可 ...

  3. elasticsearch 集群、节点、索引、分片、副本概念

    原文链接: https://www.jianshu.com/p/297e13045605 集群(cluster): 由一个或多个节点组成, 并通过集群名称与其他集群进行区分 节点(node): 单个 ...

  4. 深度解析.NetFrameWork/CLR/C# 以及C#6/C#7新语法

    一:什么是.NetFrameWork/ CLR / C# 1:.NetFramework即架构,它是一个语言开发软件,提供了软件开发的框架,使开发更具工程性.简便性和稳定性,这个框架主要是针对于c#语 ...

  5. springcloud学习之路: (二) springcloud打jar包并批量运行

    springcloud中内置了tomcat所以打包的时候是直接把tomcat打入jar包 之后就可以做到, 单独的服务, 独立的jar包, 独立运行的效果了. 一.打jar包 1. 在pom.xml文 ...

  6. 编译安装redis 3.2.9 make test 时报错

    默认监听端口:6379(可以创建多个端口的配置文件) 源码安装: $ yum install tcl $ wget http://download.redis.io/releases/redis-3. ...

  7. 学习CNN系列二:训练过程

    卷积神经网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间精确的数学表达式,只要用已知的模式对卷积神经网络加以训练,网络就具有输入.输出之间映射的 ...

  8. 201871010105-曹玉中《面向对象程序设计(java)》第十周学习总结

    201871010105-曹玉中<面向对象程序设计(java)>第十周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...

  9. 201871010112-梁丽珍《面向对象程序设计(java)》第二周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...

  10. python3汉诺塔简单实现代码

    小时候喜欢玩汉诺塔,今天用python实现简单的汉诺塔功能 代码: def hannoi(n,x,y,z): if n==1: print(x,'-->',z) else: hannoi(n-1 ...