日志收集二:使用rsyslog (v5版本)进行日志汇总

rsyslog相关:

一般系统默认安装的都是旧版本,如果不升级,使用v5版本的配置语法
v5配置参照:https://www.rsyslog.com/doc/v5-stable/
监听端口:514(使用UDP协议,减少系统负载)
自定义设备号使用约定:local0 ~ local7
  local0:代码直接发送syslog
  local1:nginx使用
  local6:文本收集使用

Nginx日志处理:

nginx支持将日志直接发送给rsyslog,文档链接:http://nginx.org/en/docs/syslog.html
使用tag约定:格式统一(站点名+分隔符+日志类型+分隔符)
tag中可使用的标点符号有限,这里使用"-"代替站点名中的".";tag标识中字符长度有限,珍惜每一位;每条日志只能定义一个tag,需要区别nginx类别,只能再想办法:将类别放入tag的特殊部分,写入文件时再处理(rsyslog提供字符串截断功能)

配置实例:

Nginx配置:
access_log syslog:server=127.0.0.1:514,facility=local1,tag=www_forver_comBaccessB,severity=info main;
error_log syslog:server=127.0.0.1:514,facility=local1,tag=www_forver_comBerrorB,severity=debug;
rsyslog本地转发配置:
if $syslogfacility-text == ‘local1‘ then @@(z5)10.10.10.10:514
汇总端配置:保存到本地文件
$template fileLnginx,"/ehr-log/rsyslogs/nginx/%syslogtag:F,66:1%/%$year%-%$month%-%$day%_%fromhost-ip%_%syslogtag:F,66:2%.log"
local1.*                                                -?fileLnginx;msg

效果:

代码直接发送

本地收集(防止rsyslog汇总端问题造成日志丢失)与转发:
$template msgTime,"%timegenerated:8:15% %msg:2:$%\n"
$template fileLprog,"/data/rsyslogs/%HOSTNAME%/%syslogtag%/%$year%-%$month%-%$day%.log"
local0.*                                                -?fileLprog;msgTime
if $syslogfacility-text == ‘local0‘ then @@(z5)10.10.10.10:514

汇总端配置:
$template msgTime,"%timegenerated:8:15% %msg:2:$%\n"
$template fileLprog,"/ehr-log/rsyslogs/%HOSTNAME%/%syslogtag%/%$year%-%$month%-%$day%_%fromhost-ip%.log"
local0.*                                                -?fileLprog;msgTime

文本内容收集

也是使用tag区分项目和类型,接受端再通过匹配tag写入到目标文件

采集端配置:
$InputFileName /var/log/nginx/ehr-analysis-api/eebo-ehr-analysis-gunicorn-error.log
$InputFileTag   G+eebo.ehr.analysis+PE
$InputFileSeverity debug
$InputFileStateFile G+eebo.ehr.analysis+PE
$InputFilePersistStateInterval 25000
$InputFileFacility local6
$InputRunFileMonitor
本地转发处理:
if $syslogfacility-text == ‘local6‘ then @@(z5)10.10.10.10:514
接受端汇总:
$template gunPacs,"/ehr-log/rsyslogs/%syslogtag:F,43:2%/production/gunicorn/%$year%-%$month%-%$day%_%hostname%-access.log"
$template gunPerr,"/ehr-log/rsyslogs/%syslogtag:F,43:2%/production/gunicorn/%$year%-%$month%-%$day%_%hostname%-error.log"
$template gunTacs,"/ehr-log/rsyslogs/%syslogtag:F,43:2%/test/gunicorn/%$year%-%$month%-%$day%_%hostname%-access.log"
$template gunTerr,"/ehr-log/rsyslogs/%syslogtag:F,43:2%/test/gunicorn/%$year%-%$month%-%$day%_%hostname%-error.log"
$template gunDacs,"/ehr-log/rsyslogs/%syslogtag:F,43:2%/dev/gunicorn/%$year%-%$month%-%$day%_%hostname%-access.log"
$template gunDerr,"/ehr-log/rsyslogs/%syslogtag:F,43:2%/dev/gunicorn/%$year%-%$month%-%$day%_%hostname%-error.log"
if $syslogfacility-text == ‘local6‘ and $syslogtag startswith ‘G+‘ and $syslogtag contains ‘+PA‘ then -?gunPacs;msg
if $syslogfacility-text == ‘local6‘ and $syslogtag startswith ‘G+‘ and $syslogtag contains ‘+PE‘ then -?gunPerr;msg
if $syslogfacility-text == ‘local6‘ and $syslogtag startswith ‘G+‘ and $syslogtag contains ‘+TA‘ then -?gunTacs;msg
if $syslogfacility-text == ‘local6‘ and $syslogtag startswith ‘G+‘ and $syslogtag contains ‘+TE‘ then -?gunTerr;msg
if $syslogfacility-text == ‘local6‘ and $syslogtag startswith ‘G+‘ and $syslogtag contains ‘+DA‘ then -?gunDacs;msg
if $syslogfacility-text == ‘local6‘ and $syslogtag startswith ‘G+‘ and $syslogtag contains ‘+DE‘ then -?gunDerr;msg

效果:
日志位置:
/data/log_ftp/rsyslogs/项目名/环境/代码日志
/data/log_ftp/rsyslogs/项目名/环境/celeryd/celery日志
/data/log_ftp/rsyslogs/项目名/环境/gunicorn/gunicorn日志

