凌峰创科服务平台

Linux如何快速搭建日志服务器?

在Linux环境中搭建日志服务器是企业级运维中常见的需求,主要用于集中管理、存储和分析多台服务器的日志信息,便于故障排查、安全审计和系统监控,以下是详细的搭建步骤及配置说明。

Linux如何快速搭建日志服务器?-图1
(图片来源网络,侵删)

环境准备

首先需要一台独立的Linux服务器作为日志服务器,推荐使用CentOS或Ubuntu等主流发行版,服务器配置建议:CPU 2核以上、内存4GB以上、硬盘100GB以上(根据日志量扩容),并确保网络互通,假设日志服务器IP为192.168.1.100,客户端IP为192.168.1.x。

安装日志服务器软件

安装rsyslog(主流日志服务)

rsyslog是高性能的日志系统,支持TCP/UDP传输、日志过滤和数据库存储,以CentOS为例:

sudo yum install rsyslog -y  # CentOS/RHEL
sudo apt install rsyslog -y # Ubuntu/Debian

配置rsyslog

编辑主配置文件/etc/rsyslog.conf,启用TCP监听(默认监听514端口)并配置日志存储路径:

module(load="imtcp")  # 加载TCP模块
input(type="imtcp" port="514")  # 监听514端口
# 定义日志存储规则
$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& stop  # 防止日志继续传递到本地文件

保存后创建日志存储目录并设置权限:

Linux如何快速搭建日志服务器?-图2
(图片来源网络,侵删)
sudo mkdir -p /var/log/remote
sudo chmod 755 /var/log/remote

启动并设置开机自启

sudo systemctl restart rsyslog
sudo systemctl enable rsyslog

配置客户端日志转发

在需要收集日志的客户端(如Web服务器、数据库服务器)上安装rsyslog,并配置将日志发送到服务器:

sudo yum install rsyslog -y  # 客户端安装

编辑客户端配置文件/etc/rsyslog.conf,添加以下内容:

*.* @192.168.1.100:514  # 使用TCP协议发送日志(@为TCP,@@为UDP)

重启客户端rsyslog服务:

sudo systemctl restart rsyslog

日志分析与可视化(可选)

安装ELK Stack(Elasticsearch + Logstash + Kibana)

若需高级分析,可部署ELK Stack:

Linux如何快速搭建日志服务器?-图3
(图片来源网络,侵删)
  • Elasticsearch:存储和检索日志
  • Logstash:处理和过滤日志
  • Kibana:可视化界面

以CentOS为例安装Elasticsearch:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
EOF
sudo yum install elasticsearch -y
sudo systemctl start elasticsearch

配置Logstash收集rsyslog日志

创建配置文件/etc/logstash/conf.d/01-syslog.conf

input {
  tcp {
    port => 514
    type => "syslog"
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "syslog-%{+YYYY.MM.dd}"
  }
}

启动Logstash:

sudo systemctl start logstash

安装Kibana

sudo yum install kibana -y
sudo systemctl start kibana

访问http://服务器IP:5601,首次运行需配置Elasticsearch连接。

日志轮转与清理

为避免日志占满磁盘,配置logrotate自动轮转日志,编辑/etc/logrotate.d/rsyslog

/var/log/remote/*/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 644 root root
}

此配置将每天轮转日志,保留7天历史,并压缩旧日志。

安全加固

  1. 防火墙配置:仅允许信任的客户端访问514端口:
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="514" accept'
    sudo firewall-cmd --reload
  2. TLS加密:若需高安全性,可配置rsyslog over TLS,需生成证书并修改配置文件启用加密传输。

FAQs

问题1:客户端日志无法发送到服务器,如何排查?
解答:首先检查服务器防火墙是否放行514端口,使用telnet 192.168.1.100 514测试连通性,若不通,检查rsyslog服务状态(systemctl status rsyslog),并确认客户端配置中的IP和端口是否正确,还可通过tcpdump -i any port 514抓包分析是否有数据发送。

问题2:日志服务器磁盘空间不足,如何处理?
解答:可采取以下措施:1)配置logrotate调整日志保留周期和压缩策略;2)在rsyslog配置中添加日志过滤规则,丢弃不需要的日志(如if $programname == 'cron' then stop);3)扩容磁盘或挂载新分区;4)对于ELK环境,调整Elasticsearch的索引生命周期策略(ILM),自动删除过期索引。

分享:
扫描分享到社交APP
上一篇
下一篇