网络弹性集中式日志记录的最佳实践

时间:2017-12-07 20:13:32

标签: logging syslog

我们有50多台服务器都生成大量日志,它们通过rsyslog发送给第三方(Logtrust),因此我们可以进行集中分析。 Logtrust也允许实时分析。

截至目前,我们不会保留应用程序的任何本地文件日志。它们都写入syslog - 它直接写入Logtrust。

我不想在本地保留所有日志,但我担心硬第三方/关机依赖。如果由于某种原因我们的日志没有对它们(本地配置问题,本地中继,第三方服务器关闭,网络/ ISP问题),我们无法查看我们的日志。

我们可以让rsyslog也写入本地文件并对其进行日志轮换以使其不会太大(例如1Gb),或者我们可以让每个应用程序管理自己的tee到syslog和本地文件。

此文件上限有多大?我们应该在本地登录吗?这里有什么行业最佳实践?

1 个答案:

答案 0 :(得分:1)

有多种可能性。 rsyslog是一个非常稳定和高性能的产品,所以在任何情况下我都建议你总是让你的应用程序与rsyslog对话,而不是直接写入某个文件。

在rsyslog中,您可以为日志消息定义多个操作。

一个操作负责将日志发送到Logtrust。该操作应该具有磁盘辅助的内存队列(http://www.rsyslog.com/doc/v8-stable/concepts/queues.html)。当rsyslog无法将某些消息中继到Logtrust时,消息将在rsyslog队列中缓冲,直到可以交付为止。

您可以定义更多操作:

  • 您可以要求rsyslog使用文件操作将每条消息写入本地文件。然后使用logrotate清除旧文件。保留期应足够大,以便在发生事故时给您时间进行调查。通常在3天(应对周末)和1周之间。

  • 如果您能负担得起复杂性,您可以在内部设置集中式rsyslog实例。集中式服务器将从所有应用程序收集日志,并在Logtrust关闭时充当备份解决方案。在本地rsyslog实例和集中式实例之间,使用协议RELP确保没有日志丢失。

  • 如果您需要能够有效地搜索集中式实例中的日志,目前的最佳做法是将它们进一步存储到Elasticsearch或Graylog(也是基于Elasticsearch)中。 Rsyslog可以本地将日志转发到这两个产品。