当前位置: 首页 > news >正文

【懒人运维】rsyslog+mysql+loganalyzer 日志服务器搭建

文章目录

    • 运行环境
    • 数据库配置
    • rsyslog配置
    • loganalyzer安装
    • 防火墙配置

《中华人民共和国网络安全法》第二十一条第三项明确规定,网络运营者必须采取监测、记录网络运行状态和网络安全事件的技术措施,并按照规定留存相关的网络日志不少于六个月‌。‌

目前,市面上日志类产品接近10W左右,功能对于一些小公司来说有些过剩。

在这里分享一个我自己基于开源组件搭建的日志服务器(PC电脑即可满足性能要求),对于法律中的存储要求绰绰有余。不过loganalyzer的展示、搜索功能满足要求,分析功能差强人意,大家可按需搭建。

我自己也针对rsyslog的数据库接口写了一个API数据接口服务,后续将放在仓库里共享,可配合数据分析脚本使用。

运行环境

操作系统:CentOS 7
数据库:mysql5.6 (yum 默认安装)
rsyslogd:8.24.0 (系统自带)
中间件:httpd (Apache) 2.4.6 (yum 默认安装)
运行环境:php、php-mysql、gd、gd-devel、php-gd (yum 默认安装)
loganalyzer:4.1.6 (官网下载)

其他运行环境安装、配置类似,如有差异自行豆包

数据库配置

1、修改配置文件: /etc/my.cnf

skip_name_resolve=ONinnodb_file_per_table=ONinteractive_timeout=28800000wait_timeout=28800000#防止中文乱码character-set-server=utf8init_connect='SET NAMES utf8'

2、安装rsyslog连接至mysql的驱动模块;

yuminstallrsyslog-mysql

安装完成后,查看安装结果

[root@localhost rsyslog-8.24.0]$rpm-qlrsyslog-mysql /usr/lib64/rsyslog/ommysql.so /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql

ommysql.so --> rsyslog输出时用到的模块,需要在/etc/rsyslog.conf配置文件里进行配置
mysql-createDB.sql --> 帮我们生成rsyslog所依赖的数据(表,字段,表结构等等)的sql脚本

3、导入rsyslog表结构

mysql-uUSER-hHOST-pPASSWORD</usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql

查看执行结果

mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||Syslog||mysql||performance_schema|+--------------------+4rowsinset(0.00sec)mysql>useSyslog Readingtableinformationforcompletionoftableandcolumnnames You can turnoffthis featuretoget a quicker startupwith-ADatabasechanged mysql>showtables;+------------------------+|Tables_in_Syslog|+------------------------+|SystemEvents||SystemEventsProperties|+------------------------+2rowsinset(0.00sec)

4、建立syslog专用的用户账号(数据库名叫Syslog,用户名和密码自己改)

GRANTALLONSyslog.*TO'rsyslog'@'127.0.0.1'IDENTIFIEDBY'abcd1234';GRANTALLONSyslog.*TO'rsyslog'@'localhost'IDENTIFIEDBY'abcd1234';flushprivileges;

5、修改表结构(可以不操作)
rsyslogd数据默认不会存储客户端IP信息,为保存客户端IP地址,修改数据库表结构(添加FromIP字段):

mysql>useSyslog;Readingtableinformationforcompletionoftableandcolumnnames You can turnoffthis featuretoget a quicker startupwith-ADatabasechanged mysql>altertableSystemEventsaddFromIPvarchar(60)defaultnullafterFromHost;Query OK,0rowsaffected(0.03sec)Records:0Duplicates:0Warnings:0

若执行本步操作后,rsyslog.conf中template insertpl语句为(自行对比差异):

$template insertpl,"insert into SystemEvents (Message, Facility, FromHost, FromIP, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%HOSTNAME%', '%fromhost-ip%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",SQL

rsyslog配置

1、编辑配置文件: /etc/rsyslog.conf

在此只介绍修改后的配置项,其余项默认即可

$template insertpl,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%fromhost-ip%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",SQL $template Remote,"/var/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" :fromhost-ip, !isequal, "127.0.0.1" ?Remote :fromhost-ip, !isequal, "localhost" ?Remote if $fromhost-ip != '127.0.0.1' and $fromhost-ip != 'localhost' then { $ModLoad ommysql *.info,*.notice,*.warning;*.err;*.crit;*.alert;*.emerg :ommysql:127.0.0.1,Syslog,rsyslog,abcd1234;insertpl } # The imjournal module bellow is now used as a message source instead of imuxsock. $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal $ModLoad imklog # reads kernel messages (the same are read from journald) $ModLoad immark # provides --MARK-- message capability # Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # Provides TCP syslog reception #$ModLoad imtcp #$InputTCPServerRun 514

FACILITY定义

