我在CentOS 7系统上安装Rsyslog服务器,并将其配置为vCenter Server Appliance(vCSA)日志和vSphere服务器生成的所有日志的重要日志服务器,本文将介绍Rsyslog服务器的安装/配置和vCSA/vSphere的配置,以便将日志发送到我们配置的远程Rsysog服务器,安装Rsyslog请参考在Debian 9上使用Rsyslog安装一台中央日志服务器。
一、更新系统
让我们将系统包更新到最新版本:
sudo yum update
对于Ubuntu,使用apt执行相同的操作:
sudo apt-get update && sudo apt-get upgrade
如果可能,请重新启动系统以进行需要更新才能生效的更新,例如内核更新:
sudo reboot
二、配置Rsyslog服务器
CentOS和Ubuntu/Debian系统都安装并运行了rsyslog,我们需要为VMware设置创建一个额外的配置文件。
默认配置文件是/etc/rsyslog.conf,任何其他配置都可以放在/etc/rsyslog.d/目录下。
为VMware vSphere和vCSA设备日志创建目录:
$ sudo mkdir -p /data/logs/{vcenter,esxi}
然后将以下配置文件添加到/etc/rsyslog.d/vmware.conf,这是vSphere Infrastructure日志记录的配置,它具有模板,用于指示存储日志的位置和方式,匹配模式以及日志时间戳定义:
# Provides TCP syslog reception
$ModLoad imtcp
#### Create Templates for Log parsing
#### Log store is created folder previously
template(name="TIMESTAMP" type="string" string="%timegenerated:8:25%||%HOSTNAME%||%syslogtag%||%msg%\n")
template(name="ESXI" type="string" string="/data/logs/esxi/%fromhost-ip%/%$YEAR%-%$MONTH%/%$DAY%.%$MONTH%-messages.log")
template(name="VCENTER" type="string" string="/data/logs/vcenter/%fromhost-ip%/%$YEAR%-%$MONTH%/%$DAY%.%$MONTH%-messages.log")
#### Define remote logging RuleSet
$RuleSet remote
### The following rule is created to store logs coming from vCenter with different parameters
### If log is coming from vcenter with IP 192.168.10.50 it will be stored using VCENTER template.
### Replace 192.168.10.50 with your vCSA IP address
if $fromhost == '192.168.10.50' then {
*.* ?VCENTER
}
else {
# Store all other logs using TIMESTAMP and ESXI templates.
*.* ?ESXI;TIMESTAMP
}
### Tell rsyslog to listen TCP port 514.
### All events coming to this port will be parsed using remote RuleSet.
$InputTCPServerBindRuleset remote
$InputTCPServerRun 514
这里我们定义了三个模板:
TIMESTAMP:用于格式化来自某个IP地址的所有日志,这是为了通过适当的时间格式使日志更具可读性。
ESXI:这告诉rsyslog将每个主机的日志存储在一个单独的文件夹中,每天的日志存储在与该日相对应的文件夹中,vSphere主机的日志将存储在/data/logs/esxi中。
VCENTER:这告诉rsyslog使用/data/logs/vcenter中的vCenter设备存储日志,使用与ESXI模板上使用的时间戳和结构类似的时间戳和结构。
进行更改后重新启动rsyslog服务:
sudo systemctl restart rsyslog
使用systemctl status rsyslog命令检查状态,没问题的话会返回运行状态信息:
然后打开Rsyslog防火墙端口,Rsyslog侦听端口514,我们将其配置为用户TCP,使用firewalld管理工具打开它。
在Ubuntu/Debian上使用ufw:
sudo ufw allow 514/tcp
参考:Debian、Ubuntu、Linux Mint系统中的UFW防火墙入门教程。https://ywnz.com/linuxaq/4277.html
在CentOS 7上:
sudo firewall-cmd --add-port=514/tcp --permanent
sudo firewall-cmd --reload
三、配置vSphere主机和vCSA Appliance
唯一尚未解决的问题是配置vSphere和vCSA设备以将日志推送到我们的rsyslog服务器。
1、如何配置vSphere远程Syslog
打开vCenter并导航至:主机和群集>选择主机>配置>高级系统设置>编辑(Hosts and Clusters > Select Host > configure > Advanced System Settings > Edit)
在“筛选器”框中,搜索“syslog”,你应该看到“Syslog.global.logHost”,在此框中填写rsyslog服务器地址:tcp://192.168.10.35:514
如果要同时配置tcp和udp,请使用逗号分隔它们:tcp://192.168.10.35:514,udp://192.168.10.35:514
它应该有如下所示:
2、如何配置vCenter(vCSA)远程Syslog
对于vCSA,通过打开vCSA管理UI来配置远程rsyslog:
http://vCSA-IP:5480
然后就可以登录控制中心了,如下图:
输入安装期间提供的用户名和密码,初始默认用户名为root,默认密码为vmware。
程序的说明:
1.在vCenter Server Appliance管理界面中,选择Syslog。
2.在“转发配置”部分中,如果尚未配置任何远程syslog主机,请单击“配置”,如果已配置主机,请单击“编辑”。
3.在“创建转发配置”页面中,输入目标主机的服务器地址,支持的目标主机的最大数量为三个。
4.从“协议”下拉菜单中,选择要使用的协议。
5.在“端口”文本框中,输入用于与目标主机通信的端口号。
6.在“创建转发配置”窗格中,单击“添加”以输入另一个远程syslog服务器。
7.单击保存。
8.验证远程syslog服务器是否正在接收消息。
9.在“转发配置”部分中,单击“发送测试消息”。
10.在远程syslog服务器上验证是否收到了测试消息。
新配置设置显示在“转发配置”部分中。
如果你返回到rsyslog服务器,则应在前面配置的logs目录下创建两个文件夹:
$ ls /data/logs/
esx vcenter
$ ls /data/logs/vcenter/192.168.10.50/2019-02/02.22-messages.log
/data/logs/vcenter/192.168.10.50/2019-02/02.22-messages.log
对于ESXI主机:
$ file /data/logs/esx/192.168.10.31/2019-02/02.22-messages.log
/data/logs/esx/192.168.10.31/2019-02/02.22-messages.log: ASCII text, with very long lines
你可以考虑为其配置日志轮换:
运行:$ cat /etc/logrotate.d/vmware
/data/logs/esxi/*/*/*.log {
rotate 90
daily
notifempty
compress
}
/data/logs/vcenter/*/*/*.log {
rotate 90
daily
notifempty
compress
}
操作到这里,你现在已经拥有适用于vSphere Infrastructure的rsyslog服务器。
相关主题