centos 如何用 rsyslog 搭建本地日志服务
一、问题背景
最近项目遇到一个问题,服务器响应很慢,team中的两个有经验的工程师找了一台服务器分析了一下,发现问题出在磁盘写入过于频繁。这里大概介绍一下背景,我们的服务器上面主要是跑各种PHP接口,每个接口都有独立的日志,由于磁盘只有一个磁头(这显然谁都知道,ORZ...),而日志又是独立的,即一次请求过来就需要写一次日志,由于日志保存的位置不同,也就是一次请求磁头就需要移动一个位置,机械硬盘大家懂得,这样显然就会导致了日志写入的速度很慢,从而拖慢了服务器的响应时间。
二、解决思路
显然问题就出在日志的频繁写入上,试想如果能有一个专门的日志服务来接收日志,而不是每次都直接往硬盘中写入。在此基础上再加入一些缓存机制,写日志的问题肯定会好很多。OK,问题的思路有了,但是如何来搭这套服务呢?有没有一些直接可用的解决方案呢?显然是有的,毕竟我肯定不是第一个遇到这个问题的人。team中的老司机们说 rsyslog 应该能够满足这个要求,而且团队目前也有在用这个服务,可以了解一下。
三、解决问题的步骤
1、什么是rsyslog,它能干什么:
上面说到了 rsyslog 这个工具, rsyslog 是什么呢?简单说 rsyslog 其实是一个集中日志服务器,它可以支持 tcp、udp或者本地文件等当时的输入,然后支持把日志写入到 本地、数据库等等,如下图所示:

什么?要再具体的说下,请参考官网: http://www.rsyslog.com/
2、如何安装 rsyslog
centos下安装rsyslog灰常简单,如你所见:
$ yum install rsyslog
3、配置 rsyslog,官网有配置的向导,链接: http://www.rsyslog.com/rsyslog-configuration-builder/,这个做得非常人性化。上面说到 rsyslog 可以支持 TCP、UDP等方式的接收日志,这里不妨先用TCP的方式测试一下,然后把日志写到本地一个tmp 目录。生成的配置如下,然后把这个配置放到 /etc/rsyslog.conf 下面。
# 加载tcp模块
module(load="imtcp")
# tcp方式接收日志,端口号为 514
input(type="imtcp"
port="514")
# 接收日志后,写入到本地/data1/tmp/testlog 中
action(type="omfile"
File="/data1/tmp/testlog")
怎么样,看上去是不是非常简洁,是的,就是这么简单!
4、启动rsyslog服务,这一步也灰常简单,如下:
$ service rsyslog start
然后你可以用 ps 命令看下服务是否启动了,如下:
$ ps -aux | grep rsyslog
如果看到类似下图所示的情况,那么服务就起来了:

