简介:
企业规模大了,场景业务多了,日志不能再分散处理了。那么第一选择就是日志服务器,一台服务器就可以查看所有业务的日志,当然,也要有专门的数据库存储日志,专门的WEB浏览日志。
作为linux的默认日志服务,rsyslog就是我们的第一选择了,它即是linux系统的日志服务,也可以配置开放端口作为中央日志服务器。
rsyslog能够接受从各种各样的来源,将其输入,输出的结果到不同的目的地。rsyslog可以提供超过每秒一百万条消息给目标文件。
简单说,我们写python程序的时候,日志使用logging模块,是可以直接输出到远程的rsyslog中央日志服务器的。
一:安装rsyslog
我测试使用的fedora默认已经安装了,没安装的话,自己dnf apk ……根据自己的系统装一下。
二:配置rsyslog
rsyslog的配置文件为: /etc/rsyslog.conf
编辑此文件即可。
1.MODULES
模块:可以理解为rsyslog的插件,配置打开这些插件,rsyslog就开启了这个功能,我比较关心的是tcp、udp端口监听记录功能
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
#module(load="imudp") # needs to be done just once
#input(type="imudp" port="514")
# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")
我取消了tcp端口514的注释,即监听514端口tcp协议。记录发向这里的日志内容。
2.RULES
规则:记录的保存规则吧。
$template DynamicFile,"/var/log/%HOSTNAME%/forwarded-logs.log"
*.* -?DynamicFile
我在RULES下面增加了这个内容
第一行是文件名模板,
第二行是任何日志都保存到这个模板文件名中。
3.数据库
实验没到这里,候补
三:python logging
import logging import socket from logging import handlers #初始化日志 logger = logging.getLogger("AppName") # 指定logger输出格式 formatter = logging.Formatter('%(asctime)s %(levelname)-8s: (%(name)s)%(pathname)s %(message)s') #rsyslog日志处理器 rsyslog_handler=handlers.SysLogHandler(address=('10.0.0.10', 514), socktype=socket.SOCK_STREAM) rsyslog_handler.setFormatter(formatter) # 为logger添加的日志处理器 logger.addHandler(rsyslog_handler) # 指定日志的最低输出级别,默认为WARN级别 logger.setLevel(logging.DEBUG) # 输出不同级别的log logger.debug('文件? ') logger.info('this is information') logger.warning('this is warning message') logger.error('this is error message') logger.fatal('this is fatal message, it is same as logger.critical') logger.critical('this is critical message')
关键的是设置服务器地址,端口,还有协议,sysloghandler默认使用udp协议,
socktype=socket.SOCK_STREAM 是定义tcp协议
10.0.0.10 514 是定义rsyslog服务器地址和端口 只要能解析,填主机名,域名都可以。
暂时到这里吧,凌晨1点多了。虽然还有数据库问题,储存格式,储存内容一些问题没有解决。