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 ...
随机推荐
- C#获取“所有用户桌面”的路径
想用C#得到The All Users Desktop(Public\Desktop)的路径. 原来以为很简单,然而 Environment.GetFolderPath(Environment.Spe ...
- android 打开GPS的几种方式
1.在讨论打开gps的之前先看下如何检测gps的开关情况: 方式一: boolean gpsEnabled = locationManager.isProviderEnabled(LocationMa ...
- C语言宏定义取得两数的最大值和最小值
/*本程序时为了验证用宏来做 * 两个数的大小比较的写法*/#include<stdio.h>#define MAX(x,y) ((x)<(y)?(y):(x))#define MI ...
- 字符串转换成整型数 atoi()
题目说明: 1.设计函数: int atoi(const char *nptr); 2.功能:把字符串转换成整型数,atoi()会扫描参数nptr字符串,如果第一个非空格字符存在, 是数字或者正负号则 ...
- WPF Button的背景图片设置
这个问题很简单,但是对于从winfrom转过来的来讲,在做事的时候就会被绕进去,言归正传,如何设置一个bUtton的背景图片?如何去掉让人烦的默认选中时的灰色背景?请看如下的描述.问题的来源和解决都在 ...
- 生成XML文件,通过实体生成XML文件
实体 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xm ...
- butterknife7.0.1使用
1.官网:http://jakewharton.github.io/butterknife/ Introduction Annotate fields with @Bind and a view ID ...
- 大批量DML操作应该注意什么?
问:大批量DML操作应该注意什么? 答:大批量DML操作可能会撑爆undo表空间,导致数据库挂起.因此我们应该设置一个合适的undo表空间,或对DML操作的分批提交.
- js高级技巧笔记(一)
安全的类型检测 Js的类型检测机制并非完全可靠,发生错误否定及错误肯定的情况也不少: 在safari 在对正则表达式应用typeof操作符时返回"function",因此很难确定某 ...
- 第一个js面向对象的小实验
$.extend({ cal: function (num1,num2,oper,aftercal) { this.n1 = num1; ...