应用程序的日志通过rsyslog推送到syslog服务器

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

目前最新版rsyslog为8.27.0,rsyslog从8.5.0后对imfile模块进行重构,文件名中可以支持通配符。


rsyslog官网:http://www.rsyslog.com/

升级rsyslog需要配置yum源,centos默认的升级不到最新的版本。


1、配置yum

wKioL1k_Wr_SllGiAADgHZXOFX0716.png

wKiom1k_WsCRgf3NAACoKXgFAc4607.png

wKiom1k_WsGRZ3sAAAEJVShx23w513.png

为了能够使用RPM存储库,您需要一个.repo文件。使用您的webbrowser,请访问http://rpms.adiscon.com。在这里,可以下载rsyslogall.repo文件,或者转到所需版本的子文件夹(例如v8-stable),然后从中下载rsyslog.repo文件。(google翻译来的)


wKioL1k_WsLTIbYAAAB_6q6JGmg596.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost yum.repos.d] # pwd
/etc/yum .repos.d
[root@localhost yum.repos.d] # ls
dvd.repo  packagekit-media.repo  rhel- source .repo  rsyslog.repo
[root@localhost yum.repos.d] # cat rsyslog.repo 
[rsyslog_v8]
name=Adiscon CentOS-$releasever -  local  packages  for  $basearch
baseurl=http: //rpms .adiscon.com /v8-stable/epel- $releasever/$basearch
enabled=1
gpgcheck=0
gpgkey=http: //rpms .adiscon.com /RPM-GPG-KEY-Adiscon
protect=1
[root@localhost yum.repos.d] # rpm -qa|grep -i rsyslog
rsyslog-5.8.10-10.el6_6.x86_64
[root@localhost yum.repos.d] # yum -y install rsyslog
[root@localhost yum.repos.d] # rpm -qa|grep -i rsyslog
rsyslog-8.27.0-2.el6.x86_64
[root@localhost yum.repos.d] #

根据官方网文档如果复制以上配置可能解析变量不正确导致安装不成功,此时需要替换第三行中的变量“$ releasever”,$releasever的值表示当前系统的发行版本,可以通过rpm -qi centos-release命令查看,其中的Version:6就是我们系统的版本号;$basearch是我们的系统硬件架构(CPU指令集),使用命令arch得到。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost yum.repos.d] # rpm -qi centos-release
Name        : centos-release               Relocations: (not relocatable)
Version     : 6                                 Vendor: CentOS
Release     : 5.el6.centos.11.1             Build Date: Wed 27 Nov 2013 07:53:33 PM CST
Install Date: Thu 27 Apr 2017 06:39:55 PM CST      Build Host: c6b9.bsys.dev.centos.org
Group       : System Environment /Base        Source RPM: centos-release-6-5.el6.centos.11.1.src.rpm
Size        : 32670                            License: GPLv2
Signature   : RSA /SHA1 , Wed 27 Nov 2013 09:26:58 PM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http: //bugs .centos.org>
Summary     : CentOS release  file
Description :
CentOS release files
[root@localhost yum.repos.d] # arch
x86_64
[root@localhost yum.repos.d] #


2、配置rsyslog

rsyslog默认只可以传送系统的日志,比如DHCP,cron、kern等,现在要传送一个服务的日志到远端的rsyslog服务器,要使用rsyslog的imfile模块。该模块提供将任何标准文本文件转换为syslog消息的功能。该文件逐行读取,任何读取的行都传递给rsyslog的规则引擎。

官方文档:

http://www.rsyslog.com/doc/v8-stable/configuration/modules/imfile.html

wKiom1k_dv-TufZvAAELF2_2OiM310.png

wKiom1k_dwDQcPN7AAGvvvwCeT0307.png

wKioL1k_dwGQJKc2AAEk8V9HFzI944.png

wKioL1k_dwLyKFR7AAF1ddH4HRw147.png

wKiom1k_dwOxWL5aAACxV8l37FU693.png

上图为配置样例,各参数可以参考文中的对应模块参数说明,module参考文中Module Parameters说明;input参考文中Input Parameters说明。