服务类型功能、描述符号syslog序列号
kern内核信息LOG_KERN0
user用户进程LOG_USER1
mail邮件LOG_MAIL2
daemon后台进程LOG_DAEM3
authpriv授权信息LOG_AUTH4
syslog系统日志LOG_SYSLOG5
lpr打印信息LOG_LPR6
news新闻组信息LOG_NEWS7
uucpUUCP程序LOG_UUCP8
cron计划和任务信息LOG_CRON9
认证消息LOG_AUTHPRIV10
FTP daemonLOG_LOGTP11
NTP subsystemLOG_NTP12
log auditLOG_AUDIT13
log alertLOG_ALERT14
clock daemonLOG_CLOCK15
local0-local7本地用户LOG_LOCALn16-23

PRIORITY定义

优先级含义符号syslog序列号
debug调试级——信息量最多LOG_DEBUG7
info通知性消息LOG_INFO6
notice普通但重要的消息LOG_NOTICE5
warning警告消息LOG_WARNING4
err出错消息LOG_ERR3
crit重要消息LOG_CRIT2
alert紧急消息LOG_ALERT1
emerg最紧急的消息LOG_EMERG0
none不保存信息

2、重启rsyslog

servicersyslog restart

loganalyzer安装

loganalyzer安装比较简单,按步骤慢慢来就行。
参考网站:http://www.ifzhai.com/article.php?id=9

Tips:
安装时先关闭selinux,否则会因无法写入文件而报错(坑啊,测试时被坑了一天。。。)

修改文件 /etc/selinux/config

SELINUX=disabled

这一步骤还可以使用命令直接修改

sed-i's#SELINUX=enforcing#SELINUX=disabled#g'/etc/selinux/config

CentOS 6.9及以下好像没这个问题(没测试过)

防火墙配置

CentOS 7开始使用firewalld默认的防火墙,代替iptables(相比iptables,firewalld真难用)

#开放80端口(网段自己加)firewall-cmd--permanent--add-rich-rule='rule family="ipv4" source address="xxx.xxx.xxx.0/24" port procotol="tcp" port="80" accept '#开放514端口(网段自己加)firewall-cmd--permanent--add-rich-rule='rule family="ipv4" source address="xxx.xxx.xxx.0/24" port procotol="udp" port="514" accept '#对调试机开放3306firewall-cmd--permanent--add-rich-rule='rule family="ipv4" source address="xxx.xxx.xxx.xx" port procotol="tcp" port="3306" accept '#限制ssh登陆firewall-cmd--permanent--remove-service=ssh firewall-cmd--permanent--add-rich-rule='rule family="ipv4" source address="xxx.xxx.xxx.xx" port procotol="tcp" port="22" accept '#加载防火墙策略firewall-cmd--reload#查看防火墙策略firewall-cmd --list-all
http://www.jsqmd.com/news/780508/

相关文章:

  • 使用CGAL构建完美球体网格
  • 2026年分布式坐席制造商口碑榜:这几家最靠谱
  • 微信小程序跑腿平台(30263)
  • 【STM32】启动过程分析
  • Windows光标转Linux主题:Project Sekai风格光标自动化转换指南
  • 原神144帧终极解锁指南:告别60帧限制,体验丝滑战斗
  • Cyclone III FPGA在LCD HDTV图像处理中的优势与应用
  • 说好的“常开常新”呢?上汽荣威这波操作,老车主彻底怒了!
  • 命令行工作流引擎cli-continues:基于状态的条件自动化实践
  • 山东化工厂楼顶大字设计指南:2024年安全规范与创新趋势解析
  • 微信小程序插画共享平台(30264)
  • AI主播与MCP协议集成:智能视频创作工作流实践
  • KG-RAG:基于知识图谱的检索增强生成技术,重塑生物医学问答
  • 从白炽灯到LED:家庭节日照明升级的技术原理、选购与实战指南
  • OpenClearn:AI智能体工作空间自动化清理工具实战指南
  • Verl-Tool:基于强化学习的工具调用智能体训练框架详解
  • DevContext:为AI编程助手构建持久化记忆系统的四层模型与实践
  • Redis分布式锁进阶第三十五篇
  • 2026年靠谱的除油氢氧化钠厂家综合对比分析 - 行业平台推荐
  • 实战入口:Claude 到底在哪用?网页版、桌面端与多端场景全解
  • OpenPicoRTOS:ARM Cortex-M微控制器上的极简实时操作系统设计与实战
  • AI绘画提示工程实战:从权重语法到高阶控制全解析
  • 为什么 k8s controller manager 会出现无限重启的情况?
  • 如何从上游策略实现抗体药物的质量控制?
  • 从零构建团队专属CLI工具:自动化项目脚手架与代码生成实践
  • Code Buddy:实时监控AI编程助手状态,提升开发效率与掌控感
  • 方形补偿器哪个靠谱?选型指南来了
  • Cursor AI编程规则配置指南:提升代码生成质量与团队协作效率
  • 6条Claude Code实践中的经验与思考
  • 国内内容创作者必收:Gemini 3.1 Pro解决办公问题的免费入口