一、问题背景

  最近项目遇到一个问题,服务器响应很慢,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 搭建本地日志服务的更多相关文章

  1. centos 如何用 rsyslog 搭建本地日志服务(续1: omprog模块与php deamon的配合使用)

    上一篇说到了如何用 rsyslog 搭建本地的日志服务,地址在这里,没有看的童鞋可以先瞅一眼 : http://www.cnblogs.com/smallrookie/p/5677004.html 显 ...

  2. RHEL7通过Rsyslog搭建集中日志服务器

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建rsyslog日志服务器的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相 ...

  3. 基于Log4Net本地日志服务简单实现

    背景 项目开发中,我们或多或少会使用诸如NLog,Log4Net,Kafka+ELK等等日志套件: 基于关注点分离原则,业务开发的时候不应该关注日志具体实现:并且后续能方便切换其他日志套件: 这里先实 ...

  4. 如何搭建本地web服务

    IIS服务是windows自带的web服务,我们可以用来搭建本地网站,供局域网内的用户之前访问,比如办公室的同事之间,一个教室里的同学们. 先说明这是Windows10 x64位 家庭普通版的系统. ...

  5. 快速搭建本地Nuget服务

    一  创建Nuget 服务项目 1.创建一个空白的asp.net web项目,需要.net 4.6以上 2.在Nuget中搜索 nuget.server ,可以看到是由 .Net 基金再维护的,几乎傻 ...

  6. 在CentOS 5.8上搭建PPTP VPN服务

    在天朝上网,vpn已经是必备之物了,我也记录一下搭建vpn服务的方法. 1. 确认内核是否支持MPPE模块MPPE用来支持Microsoft Point to Point Encryption, 包括 ...

  7. 基于docker-compose搭建本地sentry服务

    环境要求: centos 7 Docker 17.05.0+ Compose 1.19.0+ RAM 2400MB docker-compose 安装 ``$ curl -L https://get. ...

  8. Node.js搭建本地web服务(转)

    http://www.cnblogs.com/wangfupeng1988/p/4143996.html https://github.com/finderL/webserver

  9. rsyslog日志服务的配置文件分析

    基于rsyslog日志服务的日志 在不同的LINUX系统,实现的软件略有不同. syslog,rsyslog,syslog-ng,用于实现系统日志的管理. [root@asianux4 ~]# rpm ...

随机推荐

  1. 深入mongoDB(1)--mongod的线程模型与网络框架

    最近工作需要开始研究mongoDB,我准备从其源代码角度,对于mongod和mongos服务的架构.sharding策略. replicaset策略.数据同步容灾.索引等机制做一个本质性的了解.其代码 ...

  2. linux 学习笔记3

    ①find -name *.txt //查看当前目录所有文件 .txt 结尾文件 ②whereis *.txt   //查看.txt结尾文件   但不显示 .txt 打包:tar -cf a.tar ...

  3. NativeExcel 读取文件

    class function T_EShopDataBill.ImportData(const AFileName: String; AList: T_EShopDataModelList; var ...

  4. 【生活】已经从官网购买iPad,单独购买AppleCare+服务

    1 什么是AppleCare+服务 从苹果官网购买的硬件产品如ipad.iphone和MacBook等,官网承诺的保修期限是一年.AppleCare+是水果公司推出的一种保修服务,最大的特点就是将保修 ...

  5. Python OS模块标准库的系统接口及操作方法

    Python OS模块标准库的系统接口及操作方法 os.name 返回当前操作系统名,定义了'posix','nt','mac','os2','ce','java'(我使用win7/python3.1 ...

  6. opencv学习笔记(01)——操作图像的像素

    #include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <ope ...

  7. 10个优秀的Objective-C和iOS开发在线视频教程

    如果你自己开发iOS应用,你肯定会发现网上有很多资源.学习编程的一个最好的方法就是自己写代码,而开始写代码的最快的方式就是看其他人怎么写.我们从海量视频和学习网站中整理出了我 如果你自己开发iOS应用 ...

  8. @properties指针说明

    在iOS开发过程中,属性的定义往往与retain, assign, copy有关,我想大家都很熟悉了,在此我也不介绍,网上有很多相关文章. 现在我们看看iOS5中新的关键字strong, weak, ...

  9. android应用activity中调出输入法后界面调整问题的解决

    在自己写的一个小应用中发现一个问题,当调出输入法后界面最下方的一个按钮被挤到了输入法的上面,这样很不美观,所以找了一下解决办法记录如下: 在AndroidManifest.xml文件中找到对应的act ...

  10. linux内核分析之内存管理

    1.struct page /* Each physical page in the system has a struct page associated with * it to keep tra ...