业务需求
业务部门需要采集系统日志中的部分字段,并且需要可以按接口方式进行全量和增量的查询。详细字段类型如下图
需求分析
分析以上 11 个字段,共涉及两个系统日志,一个为 history 日志,一个为 secure 日志。
- 1 字段操作 ID 可自主生成,无法从系统日志中生成。
- 2 字段 history 和 secure 的时间格式需要重新配置以满足需求。
- 3 字段从 secure 日志中可获取。
- 4-5 字段可以添加进去。
- 6-7 字段可从 secure 日志中获取。
- 字段可以添加进去。
- 字段可以从 history 中获取。
- 字段可以从 secure 日志中获取。
- 字段可以从 secure 日志中获取。
两个日志输出到 opensearch 不同的索引中,并以时间戳作为可查询条件,即可实现全量加增量查询。
实现方案
实施方案主要为操作系统配置,输出到文件,fluentd 采集处理,输出到 opensearch 集群。详细流程如下图:
history 日志配置 cat /etc/profile
cat /etc/profile
HISTDIR='/var/log/command.log'
export HISTTIMEFORMAT="%F %T,$HOSTNAME,$(who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'),$(who am i|awk '{print
$1}'),${USER},"
export PROMPT_COMMAND="history 1|tail -1| sed 's/^[ \t]*//' >>
${HISTDIR}"
创建 history 文件
touch /var/log/command.log && chmod 666 /var/log/command.log
重新加载
source /etc/profile
配置前后对比
登录成功
grep "sshd.*Accepted" /var/log/secure
退出登录
grep "sshd.*session closed" /var/log/secure
注:登录和推出以PID号作为关联
登录失败
grep "sshd.*Failed password" /var/log/secure
cat /etc/rsyslog.conf
# Use default timestamp format
# $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$templateCustomFormat,"%$NOW% %TIMESTAMP:8:15% %HOSTNAME% %syslogt ag% %msg%\n"
$ActionFileDefaultTemplate CustomFormat
重启服务
systemctl restart rsyslog
配置前后对比
后续Fluentd收集,详见Fluentd专栏《EFK之Fluentd收集日志到opensearch》。