一、问题背景

  最近项目遇到一个问题,服务器响应很慢,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,iVBORw0KGgoAAAANSUhEUgAAAxUAAAAwCAIAAADo9sBFAAAINUlEQVR4nO2dzZEiORBGyx88WBuwYyI6Ake4rRO4sOf2Y4yZPTQ0qlL+SglNMe9FXwaylCkppfpKEjXLx8fHUs/x/Pn5+Xk+9h9eTgf9gjuSmWLz7av5XvFyL0MxOJwuxsVhmy8vjc3hdNk6rbKJ1EvsDrliLfoFZhskyrkZaxbrLpccts4up4PWQk6/C87MZpYMjud7RVbtE0kqnbbYPJm+MOrffvVVQtegsRwL+AIA2AeP0U/PJDdx+0U5Jc3dz96DF24DW4/tkBduawCAvxn00zdFi09vT6FgneRwOq+74rqs8QqxTbBdnNl9hQAA3hD005XIwsXbLW6k2G6V/Tzd7tR7iA30EwDA64N+giDfauU1xNOyLL2CeqHQAADgndm/fgIAAAB4LugnAAAAgBySflpvioR+pm5tn7m/IFqd9xjegXHi6Q+VzHp8Ur0CvmIdVuNrVanxXdPtxlvkV48Py40uHtdRJB7DJjB2ito55KssfyJzQnjegL8SzmPAfuj0k6gzumwWrDbT7uYGGXvDz/D87RdTpZ/m6yWfepZMQ75iHVZSLynyobut2ARqSZMHrwZzw3n7lROPYZMeOw+te1X+xIZy0XBvynrOjZab+tOgqWE/SPqpndFuU/kqn6+z4Lfd1eh+3fWD83Exx8Ot8PVLI0/pCdWNx7ouM1JL6hXUTzFfrVXTFsmbUshX16rbZs/4W714wOyvprkmlLWZG5GcT8Vj2Pjx1LVzoO41+RPzNTxOLY/opzeDpob94J9/6t7o3E25y2JlvffN9E+mkvGsTcbHaVW9IvNFpnXVV1RF3sFt+JLe7D34PvQO/cUQt9pYL693C07nhlqvUDyGTSCeVDtfr7Y2Ce26F+VPxNfoONXikNgUtHpUceW5YJbw5YZ8Pq4FoyKLp2MO28T20DfvnhcTPxBzmMGRDvADRPVTM7bkKU9Ne3WGrHrQSMZz5XC6zDmvqtecfupeGam/4XNSP4mfazf2lH7S1cFd4g7OqmO5oeq5SDymTSCeVDsvhn6K1b0mfyK+BvtCjUOiKV1c5pX+SynLqFQ/nc/NtcezUFBJzDEb0cTURYpdJOYM6CfYD65+6mY9ZSpXlxD89Yy5HZpsPPdv56RbVb0m9VMzE56PZqVL9JN4cmhIP7UTuL+yMjarDuWG2gSReGybSDypdt547AsN1L0gfyK+BvtCJzIoOikkrC51iu5Y/qx3a7rzsdEb56OonAtijtmYW6vLIuxjC4f6QjGnQD/BfnD0kzASlfHhbOWo6xmn7vElOUtl41msZ+y03/l6Teun4jeDO+tq/Sm3qduf3jprXTA2qw7kRkg9afF4NqF4ku2s6adE3afzJ+JrqC98p8am06ZQTTlGfJfop6/LV9uY7UxUF/OIhOn7Qe4ZYU3RjTlFyeQM8BQM/aTMbLX6afWVdHBXW0H/tsnPy/cdFi0kzVdhvdxygjb3et6jn5p9/L3CtmEmbyxtsZ3S6NLg8frJzGIvHt8mGI/Tzs4PEHJ6pSR/Xk0/Gdtu4gqLW+kK/dSuw92cNf+ojHlAEPf9oD8ibKW+G3MG9BPsB00/OSd6C/bv+pXfZfNw1pp1bBaVk/H4RyVFX4X1cssJ2SiH02YUjR1PMzPfNyPmZ7u1U1sgJLzlckNNmUg8oZjj8VjtHNNPIV9F+fNq+3eZ+3roFPUL6adozAGb3mXjyXp8frh+mnsgA3gSon6y5zRld11bINCmHmN5ODd8UvFMLi67bvP1mtFP4ueTBxAyPWDIwhzrRivTT4ncsBKjTD9lx84mAPXWri+z2r7K8idSr8G6J316X3nlJQZasuiQfiqM2bTpOrmbtuL6qVbsoJ9gPwj6yRsU4mQ+oA/0yXtk5z4Wz/hs3VFVr3L9NLkmlJgTxaW2CadGzIMdF82N9I0gEo9gkxw7KwNj0VQMJOCrLH8i9Rqru467qT1QrFb3J+in8pgNG3XBs9u/s8V12fMTwC5R3j8euZ1vh6MyhPUCu8vMcgriqdptapzO12tGP90WPfppTz2IFrvrK/U6CQfTDFGo+lq/I1WqhVig1YDOt2ZujC565vVTKJ5EOy+Gfgr4KsyfeDsH5w0X8+at7EOuXtx6PCvb7Nqy9bBQiOinuph9m06Qf6+eduf3egG8chaJGeBd2eqn4BEgwWx9BzA2M7o1Yr2cME48rbcZ+fSIennayPalWOkLgWIg476UO4qnn4Qss/tlWD8FciOY89F4PBs3nkQ7L6Z+GvSluJtu56BNGLswpVd9C7PyY4HH9FNVzAEbzWTtrk+Oy+m0TWo/5hRbjQ3wwgzqp2UzuMQtAG94Ch4nVoKteBqDqYH5iHrN6afOk38vHdZPW0/+jpMWzNaf3ykT+mnrT97UFXiQfnLjSbTz4uingK+K/In7itmE2XadeKjNqFuX+IGcdhtKuTSgn8piDti01fn6VurgtqDL6aBMovnxrIJ+gh3hv38cAACg8vc3APsH/QQAAB3dKaa6H4wAvAPoJwAA6JC39VFPAFfQTwAAIFB4sAng/UA/AQAAAORAPwEAAADkQD8BAAAA5EA/AQAAAORAPwEAAADkQD8BAAAA5EA/AQAAAORAPwEAAADkQD8BAAAA5Oj0069l+XP7+918/ntZ/ntqZAAAAACvSaef/uh/v34mRAAAAICXYq2fvhaf/rn9899GPLH4BAAAALAsC+efAAAAALKgnwAAAAByoJ8AAAAAcqCfAAAAAHKgnwAAAAByoJ8AAAAAcqCfAAAAAHKgnwAAAAByoJ8AAAAAcqCfAAAAAHKgnwAAAABS/A/vSKiKwwBZdwAAAABJRU5ErkJggg==" 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. win10 安装scrapy

    在win10的环境下安装scrapy,并不能直接按照官网的手册(http://doc.scrapy.org/en/1.0/intro/install.html)一次性安装成功,根据我自己的安装过程中遇 ...

  2. Python学习_算数运算函数

    记录以grades列表为例,分别定义输出.求和.平均值.方差和标准差函数,并输出相应的值 grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90 ...

  3. 1009. Product of Polynomials (25)

    #include <stdio.h> struct MyStruct { int exp; double coe; }; int main() { int k1,k2,i,j; MyStr ...

  4. Orcale Function Sequence

    Orcale Function Sequence. 1 Create Or Replace Function F_Get_Sequence(As_Companyno In Varchar2, As_T ...

  5. Ubuntu 设置root用户登录

    由于 Ubuntu 是基于 Debian 的 linux 操作系统,在默认的情况下,是没有超级用户(superuser, root)的,但有些系统操作必须有超级用户的权限才能进行,如手动释放内存等.  ...

  6. 线形,柱形,条形数据表(百度Echart插件)

    [获取资源]进入官网,    http://echarts.baidu.com/导航,下载,下拉框下载,常用303k.就是这么简单,就个一个js.[项目使用]新建项目,MyChart具体使用的过程中, ...

  7. C#学习笔记---基础入门(一)

    C#中的变量: 一个变量就是存储区(内存)中的一个存储单元. 变量声明赋值:int money =1000;/int money;money=1000; 输出:console.writeLine(mo ...

  8. easyBCD安装双系统,简单便捷,亲测好用

    一 准备工作(在WIN7下操作完成) 1   从官网http://www.ubuntu.com/上下载镜像文件,大小接近700M.下载EasyBCD最新版安装之.特别声明:EasyBCD是一款很优秀的 ...

  9. springMVC上传图片

    http://blog.csdn.net/cheung1021/article/details/7084673/ http://toutiao.com/a6293854906445021442/ 工程 ...

  10. HTTP协议的几个重要概念

    转自:http://ice-cream.iteye.com/blog/77549 1.连接(Connection):一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间. 2.消息(Messag ...