ELK stack实战之结合rsyslog分析系统日志(auth.log)

转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer

写在前边的话


在之前的文章中我么谈到了ELK stack的部署和简单的小demo,然后我们又看了elk stack结合filebeat做了一个分析,具体可参考下面的链接:
linux 部署ELK 日志分析系统与简单测试
ELK stack实战之Filebeat的架构分析、配置解释与示例

本篇文章我们主要谈一下linux操作系统的rsyslog(syslog),然后结合elk stack做一个分析autho.log(linux自己生成的日志)的demo

syslog与rsyslog


syslog

    首先需要说明的是syslog是一种协议,广泛用于系统日志,syslog系统日志消息可以记录在本地,也可以发送到接受syslog日志的服务器统一进行存储和处理,也可以解析其中的内容做相应的处理。

    常见的应用场景是网络管理工具、安全管理系统、日志审计系统。
    对于老版本的unix操作系统,默认使用syslog,但是在新版本都已经被rsyslog所替代
    老版本的Linux缺省使用Syslog,其配置大致如下所示:

shell> cat /etc/syslog.conf

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
# kern.* /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.
authpriv.* /var/log/secure

# Log all the mail messages in one place.
mail.* -/var/log/maillog

# Log cron stuff
cron.* /var/log/cron

# Everybody gets emergency messages
*.emerg *

# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log
local7.* /var/log/boot.log

    完整的syslog日志中包含产生日志的程序模块(Facility)、严重性(Severity或 Level)、时间、主机名或IP、进程名、进程ID和正文。在Unix类操作系统上,能够按Facility和Severity的组合来决定什么样的日志消息是否需要记录,记录到什么地方,是否需要发送到一个接收syslog的服务器等。由于syslog简单而灵活的特性,syslog不再仅限于 Unix类主机的日志记录,任何需要记录和发送日志的场景,都可能会使用syslog。

    这里涉及两个概念:Facility和Severity,中文的意思大致是类型和级别。重点说明两条配置的含义:首先,所有Severity大于等于info的信息都会被保存到「/var/log/messages」中,但是Facility为mail、authpriv、cron的消息例外;其次,所有Facility为mail的消息都会保存到「/var/log/maillog」中,日志文件前面的减号表示的意思是异步写文件。

rsyslog

上边也说了,对于现在的很多发行版都默认采用了rsyslog,rsyslog是syslog的升级版,这里我们看些Facility和Serverity
rsyslog通过Facility概念来定义日志消息的来源,以方便对日志进行分类 ,facility有以下几种

		kern                     内核消息
		user                     用户级消息
		mail                     邮件系统消息
		datemon                  系统服务消息
		auth                     认证系统消息
		syslog                   日志系统本身消息
		lpr                      打印系统消息
		authpriv                 权限系统消息
		corn                     定时任务消息
		news                     新闻系统消息
		uucp                     uucp系统消息
		ftp                      ftp系统消息

除了日志来源以外,对于同一来源产生的日志消息,还进行了优先级的划分,优先级分为以下几种

        Emergency                系统已经不能使用
        Alert                    必须立即进行处理
        Critical                 严重错误
        Error                    错误
        Warning                  警告
        Notice                   正常信息,但是较为重要
        Informational            正常信息
        Debug                    debug信息

案例:rsyslog+ELK分析auth.log


启动/停止/查看rsyslog的状态

在配置rsyslog的机器上执行即可

sudo service rsyslog start
sudo service rsyslog stop
Sudo service rsyslog status
使用系统的logger命令测试rsyslog是否工作

在配置rsyslog的机器上执行即可

Logger hello world

查看/var/log/message

[master@localhost log]$ sudo tail -n 1 messages
Sep 29 23:37:00 localhost master: hello word

测试rsyslog的性能

使用官方提供的 tcpflood
https://github.com/rsyslog/rsyslog/blob/master/tests/tcpflood.c

rsyslog+elk做日志收集

1、服务器两台

192.168.197.129    配置elk            OS:redhat
192.168.197.131    rsyslog客户端  OS:Centos7

2、ELK客户端配置
即129这个服务器
rsyslog.conf

input {
  tcp{
    port => 5514
    type => syslog
  }
  udp{
    port => 5514
    type => syslog
  }
}
output {
  stdout {
    codec=> rubydebug
  }
  elasticsearch {
    hosts => ["192.168.197.129:9200"]
  }
}

启动ELK服务

rsyslog客户端配置

即131这个服务器

sudo vim /etc/rsyslog.conf

找到下边的一段,去掉注释:

# provides UDP syslog reception
# module(load="imudp")
# input(type="imudp" port="5514")

# provides TCP syslog reception
# module(load="imtcp")
# input(type="imtcp" port="5514")

如下:

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="5514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="5514")

最后添加一行(elk所在机器的ip和监听的端口)

*.*  @192.168.197.129:5514

重启rsyslog服务

sudo service rsyslog restart

测试

在rsyslog所在客户端执行

logger -p info “hello, remote rsyslog”

部署ELK的服务器终端查看Elasticsearch的输出

这里写图片描述

kibana的web展示界面可以看到

这里写图片描述

当然我们也可以执行一些其他的命令

ssh localhost

输入正确的密码,在终端可以监测到:

这里写图片描述

ssh localhost 输入错误的密码:

这里写图片描述