1
2
3
4
5
6
[root@localhost yum.repos.d] # cp /etc/rsyslog.conf{,.20170613bak}
[root@localhost yum.repos.d] # vim /etc/rsyslog.conf
module(load= "imfile"  PollingInterval= "10" )
input( type = "imfile"  File= "/opt/CalculationUnit/java/sh/logs/bigada.log"  Tag= "CalculationUnit"  Severity= "info"  Facility= "local0"  freshStartTail= "on"  deleteStateOnFileDelete= "on" )
local0.* @10.10.15.175:514
[root@localhost yum.repos.d] # /etc/init.d/rsyslog restart

module

      load="imfile"    加载imfile模块

      PollingInterval="10"     轮询文件的频率,单位秒,默认10秒,

input

     type="imfile" 

     File="/opt/CalculationUnit/java/sh/logs/bigada.log"    发送到syslog的文件绝对路径

     Tag="CalculationUnit" 

     Severity="info"     

     Facility="local0" 

     freshStartTail="on"    设置为on每次重启rsyslog时只读取最新的数据丢弃旧日志,默认关

     deleteStateOnFileDelete="on" 如此文件会重新生成需要开启次参数,例如bigdata.log每天凌晨会重命名为bigdata%YYYY%mm%dd%.log,然后重新生成bigdata.log

local0.* @10.10.15.175:514   定义syslog服务器地址


错误:Permission denied 

1
2
3
Jun 27 18:33:46 localhost rsyslogd: imfile warning: directory  '/opt/CalculationUnit/java/sh/logs' : Permission denied [v8.27.0 try http: //www .rsyslog.com /e/2046  ]
Jun 27 18:33:46 localhost rsyslogd:  [origin software= "rsyslogd"  swVersion= "8.27.0"  x-pid= "19409"  x-info= "http://www.rsyslog.com" ] start
Jun 27 18:33:46 localhost rsyslogd: imfile: error with inotify API, ignoring  file  '/opt/CalculationUnit/java/sh/logs/bigada.log' : Permission denied  [v8.27.0]

检查selinux

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@localhost ~] # sestatus
SELinux status:                 enabled
SELinuxfs  mount :                 /selinux
Current mode:                   enforcing
Mode from config  file :          enforcing
Policy version:                 24
Policy from config  file :        targeted
[root@localhost ~] # getenforce 
Enforcing
[root@localhost ~] # setenforce 0
[root@localhost ~] # getenforce 
Permissive
[root@localhost ~] # sestatus
SELinux status:                 enabled
SELinuxfs  mount :                 /selinux
Current mode:                   permissive
Mode from config  file :          enforcing
Policy version:                 24
Policy from config  file :        targeted
[root@localhost ~] # vim /etc/sysconfig/selinux 
[root@localhost ~] # /etc/init.d/rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
[root@localhost ~] #


现在可以在syslog服务端数据库里查看到信息

wKiom1k_eiiwKafvAADQrbYnfak416.png





本文转自 justin_peng 51CTO博客,原文链接:http://blog.51cto.com/ityunwei2017/1934910,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的服务器日志文件
本文介绍了PostgreSQL数据库的物理存储结构,重点讨论了服务器日志文件。通过`pg_ctl`命令启动PostgreSQL实例时,使用`-l`参数指定日志文件位置,记录数据库启动、运行及关闭过程中的关键信息。附有相关视频讲解和日志文件示例。
158 0
|
4月前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力
优化SSR应用以减少服务器压力,可采用代码分割、缓存策略、数据预加载、服务端性能优化、使用CDN、SSR与SSG结合、限制并发请求、SSR与CSR平滑切换、优化前端资源及利用框架特性等策略。这些方法能有效提升性能和稳定性,同时保证用户体验。
110 4
|
5月前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
152 2
|
1月前
|
机器学习/深度学习 运维 资源调度
深度学习在资源利用率优化中的应用:让服务器更聪明
深度学习在资源利用率优化中的应用:让服务器更聪明
107 6
|
4月前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
3月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
4月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
88 2
|
4月前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
5月前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力?
如何优化 SSR 应用以减少服务器压力?
|
5月前
|
机器学习/深度学习 人工智能 边缘计算
高算力服务器的应用场景
【10月更文挑战第18天】高算力服务器作为现代信息社会不可或缺的计算资源,正广泛应用于各行各业。从人工智能到科学研究,从智能交通到数字孪生,它为复杂的计算任务提供了不可替代的支持。
173 0