您的位置:

Linux日志分析

一、日志基础知识

1、什么是日志

日志是记录应用程序运行状态和问题的文件,是查找和解决问题时重要的依据。Linux系统日志文件一般位于/var/log目录下,包括系统级别的日志、应用级别的日志等。

2、日志种类

常见系统级别的日志文件包括:

/var/log/messages:系统级别的日志文件,包括内核、系统守护进程等的输出信息。
/var/log/auth.log:系统认证相关的日志文件。
/var/log/secure:用来记录SSH连接的详细情况。
/var/log/maillog:邮件系统相关的日志文件,例如Postfix、Sendmail等。
/var/log/cron:维护系统Cron任务的日志文件。
/var/log/kernel.log:记录内核信息的日志文件。
/var/log/syslog:包含进程日志、内核日志等所有系统级别的日志。

3、日志工具

一般使用以下命令查看和分析日志文件:

tail -f /var/log/messages:实时查看系统日志信息。
grep ERROR /var/log/messages:查找关键字ERROR所在的日志信息。
less /var/log/messages:使用less命令分页查看系统日志信息。
sed -n /^Jun 29/ p /var/log/secure:查看6月29日SSH连接相关的日志信息。

二、日志分析工具

1、Syslog-NG

Syslog-NG是一个功能强大的系统日志收集、处理和传输工具,并支持一些扩展功能,例如TLS加密、多线程处理等。常见的配置文件位于/etc/syslog-ng/目录下。

安装:yum install syslog-ng
启动:systemctl start syslog-ng
配置:/etc/syslog-ng/syslog-ng.conf

2、Logwatch

Logwatch是一个日志文件分析工具,使用Perl编写,可以帮助用户自动汇总系统日志信息,并生成可读的日志报告。常见的配置文件位于/etc/logwatch/目录下。

安装:yum install logwatch
配置:/etc/logwatch/conf/logwatch.conf
执行:logwatch --mailto xxx@xxx.com

3、ELK

ELK是一组开源工具的缩写,包括Elasticsearch、Logstash、Kibana。Elasticsearch是一个开源的全文搜索和分析引擎,Logstash是一个用于日志数据收集和处理的工具,Kibana是一个Web界面,用于数据查询、可视化展示等。ELK组合可以处理运行中的日志数据,搜索、分析、可视化运行中的数据。

三、使用Python分析日志数据

Python提供了许多处理日志数据的库和工具,例如regular expression(正则表达式)、pandas(数据处理)、matplotlib(数据可视化)等,可以方便地分析日志数据。

下面是一个简单的使用Python分析日志的示例:

import re
import pandas as pd
import datetime
import matplotlib.pyplot as plt
 
logfile = open("/var/log/auth.log", "r")
records = []
 
for line in logfile:
    if 'Failed password' in line:
        time = datetime.datetime.strptime(' '.join(line.split()[:3]), '%b %d %H:%M:%S')
        ip = re.findall( r'[0-9]+(?:\.[0-9]+){3}', line )[0]
        records.append([time, ip])
 
data = pd.DataFrame.from_records(records, columns=["time", "ip"])
data['time'] = data['time'].dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai')
 
count = data.groupby([data.time.dt.hour])['ip'].count()
 
plt.plot(count)
plt.xlabel('Hour of Day')
plt.ylabel('# of Failed SSH attempts')
plt.title('Failed SSH Login Attempts by Hour')

以上代码可以将SSH登录失败次数按小时进行分组,并使用matplotlib库生成一张折线图,更直观地展示统计数据。详细分析可以使用pandas库对data数据进行统计和筛选操作。

四、结语

以上介绍了Linux日志的基本知识、日志分析工具和使用Python分析日志数据的方法。对于Linux系统管理员,掌握日志分析技术是必不可少的,可以更好地维护系统。