根据这种情况我们就可以针对登录日志做出相应的分析

这里的logstash中的rsyslog.conf文件也可以这样写

input {
   syslog{
    port => 5514
    type => syslog
  }
}
output {
  stdout {
    codec=> rubydebug
  }
  elasticsearch {
    hosts => ["192.168.197.129:9200"]
  }
}

这个时候在rsyslog的服务器中执行

logger -p info “hello, remote rsyslog”

]


【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


<think>嗯,用户让我介绍一下CentOS系统日志沉淀,我需要先理解这个主题。首先,确定用户可能指的是日志的收集、存储和管理,也就是日志的沉淀过程。可能用户是系统管理员,或者刚开始学习CentOS,需要了解如何有效处理系统日志。 接下来,我应该回忆CentOS中常用的日志系统。记得CentOS 7及以后版本使用systemd-journald和rsyslog,而之前版本可能用syslog。需要区分不同版本的差异,但用户可能更关注当前主流版本,比如CentOS 7/8。 然后,日志的位置是关键。常见的日志文件如/var/log/messages、/var/log/secure等,这些是系统、安全、认证相关的日志。另外,systemd的journalctl命令也是重要的日志查看工具,需要提到。 日志轮转机制,logrotate工具是必须介绍的,它如何配置来自动切割和压缩旧日志,防止磁盘占满。用户可能需要知道如何自定义这些配置,比如在/etc/logrotate.d/下添加配置。 对于集中式日志管理,可能会提到使用rsyslog或syslog-ng将日志发送到远程服务器,或者用ELK栈(Elasticsearch, Logstash, Kibana)进行日志分析。不过用户的问题可能更基础,是否需要深入这部分要看情况,但简要提及可能对用户有帮助。 安全性方面,需要提醒日志文件权限设置,避免未授权访问,以及定期备份的重要性。这些都是系统维护的基本点。 实际应用部分,应该给出一些例子,比如查看特定服务的日志,使用journalctl过滤日志,配置logrotate等,让用户能直接应用这些知识。 需要确保回答结构清晰,分点说明,使用中文,同时注意LaTeX格式的正确使用。不过在这个回答中可能数学公式不多,但如果有命令行中的变量,可能需要用$包裹,比如$hostname。但根据用户提供的系统指令,行内数学表达式需要用$...$,独立公式用$$...$$。不过日志内容可能更多是命令和路径,不太涉及数学表达式,但需要检查是否有需要用到的地方,比如在示例命令中的变量。 最后,验证信息的准确性,比如确认CentOS 7确实使用systemd和rsyslog日志路径是否正确,logrotate的配置方法等。确保回答正确可靠,避免错误信息。</think>在CentOS系统中,日志沉淀是系统管理的重要环节。以下是分步骤的详细介绍: --- ### 一、日志系统核心组件 1. **systemd-journald** - 作用:二进制日志服务,记录内核、启动过程及所有systemd托管服务的日志 - 查看命令:`journalctl` - 示例: ```bash journalctl -u nginx.service # 查看Nginx服务日志 ``` 2. **rsyslog** - 作用:传统文本日志系统,将日志分类存储到/var/log目录 - 配置文件:`/etc/rsyslog.conf` - 日志分类: - 系统日志:`/var/log/messages` - 安全日志:`/var/log/secure` - 内核日志:`/var/log/kern.log` --- ### 二、日志文件存储结构 | 日志文件 | 用途 | |-------------------------|-------------------------------| | `/var/log/messages` | 常规系统活动日志 | | `/var/log/secure` | 用户认证相关日志(SSH、sudo) | | `/var/log/cron` | 计划任务日志 | | `/var/log/maillog` | 邮件服务日志 | | `/var/log/boot.log` | 系统启动日志 | --- ### 三、日志轮转机制(Log Rotation) 通过`logrotate`实现自动日志切割和归档: 1. **主配置文件** - `/etc/logrotate.conf` - 自定义配置:`/etc/logrotate.d/*` 2. **典型配置示例** ```conf /var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 nginx adm sharedscripts postrotate /bin/kill -USR1 $(cat /run/nginx.pid 2>/dev/null) 2>/dev/null || true endscript } ``` --- ### 四、高级日志管理方案 1. **集中化日志收集** - 使用`rsyslog`转发日志到远程服务器: ```bash *.* @192.168.1.100:514 # 添加到/etc/rsyslog.conf ``` 2. **ELK Stack方案** - Elasticsearch:日志存储与检索 - Logstash:日志收集处理 - Kibana:可视化展示 --- ### 五、实践建议 1. **日志审查命令** ```bash tail -f /var/log/messages # 实时追踪日志 grep "ERROR" /var/log/secure # 筛选错误日志 journalctl --since "2023-10-01" # 按时间过滤日志 ``` 2. **安全加固措施** - 设置严格的文件权限: ```bash chmod 640 /var/log/secure chown root:adm /var/log/auth.log ``` - 定期备份重要日志 - 启用日志签名防篡改(如使用auditd) --- ### 六、故障排查流程 1. 确定时间范围 2. 定位相关服务日志文件 3. 使用`grep`/`awk`过滤关键信息 4. 结合`dmesg`检查内核日志 5. 通过`systemctl status`验证服务状态 通过以上机制,CentOS实现了完整的日志生命周期管理,建议定期审查日志并建立自动化监控告警系统。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值