rsyslog+loganalyzer:中小规模服务器日志集中管理实战指南

发布时间:2026/10/4 8:49:33
rsyslog+loganalyzer:中小规模服务器日志集中管理实战指南 有些日子不碰CentOS 7了但只要一说到日志集中管理这套组合拳——rsyslog加loganalyzer——依然是中小规模服务器环境里性价比最高的方案之一。你不需要为了一套日志系统把机器配置堆到八核十六G也不需要啃完Elasticsearch那套分布式搜索引擎的文档只要一台1C2G的小机器就能把散落在几十台服务器上的系统日志、应用日志、网络设备日志全部收拢到一个地方再用浏览器按条件筛选、排错。这篇文章我按自己的实战流程来写重点放在那些文档里不会告诉你的细节上照着做基本一次能通。1. 方案设计与核心思路1.1 为什么选rsyslog加loganalyzer而不是ELK很多刚接触日志中心的人第一反应就是上ELK毕竟Elasticsearch加Kibana的图表效果确实好看。但冷静下来算一笔账就明白了ELK全家桶跑起来Elasticsearch的JVM堆内存、Logstash的常驻内存、Kibana的Node进程一台4G内存的机器光跑这套就有点喘更别提后面还要维护索引生命周期、分片副本这些东西。rsyslog本身就是CentOS 7系统自带的日志服务几乎零额外资源开销它做的事情就是把系统里各个模块产生的日志消息按规则接收、过滤、转发、落盘。而loganalyzer是一个基于PHP的Web前端它不自己存日志而是去读rsyslog已经写好的日志文件然后以网页表格的形式展示出来支持关键字搜索、时间范围过滤、消息类型筛选。简单说rsyslog负责“收”和“存”loganalyzer负责“看”和“查”。这个组合最适合的规模是几十台以内的服务器或者日志量每天几个GB以下。超过这个量级我建议你直接上ELK或者Loki不要在rsyslog上花太多精力做性能调优边际收益太低。规模小的时候用这套方案一不用额外装Java环境二不用考虑日志索引的存储空间翻倍问题三不会因为Logstash挂掉导致整个日志链路瘫痪稳定压倒一切。1.2 整体架构与工作流程这套日志系统跑起来之后的完整数据流是这样的所有客户端机器上的rsyslog服务按照配置把需要的日志通过UDP或者TCP协议发送到日志服务器的514端口日志服务器上的rsyslog收到消息后经过模板规则匹配把不同来源的日志分别写入对应的文件比如按客户端主机名、按IP地址、按日志类型分目录存放loganalyzer以只读方式读取这些日志文件在Web界面上做格式化展示。这个流程里有一个非常关键的设计决策loganalyzer并不直接连rsyslog的数据库也不通过API去拉取日志它就是老老实实地“读文件”。所以你在配置loganalyzer的时候填的日志源路径必须跟rsyslog实际落盘的文件路径完全一致而且运行Apache的用户通常是apache用户必须对这些日志文件有读取权限否则页面上就是一片空白。这两个点我在后面会专门详细说明也是新手最容易卡住的地方。1.3 核心组件清单及职责划分先列一个清单把涉及到的组件和它们各自的角色搞清楚后面配置的时候就不会一头雾水rsyslogCentOS 7系统自带负责日志的接收、解析、过滤和落盘rsyslog-mysql可选组件如果你希望日志同时写入数据库且用loganalyzer的数据库模式展示需要装它MariaDB可选loganalyzer初始化时需要一个数据库来存自身的配置信息、用户账号和日志摘要httpdApacheWeb服务承载loganalyzer的运行PHPloganalyzer是PHP写的需要PHP环境支持注意CentOS 7默认的PHP版本可能偏老loganalyzerWeb前端读日志文件并图形化展示这里要说明一下网上很多教程会引导你把日志写入MySQL然后让loganalyzer直接读数据库。我个人的建议是如果日志量不大直接用“文件模式”就行数据库模式会带来额外的磁盘占用和查询性能问题而且当日志量上来之后MariaDB的写入会成为瓶颈。把日志落盘再让loganalyzer读文件简单粗暴、稳定可靠出了问题也容易排查。2. 环境准备与基础依赖安装2.1 服务器基础配置检查动手装东西之前先把日志服务器的底子打好。不建议用全新的最小化安装镜像去折腾如果你手头机器少可以直接用CentOS 7的最小化安装然后按下面几步把基础环境补齐。检查主机名和IP设置因为rsyslog写日志模板时会用到主机名来区分日志来源如果主机名乱糟糟的后面分目录存日志的时候会非常痛苦hostnamectl set-hostname logserver # 确认IP地址建议用静态IP ip addr show时间同步必须做好。日志服务器最怕的就是各客户端时间不一致排障时看到的日志时间线乱成一团前后顺序都对不上。CentOS 7默认带chrony确认它已经启动并同步成功systemctl status chronyd timedatectl如果时间偏得离谱执行下面命令强制同步一次systemctl restart chronyd chronyc tracking然后是SELinux的问题。我知道很多人一上来就setenforce 0图省事。但严格来说更好的做法是把SELinux设为宽松模式或者针对相关服务放行。不过考虑到日志服务器在内网环境而且rsyslog和Apache的SELinux策略确实会阻碍日志文件读取我给个稳妥的建议如果组网环境比较信任直接修改/etc/selinux/config把SELINUX设为permissive这是省心做法如果必须保持enforcing那后面要处理httpd读取日志目录的SELinux布尔值麻烦不少。2.2 安装LAMP环境接下来把Apache、PHP、MariaDB装上。用yum直接装就行CentOS 7自带的源里就有这些包yum install -y httpd php php-mysql php-gd mariadb-server mariadb装完之后启动服务并设置开机自启systemctl start httpd systemctl enable httpd systemctl start mariadb systemctl enable mariadb记得初始化MariaDB的root密码和基本安全设置mysql_secure_installationMariaDB在这里的角色比较特殊。如果后面你选择用loganalyzer的“数据库模式”那日志数据会写到数据库里查询靠SQL。但绝大多数人用loganalyzer都是走文件模式数据库只用来存loganalyzer自身的配置和用户表。所以不管用哪种模式MariaDB都是必须的但日志本身的存储位置取决于你的选择。CentOS 7默认的PHP版本是5.4这个版本对loganalyzer来说勉强兼容但如果你下载的是比较新的loganalyzer版本可能会遇到PHP语法兼容问题。稳妥的做法是用yum安装epel-release之后查一下是否有php7相关的包可以升级。2.3 下载并部署loganalyzerloganalyzer的官方下载地址在GitHub上最新版本已经到4.x。用wget直接拉压缩包到服务器cd /opt wget https://github.com/rsyslog/loganalyzer/archive/refs/tags/v4.1.12.tar.gz tar -zxvf v4.1.12.tar.gz cp -r loganalyzer-4.1.12/src /var/www/html/loganalyzer chown -R apache:apache /var/www/html/loganalyzer这里有个细节容易踩坑直接把src目录拷出来作为Web根目录下的loganalyzer子目录你会发现里面没有配置文件因为loganalyzer是首次访问时才通过网页向导生成配置的。所以拷完之后手动创建一个可写的config.php所在目录mkdir -p /var/www/html/loganalyzer/configs chown -R apache:apache /var/www/html/loganalyzer/configs然后重启Apache让PHP解析生效systemctl restart httpd到这一步LAMP环境和loganalyzer程序就已经就位了还没配置rsyslog和loganalyzer本身浏览器访问还需要等后面配置完才能看到安装界面。3. rsyslog服务端配置与日志采集规则3.1 配置rsyslog监听与模板规则rsyslog的关键配置都集中在/etc/rsyslog.conf和/etc/rsyslog.d/目录下。CentOS 7默认的rsyslog版本是8.x语法跟老版本有些差异但传统的$ModLoad写法依然兼容。先修改主配置文件启用UDP和TCP模式的接收模块。UDP适合网络设备TCP适合对可靠性要求高的场景两个都开也没问题vim /etc/rsyslog.conf找到下面几行把注释去掉$ModLoad imuxsock $ModLoad imjournal $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514这里重点说一下imudp和imtcp的区别。UDP模式开销小传输快但丢包了不重发适合路由器、交换机这种能容忍偶尔丢一条日志的设备TCP模式有确认机制保证日志不丢失但相对耗资源一些。服务器上的rsyslog客户端建议用TCP网络设备建议UDP两边都开是为了兼容不同来源。然后在/etc/rsyslog.d/目录下新建一个专门处理远程日志的配置文件把日志按来源IP和程序名分目录存vim /etc/rsyslog.d/remote.conf写入如下配置$template RemoteLogs,/data/logs/%fromhost-ip%/%programname%.log :fromhost-ip, !isequal, 127.0.0.1 ?RemoteLogs stop解释一下这两行第一行定义了一个模板RemoteLogs日志文件的路径是/data/logs/来源IP/程序名.log第二行是匹配规则如果来源IP不是本机回环地址就把日志按模板路径写入第三行的 stop是告诉rsyslog不再继续处理这条消息避免重复写入。这里有个设计选择要说明为什么用%fromhost-ip%而不是%hostname%因为某些设备或者应用发送日志时hostname字段可能是乱填的但来源IP是改不了的按IP分目录最不容易出问题。如果想看到更友好的名称也可以用%hostname%模板但务必先确认所有客户端的hostname都是规范设置的。创建日志根目录并确认rsyslog进程对该目录有写入权限mkdir -p /data/logs chmod 755 /data/logs重启rsyslog让配置生效systemctl restart rsyslog验证端口确实在监听netstat -lntup | grep 514你应该能看到udp和tcp的514端口都在LISTEN状态。3.2 验证rsyslog日志写入是否正常配置完别急着去装Web界面先用最简单的方式测一下收日志是否正常。在日志服务器本机往514端口发一条测试日志logger -n 127.0.0.1 -P 514 test message from localhost然后看看/data/logs目录下有没有生成文件find /data/logs -type f -name *.log如果生成了127.0.0.1目录下的systemd.log或者其他文件说明本地发送已经通了。再模拟一个远程客户端比如从另一台机器上用nc或logger往服务器发日志# 在客户端执行 logger -n 192.168.1.100 -P 514 test from client machine回到服务器上看/data/logs/192.168.1.100/目录下是否生成了对应文件。这一步验证很重要因为很多问题都在于firewalld或者SELinux把514端口挡了本地发没问题远程就是收不到。如果远程收不到包在服务器上用tcpdump抓包确认yum install -y tcpdump tcpdump -i eth0 port 514 -nn执行后在客户端再发一次看tcpdump有没有输出。如果抓不到包那就是防火墙在中间拦着能抓到包但没写入文件那就是rsyslog的配置规则或SELinux的问题排查方向就明确了。3.3 日志轮转与容量管理日志文件的增长速度比你想象中要快。一个几十台规模的集群每天产生的系统日志量可能达到几个GB如果不做轮转磁盘很快就会被撑爆。CentOS 7自带的logrotate机制其实已经可以覆盖rsyslog的日志文件但需要针对/data/logs目录单独配置vim /etc/logrotate.d/rsyslog-remote写入如下内容/data/logs/*/*.log { daily rotate 30 compress delaycompress missingok notifempty create 0640 root root postrotate /usr/bin/systemctl restart rsyslog endscript }解释一下关键参数daily表示每天轮转一次rotate 30表示保留最近30天的日志compress表示对旧日志做gzip压缩能省一半以上的磁盘空间delaycompress是延迟到下一次轮转时再压缩保证正在写的文件不受影响postrotate里的restart是为了让rsyslog重新打开新的日志文件。这里有个容易忽略的点logrotate执行时机默认是每天凌晨但如果你觉得一天一次间隔太长也可以改成hourly或者在cron里自己定任务。对于日志量特别大的环境我会额外写一个cron任务每小时跑一次logrotate避免单日日志文件过大导致loganalyzer读取时卡顿。4. loganalyzer Web界面配置与使用4.1 通过Web向导完成初始化配置现在到了最关键的一步浏览器访问loganalyzer的安装页面http://你的服务器IP/loganalyzer/你会看到一个安装向导第一步是检查环境依赖只要PHP版本和目录权限没问题直接点Next继续。第二步会让你选数据库类型和连接参数这里要注意loganalyzer自身需要数据库所以要把MariaDB的信息填上数据库类型MySQL数据库主机名localhost数据库端口3306数据库名称loganalyzer数据库用户名root数据库密码你设置的MariaDB密码在向导里它可能会提示让你先创建数据库可以用命令行新建mysql -uroot -p -e CREATE DATABASE loganalyzer DEFAULT CHARACTER SET utf8;下一步是创建loganalyzer的管理员账号这个账号是用来登录Web界面的密码要设置得复杂一些毕竟日志里可能包含敏感信息。再下一步会让你定义日志源这里就是选择“文件模式”还是“数据库模式”。我的建议是选择文件模式然后在“日志文件路径”里填上rsyslog实际落盘的路径。如果你有多个来源比如按IP分了多个目录loganalyzer支持添加多个日志源每个日志源对应一个目录。可以这样填在添加日志源的时候文件名一栏留空或者填一个匹配模式比如/data/logs/192.168.1.*/loganalyzer会把这个目录下的所有.log文件都当作一个日志源来处理。填写完所有配置向导会生成config.php文件。如果最后一步提示无法写入配置文件检查一下/var/www/html/loganalyzer/configs目录的权限确保apache用户可写。4.2 界面汉化与常用功能操作loganalyzer默认界面是英文的想切换成中文其实非常简单。装好之后有两种方法方法一是在安装向导的“语言”选项里直接选择Chinese后续步骤和界面都会变成中文。方法二是装好之后修改config.php文件vim /var/www/html/loganalyzer/configs/config.php找到$CFG[Language]这一行把值改成zh_cn$CFG[Language] zh_cn;然后刷新浏览器页面界面就变成中文了。注意改完配置之后要清一下浏览器缓存否则可能还是旧页面。登录进主界面之后你会看到按时间倒序排列的日志列表。顶部有几个筛选条件来源主机、程序名、日志级别、关键字、时间范围。我平时用得最多的是两个功能按关键字搜索某台机器的某个应用报错信息以及按时间范围对比不同机器在同一时间段内的日志输出。loganalyzer还有一个“报表”功能可以按天、周、月生成日志量统计图表虽然不像Kibana那么花哨但用来观察日志增长趋势、提前预判磁盘占用是非常实用的。另外提一下“实时视图”功能它像tail -f一样实时刷新日志排障的时候开着这个窗口配合客户端操作能直观地看到日志一条条打进来非常有用。4.3 多日志源的管理技巧在实际部署中你通常不会只有一台客户端机器。为了让loganalyzer展示得更清晰建议按照rsyslog落盘时的目录结构来配置多个日志源。比如你有三组机器IP段分别是192.168.1.x、192.168.2.x、192.168.3.x日志服务器上就会自动生成三个目录。在loganalyzer里添加日志源的时候每个日志源可以设置一个显示名称。我习惯用业务名比如“web-server-group”、“db-server-group”这样在Web界面里切换日志源时一目了然。还有一种做法是用rsyslog的模板直接按程序名分目录比如所有机器上的sshd日志都写入/data/logs/sshd.log。这样loganalyzer只需要配置一个日志源但缺点是不同机器的相同程序日志混在一起按主机筛选时不太方便。两种方案各有优劣我倾向于按IP分目录因为排障时通常是先定位到机器再看那台机器上的具体日志。5. 客户端配置与日志上报验证5.1 rsyslog客户端配置详解日志服务器搭好之后接下来就是把各个客户端的日志往服务器上送。客户端只需要改一个配置文件即可。以另一台CentOS 7机器为例修改/etc/rsyslog.conf在文件末尾追加一行*.* 192.168.1.100:514注意这里的语法一个符号表示UDP发送两个符号表示TCP发送。因为前面在服务器上开了TCP监听推荐用两个避免日志在传输过程中丢失。如果你只想发送特定类型的日志可以精确匹配。比如只发authpriv认证信息和cron计划任务相关日志authpriv.* 192.168.1.100:514 cron.* 192.168.1.100:514这里有个细节值得注意客户端配置完成后一定要重启rsyslog服务systemctl restart rsyslog然后去服务器上的/data/logs/客户端IP/目录下看看有没有生成对应的日志文件并且内容在持续增长。如果没生成先在客户端确认一下514端口连通性telnet 192.168.1.100 514能连上说明网络通问题可能在rsyslog配置上连不上就是防火墙或者网络的问题。5.2 journald与rsyslog的区别及协作方式很多人在CentOS 7上会疑惑系统里既有journald又有rsyslog到底谁在管日志它们有什么区别这里简单理一下。systemd环境下journald是所有日志的第一接收者它把内核日志、系统服务日志、应用输出全部收集到二进制格式的journal文件里存储在/run/log/journal或/var/log/journal目录下。好处是查询快支持结构化元数据过滤通过journalctl命令可以按时间、服务、优先级等条件精准筛选。但journald默认不把日志以明文文本形式写入传统日志文件如果让你去查看某些服务日志还是得依赖rsyslog帮你把journald收到的日志转写到/var/log/messages或者自定义的文件里。两者协作的机制是这样的rsyslog的imjournal模块会读取journald的数据再按照rsyslog的配置规则把日志写入文本文件或者发送到远程服务器。所以你在rsyslog.conf里看到的$ModLoad imjournal干的就是这件事。如果你希望某些服务的日志也被转发到远程日志服务器只需确保对应的服务输出被systemd journal捕获然后rsyslog通过imjournal读取转发即可。默认情况下rsyslog会读取journald所有日志并写入/var/log/messages等文件我们配置的远程发送规则也会一并生效。想用journalctl确认一条日志确实被记录到了journal里可以journalctl -u sshd -n 20如果能看到sshd服务的日志说明journald已经捕获了接下来rsyslog会把它们转发出去。5.3 非Linux设备的日志上报配置日志服务器不只是给Linux服务器用的。公司里的交换机、路由器、防火墙甚至某些打印机、UPS设备都支持syslog协议上报日志。这类设备配置通常不需要装agent只要在设备的Web管理后台或者CLI里找到“日志设置”或“syslog服务器”选项填上日志服务器的IP和端口514选择日志级别协议选UDP保存即可。这类网络设备日志的价值很高尤其是防火墙的阻断日志、交换机的端口up/down事件、路由器的配置变更记录。把它们和服务器日志放在同一个loganalyzer里展示排障时能看到端到端的完整链路很多诡异问题都是从这里找到线索的。有一点需要留意网络设备的日志格式和Linux的syslog格式有差异某些设备发出的日志时间戳格式不规范rsyslog解析时可能会出错。这种情况下建议在rsyslog配置里对该来源IP的日志不做复杂解析直接原文落盘$template RawLogs,/data/logs/%fromhost-ip%/raw.log :fromhost-ip, isequal, 192.168.100.1 ?RawLogs stop这样至少保证日志不会因为解析失败而丢失。6. 常见问题与排错实录6.1 日志收不到或写入缓慢排查我遇到最多的问题就是客户端配置好了服务器上却不见日志文件。排查顺序很关键别一上来就翻rsyslog配置按照下面这个顺序走一遍先确认网络通不通。在客户端ping服务器IP然后telnet服务器的514端口。如果端口不通大概率是防火墙还没放行。防火墙检查分两部分firewalld和iptables。CentOS 7默认用firewalld但有时候装了别的软件会同时存在iptables服务。放行命令firewall-cmd --permanent --add-port514/tcp firewall-cmd --permanent --add-port514/udp firewall-cmd --reload如果还是不通看看iptables有没有规则在拦截iptables -L -n | grep 514再确认服务器上rsyslog确实在监听514端口netstat -lntup | grep rsyslog如果有监听但远程不来用tcpdump抓包验证是最快速的定位方式。网络没问题、监听也没问题那就是SELinux在作怪。rsyslog本身写日志不太受SELinux限制但如果你是让loganalyzer读取rsyslog生成的日志文件Apache的httpd进程会被SELinux限制读不到某些目录。这时要么调整目录的SELinux类型semanage fcontext -a -t httpd_sys_content_t /data/logs(/.*)? restorecon -Rv /data/logs要么把SELinux设为permissive我前面建议过的方法。6.2 loganalyzer页面空白或报错处理loganalyzer页面一片空白是最让人头疼的问题因为PHP报错被隐藏了看不到具体原因。定位方法是在/etc/php.ini里临时打开错误显示vim /etc/php.ini # 把 display_errors Off 改成 On display_errors On然后重启Apache刷新页面这时候通常会看到具体的PHP错误信息比如某个扩展没装、配置文件权限不对、数据库连接失败等。常见的空页面原因有几个一是/var/www/html/loganalyzer/configs目录的属主不是apache导致config.php无法生成或写入二是PHP缺少某个扩展比如php-mysql没装导致连接数据库时报错被吞掉三是loganalyzer版本太新和PHP 5.4不兼容。最后这种情况直接换loganalyzer 3.x版本就好功能完全够用。6.3 514端口权限与占用问题rsyslog的514端口是系统端口小于1024的端口只有root用户能绑定。rsyslog以root身份启动所以绑定514没问题。但如果系统里还有其他程序占用了514端口比如syslog-ng或者别的日志服务rsyslog会启动失败或端口冲突。排查lsof -i :514如果发现占用进程不是rsyslog先停掉那个服务再重启rsyslog。还有一种情况是rsyslog配置了imudp或者imtcp模块但配置文件语法有误导致rsyslog启动时直接失败。可以通过下面命令看rsyslog状态systemctl status rsyslog journalctl -u rsyslog -n 50快速确认是否有配置错误。6.4 时间不同步引发的日志错乱问题日志平台上出现“日志时间线错乱”、“某条日志看起来是未来的时间”这类问题九成是客户端时钟漂移。你可以想一下日志服务器收到的每条消息都带有客户端自己的时间戳如果客户端时间比服务器快了两分钟那它在服务器上生成的日志文件的写入时间就会是“未来时间”loganalyzer按时间排序时这些日志会一直排在前面排障时看到顺序不对很容易误判事件的前后因果。解决办法是在所有客户端和服务器上都配置chrony指向同一个NTP时间源。CentOS 7的chrony配置在/etc/chrony.conf如果是内网环境让所有机器指向日志服务器作为时间源日志服务器再同步外网NTP。时间同步这件事必须在部署日志平台之前做好不然后面数据都是脏的。6.5 日志文件权限问题导致loganalyzer读取不到这个问题非常隐蔽。rsyslog以root身份运行它生成的日志文件默认属主是root权限是600。Apache进程以apache用户运行根本读不了root创建的600权限文件。你从Web界面上看到的日志源是配置好的但实际刷新时一条日志都没有。解决办法是在rsyslog模板里配置文件的创建权限。回到/etc/rsyslog.d/remote.conf在模板定义里加上文件属主和权限的设置$template RemoteLogs,/data/logs/%fromhost-ip%/%programname%.log $FileOwner apache $FileGroup apache $FileCreateMode 0644 :fromhost-ip, !isequal, 127.0.0.1 ?RemoteLogs stop加了这三行之后rsyslog新建的日志文件自动属于apache用户权限0644Apache就能读了。如果文件已经生成了需要手动改一次属性chown -R apache:apache /data/logs chmod -R 644 /data/logs这条是我在多次部署中总结出来的关键经验大部分loganalyzer空页面的问题根因就在这里。7. 性能调优与安全加固7.1 rsyslog高并发写入调优思路当客户端数量增多日志量变大后rsyslog默认配置可能扛不住。有几个参数值得调整。在/etc/rsyslog.conf里可以设置队列相关参数$MainMsgQueueSize 100000 $MainMsgQueueType LinkedList $MainMsgQueueTimeoutShutdown 10000 $MainMsgQueueTimeoutActionCompletion 5000这些参数的意思是主消息队列最多缓存10万条消息用链表类型队列这样在高并发下不容易丢日志。当rsyslog需要重启或停止时留出10秒时间把队列里的日志尽量写完。还有磁盘IO的考虑。rsyslog写日志是频繁的小文件写入对磁盘IOPS有一定要求。如果日志量大建议把/data/logs放在独立的磁盘分区上避免和系统盘抢IO。可以用iostat看看当前磁盘负载如果%util一直超过80%考虑换SSD或者把日志目录迁移到其他盘。7.2 rsyslog的TLS加密传输配置默认的syslog协议是明文传输日志内容在网络传输过程中可以被抓包看到。如果日志里包含敏感信息比如用户登录IP、数据库操作记录建议启用TLS加密。rsyslog支持TLS需要安装gtls模块yum install -y rsyslog-gnutls然后在配置里启用TLS监听指定证书和私钥$DefaultNetstreamDriver gtls $DefaultNetstreamDriverCAFile /etc/pki/tls/certs/ca.pem $DefaultNetstreamDriverCertFile /etc/pki/tls/certs/server-cert.pem $DefaultNetstreamDriverKeyFile /etc/pki/tls/private/server-key.pem $InputTCPServerStreamDriverMode 1 $InputTCPServerStreamDriverAuthMode x509/name客户端也需要做对应的TLS配置这里不展开但要提醒的是TLS会带来一定的CPU开销如果只是内网环境且不涉及敏感数据明文传输也能接受看你的安全策略要求。7.3 日志访问安全控制loganalyzer的Web页面是对所有能访问到它的人开放的如果不对访问权限做限制等于把服务器日志裸奔在网络上。建议至少做两层防护一层是Apache的访问控制比如只允许内网特定网段访问vim /etc/httpd/conf.d/loganalyzer.conf写入Directory /var/www/html/loganalyzer Options Indexes FollowSymLinks AllowOverride None Require ip 192.168.0.0/16 /Directory另一层是在loganalyzer自身开启用户认证设置复杂的管理员密码并且禁用默认的游客访问权限。loganalyzer的管理后台里可以设置用户权限将匿名访问关闭所有用户必须登录后才能看日志。7.4 日志存储空间的长期规划日志存储空间是个长期问题最怕的是没人管某天突然把磁盘写满了业务系统直接异常。解决思路有三个一是前面说的logrotate轮转压缩和定期清理老日志二是把日志目录挂载到独立的、容量大的分区三是在crontab里加一个磁盘空间告警脚本当/data分区的使用率超过85%时发邮件或短信通知。我在生产环境里的做法是每周检查一次日志增长量结合logrotate的保留周期估算出磁盘够不够撑一个月。如果发现增长太快优先排查是否某些服务的debug级别日志被意外开启了。写在最后的经验汇总这套rsyslogloganalyzer方案我跟了五六年稳定性完全够用。最后再给几点个人心得。日志服务器的机器配置不需要太高但磁盘一定要给足尤其是你用文件模式存储磁盘就是你的日志容量上限。建议固态硬盘起步几千个日志文件索引和读取时机械盘会有明显的延迟。rsyslog配置改动后不要直接restart先用rsyslogd -N1做一次语法检查避免小错误导致服务起不来。客户端的日志转发规则尽量精简不要什么都往服务器送先明确你需要哪些日志再配规则。最后是备份日志数据本身就是一种资产建议定期把/data/logs目录做异地备份别等磁盘坏了才想起来找日志。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询