暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

最佳实践:Rsyslog转发日志至kafka

IT那活儿 2023-10-18
2057
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

Rsyslog升级,调整或配置yum源

1.1 配置本地yum源

1)使用centos光盘作为本地yum源
mkdir /mnt/cdrom #创建用于挂载光盘的目录
mount dev/cdrom /mnt/cdrom #挂载光盘到指定目录

注:
  • umount /mnt/cdrom #卸载光盘;
  • cp -avf /mnt/cdrom /yum #若不想每次都放光盘,可复制光盘文件到本地硬盘yum目录下。
2)创建repo文件
#创建本地源文件
touch /etc/yum.repo.d/CentOS-Local.repo
#编辑本地源文件
vim /etc/yum.repo.d/CentOS-Local.repo

3)本地源具体配置
[Local] #yum软件仓库唯一标识符,避免与其他仓库冲突。
name=LocalYum#yum软件仓库的名称描述,易于识别仓库用处。
baseurl=file:///mnt/cdrom/ #file:///yum #源的提供方式,包括(ftp://...)、(http://...)、(file:///...)。
gpgcheck=1#设置此源是否校验文件:1为校验,0为不校验。
enabled=1#设置此源是否可用,1为可用,0为禁用。
priority=1# 在原基础上加入priority=1;数字越小优先级别越高,可以继续修改其他源的priority值,经测试仅配 置本地源的优先级为priority=1就会优先使 用本地源。
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #gpgcheck若是1将对下载的rpm将进行gpg的校验,校验密钥就是gpgkey,一般自己的yum源是不需要检测的。gpgcheck=0,那么gpgkey就可以不填写。

4)更新缓存
yum clean all #清除缓存
yum makecache #生成缓存
yum list     #显示所有已经安装和可以安装的程序包

1.2 配置局域网yum源

1)使用centos光盘作为局域网yum源
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom

2)下载nginx
yum -y install nginx
3)编辑添加nginx虚拟主机
server {
    listen       80;
    server_name  localhost;
    location / {
        autoindex  on;
        root   /mnt/cdrom;
    }
}

4)局域网内主机添加yum源文件
[Local]
name=LocalYum
baseurl=http://XXX.16.1.200:80
gpgcheck=1
enabled=1
priority=1
gpgkey=http://XXX.16.1.200:80/RPM-GPG-KEY-CentOS-7

5)更新缓存
yum clean all #清楚缓存
yum makecache #生成缓存
yum list     #显示所有已经安装和可以安装的程序包。 

1.3 配置网络yum源

1)备份原始yum源
cd /etc/yum.repos.d
mv CentOS-Base.rpeo CentOS-Base.repo.back

2)下载yum源文件,替代原始yum源
  • 网易yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all #清除缓存
yum makecache #生成缓存

注:wget -O ,使用“-O” 参数指定一个文件名。
  • 阿里云yum源

wget -O /etc/yum.repos.d/CentOS-Bace.repo http://mirrors.aliyum.com/Centos-7.repo
yum clean all
yum makecache


Rsyslog下载升级

2.1 rsyslog版本检查
通过yum list installed | grep rsyslog检查主机rsyslog版本以及是否有rsyslog-kafka相关包:
2.2 rsyslog升级
目前所有主机yum源内无rsyslog8或者8以上版本,更新会提示无更新包,也没有rsyslog-kafka。
所以需要先完成第一步更改yum或者更新原来yum仓库内的rsyslog版本包。
更新yum或更改后直接使用yum update rsyslog进行rsyslog升级,使用yum install rsyslog-kafka -y下载rsyslog-kafka包。
2.3 检查rsyslog升级是否完成
使用yum list installed | grep rsyslog查看相关包的版本,并重启rsyslog服务systemctl restart rsyslog,查看是否能正常启动。


Rsyslog配置

该配置放入到主机/etc/rsyslog.d下:
module(load="omkafka")
module(load="imfile")
 
# nginx template
#需要应用侧调整部分,要求applicationname字段调整为系统名缩写方便区分。
template(name="nginxAccessTemplate" type="string" string=" %msg%\n")
 
# ruleset
ruleset(name="nginx-kafka") {
    #日志转发kafka
    action (
        type="omkafka"
        template="nginxAccessTemplate"
        topic="domp-nginx" #日志主题,
        broker="134.176.xx.xx:9092 "
    )
}

# 定义消息来源及设置相关的action,flin部分的内容需填日志要接入的日志具体目录如:/usr/local/xxxx/logs/xxx.log

input(type="imfile" Tag="nginx-accesslog" File="/usr/local/nginx/log/*.log " Ruleset="nginx-kafka")


容器pod使用rsyslog

容器中使用需要调整/etc/rsyslog.conf 调整以下内容:示例为8版本。
module(load="imuxsock"    # provides support for local system logging (e.g. via logger command)SysSock.Use="on") ;
在rsyslog中,SysSock.Use="on" 配置是用来启用或禁用系统套接字(System Socket)的选项。rsyslog 是一个用于系统日志收集和处理的工具,它允许将系统日志从不同的源(如应用程序、操作系统等)收集并发送到指定的目标位置(如文件、远程服务器等)。
SysSock.Use 配置项控制是否在 rsyslog 中启用系统套接字,也被称为 "imuxsock"(input module Unix Socket)。启用这个选项后,rsyslog 将监听一个特定的 Unix 域套接字,它允许本地进程通过写入该套接字来将日志事件发送给 rsyslog。
需要改为no然后保存既可以发送,在容器中重启只能使用rsyslogd来进行。

END


本文作者:曹安匀(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论