其他全局配置

$ModLoad imuxsock
$ModLoad imklog
$ModLoad imfile

$ModLoad imudp
$UDPServerRun 514
$MaxMessageSize 256k

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$WorkDirectory /var/lib/rsyslog

$IncludeConfig /etc/rsyslog.d/*.conf
$EscapeControlCharactersOnReceive off

$FileOwner root
$FileGroup root
$DirOwner root
$DirGroup root
$FileCreateMode 0644
$DirCreateMode 0755
$Umask 0022

原文地址:http://blog.51cto.com/11424123/2126735

时间: 2024-08-13 13:44:53

日志收集二:使用rsyslog (v5版本)进行日志汇总的相关文章

日志收集三:rsyslog + elasticsearch + kibana

rsyslog v8 配置文件语法改变较大,添加了很多其他输入输出模块,可以更好的进行扩展.在v5的基础上,添加elasticsearch的发送.v8配置参考:请添加链接描述 v8采集端完整配置 module(load="imuxsock") # provides support for local system logging (e.g. via logger command) module(load="imklog") # provides kernel log

Rsyslog日志收集服务并结合Loganalyzer工具展示

一.日志概述 1.rsyslog简介 syslog是日志收集存储系统,负责记录遵守此服务的内核.程序的日志信息.一般记录为:"日期时间,主机,进程:事件".syslog不仅可以记录本地的系统日志,也可以通过tcp, udp协议记录远程主机的程序日志信息. syslog:系统日志,是一种服务,有两个进程 syslogd:记录应用程序相关的日志 klogd:记录内核相关的日志 rsyslog:是syslog的升级版,使用多线程并发记录本地或远程日志,支持存储日志信息在MySQL,PGSQL

rsyslog+analyzer+mysql实现日志收集展示

why->what->where->when->who->how 1.为什么要进行日志收集?为什么要用到rsyslog? 日志是我们对系统和应用程序的运行状况分析的根本依据,同时一些日志也有其特殊的作用,例如mysql的二进制日志和事务日志.因此要进行日志收集,为了避免重复的进行日志系统的实现,因此在linux发行版中提供了系统日志收集-rsyslogd 2.什么是rsyslog? rsyslog的前身是syslog,其是一个日志收集器,用于应用程序日志收集和内核日志收集.

基于Flume的美团日志收集系统(二)改进和优化

问题导读: 1.Flume-NG与Scribe对比,Flume-NG的优势在什么地方? 2.架构设计考虑需要考虑什么问题? 3.Agent死机该如何解决? 4.Collector死机是否会有影响? 5.Flume-NG可靠性(reliability)方面做了哪些措施? 美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流.美团的日志收集系统基于Flume设计和搭建而成. <基于Flume的美团日志收集系统>将分两部分给读者呈现美团日

rsyslog+loganalyzer+mysql部署日志服务器

rsyslog是一个用来管理系统日志的开源程序,是早前syslog的升级版,对原有的日志系统进行了功能的扩展. rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器,rsyslog进程可以从网络中收集其它主机上的日志数据,这些主机会将日志配置为发送到另外的远程服务器.另外就是可以配置为客户端,用来过滤和发送内部日志数据到本地文件夹(如/var/log)或一台远程rsyslog服务器上. 一.rsyslog特性 多线程 支持通过TCP,SSL,TLS,RELP协议实现日志数据的可

用ElasticSearch,LogStash,Kibana搭建实时日志收集系统

用ElasticSearch,LogStash,Kibana搭建实时日志收集系统 介绍 这套系统,logstash负责收集处理日志文件内容存储到elasticsearch搜索引擎数据库中.kibana负责查询elasticsearch并在web中展示. logstash收集进程收获日志文件内容后,先输出到redis中缓存,还有一logstash处理进程从redis中读出并转存到elasticsearch中,以解决读快写慢速度不一致问题. 官方在线文档:https://www.elastic.co

ELK如何收集并用grok格式化MySQL的slow日志?

前言 需求说明 用ELK收集MySQL的慢查询日志信息,并且使用grok插件将日志信息格式化为json格式. 部署安排 test101--10.0.0.101--部署MySQL.filebeattest102--10.0.0.102--部署elasticsearch.kibanatest103--10.0.0.103--部署logstash 实验环境版本 系统版本:centos7.3MySQL版本: 本次测试两个版本MySQL1.yum安装的mariadb(Server version: 5.5

kubernetes-平台日志收集(ELK)

使用ELK Stack收集Kubernetes平台中日志与可视化 K8S系统的组件日志 K8S Cluster里面部署的应用程序日志 日志系统: ELK安装 安装jdk [[email protected] ~]# yum install java-1.8.0-openjdk [[email protected] ~]# java -version openjdk version "1.8.0_212" OpenJDK Runtime Environment (build 1.8.0_

打造高效的运维日志收集与分析平台

0x01 背景      面对与日俱增的日志信息,最传统的日志收集方式已难以满足运维人员的基本需求.So,我们何不利用如今丰富的开源工具来打造一款高效实用的运维日志收集分析平台呢.以下就我们目前尝试在做的运维日志平台进行简要介绍,希望能与各位交流心得经验. 0x02 平台架构     我们并没有采用ELK的架构进行日志收集,而是采用了多款日志收集工具结合的方式,即EKF(K/Z), elasticsearch + kafka-zookeeper + Flume + kibana/zabbix.