5、测试一下服务
写一个简单的php代码,如下:
<?php $errno = '';
$errstr = '';
$fp = stream_socket_client("tcp://xx.xx.xx.xx:514", $errno, $errstr, 30); // 这里需要替换成你的ip地址或者域名
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, "test message !\n");
fclose($fp);
}
然后运行一下这段代码,可以在 /data1/tmp/testlog (上面指定的接收文件)日志中找到如下一条记录,那么服务就正式搭好了。
aaarticlea/png;base64,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" alt="" />
今天暂时就写到这里,未完待续!
centos 如何用 rsyslog 搭建本地日志服务的更多相关文章
- centos 如何用 rsyslog 搭建本地日志服务(续1: omprog模块与php deamon的配合使用)
上一篇说到了如何用 rsyslog 搭建本地的日志服务,地址在这里,没有看的童鞋可以先瞅一眼 : http://www.cnblogs.com/smallrookie/p/5677004.html 显 ...
- RHEL7通过Rsyslog搭建集中日志服务器
说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建rsyslog日志服务器的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相 ...
- 基于Log4Net本地日志服务简单实现
背景 项目开发中,我们或多或少会使用诸如NLog,Log4Net,Kafka+ELK等等日志套件: 基于关注点分离原则,业务开发的时候不应该关注日志具体实现:并且后续能方便切换其他日志套件: 这里先实 ...
- 如何搭建本地web服务
IIS服务是windows自带的web服务,我们可以用来搭建本地网站,供局域网内的用户之前访问,比如办公室的同事之间,一个教室里的同学们. 先说明这是Windows10 x64位 家庭普通版的系统. ...
- 快速搭建本地Nuget服务
一 创建Nuget 服务项目 1.创建一个空白的asp.net web项目,需要.net 4.6以上 2.在Nuget中搜索 nuget.server ,可以看到是由 .Net 基金再维护的,几乎傻 ...
- 在CentOS 5.8上搭建PPTP VPN服务
在天朝上网,vpn已经是必备之物了,我也记录一下搭建vpn服务的方法. 1. 确认内核是否支持MPPE模块MPPE用来支持Microsoft Point to Point Encryption, 包括 ...
- 基于docker-compose搭建本地sentry服务
环境要求: centos 7 Docker 17.05.0+ Compose 1.19.0+ RAM 2400MB docker-compose 安装 ``$ curl -L https://get. ...
- Node.js搭建本地web服务(转)
http://www.cnblogs.com/wangfupeng1988/p/4143996.html https://github.com/finderL/webserver
- rsyslog日志服务的配置文件分析
基于rsyslog日志服务的日志 在不同的LINUX系统,实现的软件略有不同. syslog,rsyslog,syslog-ng,用于实现系统日志的管理. [root@asianux4 ~]# rpm ...
随机推荐
- 深入mongoDB(1)--mongod的线程模型与网络框架
最近工作需要开始研究mongoDB,我准备从其源代码角度,对于mongod和mongos服务的架构.sharding策略. replicaset策略.数据同步容灾.索引等机制做一个本质性的了解.其代码 ...
- linux 学习笔记3
①find -name *.txt //查看当前目录所有文件 .txt 结尾文件 ②whereis *.txt //查看.txt结尾文件 但不显示 .txt 打包:tar -cf a.tar ...
- NativeExcel 读取文件
class function T_EShopDataBill.ImportData(const AFileName: String; AList: T_EShopDataModelList; var ...
- 【生活】已经从官网购买iPad,单独购买AppleCare+服务
1 什么是AppleCare+服务 从苹果官网购买的硬件产品如ipad.iphone和MacBook等,官网承诺的保修期限是一年.AppleCare+是水果公司推出的一种保修服务,最大的特点就是将保修 ...
- Python OS模块标准库的系统接口及操作方法
Python OS模块标准库的系统接口及操作方法 os.name 返回当前操作系统名,定义了'posix','nt','mac','os2','ce','java'(我使用win7/python3.1 ...
- opencv学习笔记(01)——操作图像的像素
#include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <ope ...
- 10个优秀的Objective-C和iOS开发在线视频教程
如果你自己开发iOS应用,你肯定会发现网上有很多资源.学习编程的一个最好的方法就是自己写代码,而开始写代码的最快的方式就是看其他人怎么写.我们从海量视频和学习网站中整理出了我 如果你自己开发iOS应用 ...
- @properties指针说明
在iOS开发过程中,属性的定义往往与retain, assign, copy有关,我想大家都很熟悉了,在此我也不介绍,网上有很多相关文章. 现在我们看看iOS5中新的关键字strong, weak, ...
- android应用activity中调出输入法后界面调整问题的解决
在自己写的一个小应用中发现一个问题,当调出输入法后界面最下方的一个按钮被挤到了输入法的上面,这样很不美观,所以找了一下解决办法记录如下: 在AndroidManifest.xml文件中找到对应的act ...
- linux内核分析之内存管理
1.struct page /* Each physical page in the system has a struct page associated with * it to keep tra ...