应用程序的日志通过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日志并进行多维度分析。
相关文章
|
8天前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力
优化SSR应用以减少服务器压力,可采用代码分割、缓存策略、数据预加载、服务端性能优化、使用CDN、SSR与SSG结合、限制并发请求、SSR与CSR平滑切换、优化前端资源及利用框架特性等策略。这些方法能有效提升性能和稳定性,同时保证用户体验。
|
29天前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
58 2
|
12天前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
15天前
|
存储 SQL 监控
|
15天前
|
自然语言处理 监控 数据可视化
|
25天前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
26天前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力?
如何优化 SSR 应用以减少服务器压力?
|
1月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
1月前
|
监控 安全 Java
linux服务器上启动framework应用程序流程
【10月更文挑战第17天】在Linux服务器上启动Framework应用程序需经过准备工作、部署、启动、监控及访问五个步骤。首先确保服务器满足系统要求并安装依赖项;接着上传应用文件,编译构建,配置参数;然后通过脚本、命令行或系统服务启动应用;启动后检查日志,监控性能;最后确认访问地址,验证应用运行状态。具体操作应参照应用文档。
|
1月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
38 1
下一篇
无影云桌面