设为首页 收藏本站
查看: 2941|回复: 0

[经验分享] 用rsyslog管理游戏服日志

[复制链接]

尚未签到

发表于 2017-11-21 10:08:25 | 显示全部楼层 |阅读模式
  看到有朋友用rsyslog,发现挺不错的。由于版本更新比较快,网上很多资料介绍相对比较旧,遇到了一些问题,记录下来以便日后查看。英文好的同学可以直接查看官网(http://www.rsyslog.com)了解各个版本。PS:本文并不介绍rsyslog知识,只是把实践过程中操作记录下来。

1. 游戏服用rsyslog的好处
  分等级,不同等级的日志可以存到不同的文件中。比如,把游戏中error及以上级别的日志放在error.log里(需要经常查看的),低于error级别的日志放在info.log里。
  可以让远程主机管理日志。比如,游戏开了很多服,放在不同的主机上,要查看日志需要登录到不同的主机,会累死,如果让一台主机当成“日志文件服务器”,记录其他主机的日志,这样进入一台主机即可。

2. 版本
  rsyslog可以用于远程管理日志,我用了两台机器,一台做client,一台做server。
  server用阿里云的,Linux版本是ubuntu,rsyslog版本是8.16.0
  client用本地的虚拟机,Linux版本ubuntu,rsyslog版本也是8.16.0
  装ubuntu一般都自带装rsyslog,如果没装,参照官网安装。最好保证client,server版本一致。
  配置文件由/etc/rsyslog.conf     /etc/rsyslog.d/50-default.conf      /etc/default/rsyslog  三个文件
  注:版本不一样,配置文件路径可能不相同。

3. 实践

(1).修改server配置文件
  /etc/default/rsyslog,设置RSYSLOGD_OPTION="-r",表示接受外部主机的请求。 也可以设置有关参数限制相应的ip



# Options for rsyslogd
# -x disables DNS lookups for remote messages
# See rsyslogd(8) for more details
RSYSLOGD_OPTIONS="-r"

  /etc/rsyslog.conf,接受TCP请求,端口是514,省略了其他配置



# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

  /etc/rsyslog.d/50-default.conf,设置日志级别(level),设施(facility)和动作(action)



# Add by lxd 2017/11/13
template(name="msg" type="string"
string="%syslogtag% %msg%\n"
)
template(name="info_file" type="string"
string="/data/log/%syslogtag:1:9%-%$year%-%$month%-%$day%.log"
)
template(name="error_file" type="string"
string="/data/log/%syslogtag:1:9%-error-%$year%-%$month%-%$day%.log"
)
LOCAL4.=info;LOCAL4.=notice;LOCAL4.=warning        ?info_file;msg
LOCAL4.=err;LOCAL4.=crit;LOCAL4.=alert;LOCAL4.=emerg    ?error_file;msg
   接收LOCAL4类型的日志,定制log文件名和内容格式,err级别以上和以下等级的日志分别放在不同的log文件。
  注:修改配置文件需要root权限。如果没有/data/log目录,需手动创建,并修改文件权限,chown syslog:adm /data/log
  配置文件修改后,重启rsyslog服务, /etc/init.d/rsyslog restart,监听状态 DSC0000.png

(2). 修改client配置文件

  /etc/rsyslog.d/50-default.conf,将LOCAL4类型的所有日志,转发到远程主机上



# Add by lxd 2017/11/11
LOCAL4.*@@xxx.xxx.xxx.xxx:514
  重启rsyslog服务,/etc/init.d/rsyslog restart

4. 测试



#include "syslog.h"
int main(int args, char** argv){
const char* name = "lxd";
const char* msg = "client";
openlog(name, LOG_ODELAY|LOG_PERROR, LOG_LOCAL4);
syslog(LOG_DEBUG, "%d:%s", LOG_DEBUG, msg);
syslog(LOG_INFO, "%d:%s", LOG_INFO, msg);
syslog(LOG_NOTICE, "%d:%s", LOG_NOTICE, msg);
syslog(LOG_WARNING, "%d:%s", LOG_WARNING, msg);
syslog(LOG_ERR, "%d:%s", LOG_ERR, msg);
syslog(LOG_CRIT, "%d:%s", LOG_CRIT, msg);
syslog(LOG_ALERT, "%d:%s", LOG_ALERT, msg);
syslog(LOG_EMERG, "%d:%s", LOG_EMERG, msg);
closelog();
return 0;
}
  编译运行以上代码,查看server的tcp连接,发现一个客户端连接已经建立
DSC0001.png

  打开/data/log目录,多了两个日志文件,err.log记录err以上级别的日志,info.log记录err以下info以上级别的日志,成功~
   DSC0002.png
  接下来要做的是日志文件rotating,比如,一天产生一个文件,以及定制日志的格式。
  如果按以上步骤实验不成功的,欢迎联系作者。qq:591560293

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-409113-1-1.html 上篇帖子: 操作系统的发展史(科普章节) 下篇帖子: 在 Ubuntu13.10 服务器中安装 Munin(监视工具)【转】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表