使用Rsyslog的VMware vSphere和vCenter Central Logs管理

时间:2020-02-23 14:31:29  来源:igfitidea点击:

在CentOS 7系统上安装了Rsyslog服务器,并将其配置为vCenter Server Appliance(vCSA)日志以及vSphere服务器生成的所有日志的中央日志服务器。在本教程中,我们将介绍Rsyslog服务器的安装/配置和vCSA/vSphere的配置,以将日志发送到我们配置的远程Rsysog服务器。

使用Rsyslog设置vSphere和vCenter Central Logs Management

在开始之前,让我在这里陈述假设:

我们已经安装了CentOS 7服务器;基于Debian的系统应该可以安装Rsyslog用户帐户具有sudo特权

如果不满足上述任何条件,请确保已完成所有设置。完成后,请使用以下步骤安装和配置Rsyslog服务器,以接收来自VMware vSphere和vCenter基础结构的日志。

更新系统

让我们将系统软件包更新为最新版本:

sudo yum update

对于Ubuntu,请使用apt执行相同操作:

sudo apt-get update && sudo apt-get upgrade

如果可能的话,重新启动系统以进行需要更新才能生效的更新,例如内核更新:

sudo reboot

配置Rsyslog服务器

CentOS和Ubuntu/Debian系统都已安装并正在运行rsyslog。我们将需要为VMware设置创建其他配置文件。

有关Ubuntu/Debian上Rsyslog的基本配置,请参阅如何在Ubuntu 18.04 LTS上配置Rsyslog集中式日志服务器。

默认配置文件是/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

其中我们定义了三个模板:

时间戳:用于格式化来自某个IP地址的所有日志。这是通过使用适当的时间格式来使日志更易读。

ESXI:这告诉rsyslog将每个主机的日志存储在单独的文件夹中,并将每天的日志存储在与该天相对应的文件夹中。来自vSphere主机的日志将存储在/data/logs/esxi

VCENTER:这告诉rsyslog使用时间戳和类似于ESXI模板的结构,将来自vCenter设备的日志存储在/data/logs/vcenter中。

进行更改后,重新启动rsyslog服务:

sudo systemctl restart rsyslog

检查状态,它应该处于运行状态:

$systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2016-08-02 11:54:03 EAT; 1min ago
Docs: man:rsyslogd(8)
Main PID: 12489 (rsyslogd)
Tasks: 8
Memory: 7.6M
CGroup: /system.slice/rsyslog.service
└─12489 /usr/sbin/rsyslogd -n

Aug 02 11:54:03 rsyslog.example.com systemd[1]: Starting System Logging Service...
Aug 02 11:54:03 rsyslog.example.com rsyslogd[12489]: [origin software="rsyslogd" swVersion="8.24.0" x-pid="12489" x-info="http://www.r...] start
Aug 02 11:54:03 rsyslog.example.com systemd[1]: Started System Logging Service.
Hint: Some lines were ellipsized, use -l to show in full.

打开Rsyslog防火墙端口

Rsyslog侦听端口514,我们将其配置为用户TCP,使用防火墙管理工具将其打开。

在具有ufw的Ubuntu/Debian上:

sudo ufw allow 514/tcp

在CentOS 7上:

sudo firewall-cmd --add-port=514/tcp --permanent
sudo firewall-cmd --reload

配置vSphere主机和vCSA设备

唯一待处理的部分是配置vSphere和vCSA设备以将日志推送到我们的rsyslog服务器。

如何配置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

它应如下所示:

如何配置vCenter(vCSA)远程Syslog

对于vCSA,请打开vCSA管理界面来配置远程rsyslog:

http://vCSA-IP:5480

这将提供登录仪表板:

输入安装过程中提供的用户名和密码。初始默认用户名是root,默认密码是vmware。

过程:在vCenter Server Appliance管理界面中,选择Syslog。在转发配置部分中,如果尚未配置任何远程syslog主机,请单击配置。如果已经配置了主机,请单击"编辑"。在"创建转发配置"页面中,输入目标主机的服务器地址。支持的目标主机的最大数量为三。从"协议"下拉菜单中,选择要使用的协议。在"端口"文本框中,输入用于与目标主机进行通信的端口号。在"创建转发配置"窗格中,单击"添加"以输入另一个远程主机。 syslog服务器。单击Save。验证远程系统日志服务器正在接收消息。在转发配置部分中,单击发送测试消息。验证远程系统日志服务器上是否已接收测试消息。

如果返回rsyslog服务器,应该在先前配置的logs目录下创建两个文件夹:

$ls /data/logs/
esx vcenter
$ls /data/logs/vcenter/192.168.10.50/2016-08/02.08-messages.log 
/data/logs/vcenter/192.168.10.50/2016-08/02.08-messages.log

对于ESXI主机:

$file /data/logs/esx/192.168.10.31/2016-08/02.08-messages.log 
/data/logs/esx/192.168.10.31/2016-08/02.08-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服务器。