开始使用 Syslog
作者:David G. Simmons / 产品, 开发者
2018 年 6 月 27 日
导航至
如果您关注发布公告,您会读到 InfluxData 堆栈新增的 “指标优先”日志分析功能。但了解它在那里,并使其工作,是两件非常不同的事情,所以我认为我应该浏览一些基本步骤,让您的 Telegraf 实例将 syslog 数据拉入 InfluxDB。到目前为止,我已设法在 Mac OS 和嵌入式 Linux 上使其工作,因此我假设在通用 Linux 上启动它将遵循类似的模式。
如果您有兴趣关注关于在我们 社区网站 上使此功能工作的讨论,请前往 此处,或继续阅读。
MAC OS X
首先,我将介绍 Mac 说明,因为我每天都在运行 Mac OS。如果您正在运行 Linux,请向下滚动至 Linux 说明。以下是要求
安装要求
- 已安装 HomeBrew
- 通过 HomeBrew 安装 rsyslog
非常简单。那么让我们从安装 HomeBrew 开始。在终端窗口中,输入以下命令
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
这就安装好了。看看这有多容易?接下来,我们将使用 HomeBrew 安装 rsyslog。是的,Mac OS 带有 syslog,但随着 Mac OS 更严格的安全措施的出现,很难让 syslog 正常工作,而安装 rsyslog 更容易和更直接。因此,在同一个终端窗口中,运行
$ brew install rsyslog
rsyslog 就安装好了!现在进行配置。
配置 rsyslog
HomeBrew 将东西安装在 /usr/local
中,配置文件通常放在 /usr/local/etc
中——基本上,HomeBrew 将“usr/local”添加到其他 UNIX 版本上的正常安装位置之前。所以我们的配置文件将是 /usr/local/etc/rsyslog.conf
。我们需要使用超级用户权限对其进行编辑,所以如果您是 vi 粉丝(像我一样),$ sudo vi /usr/local/etc/rsyslog.conf
将会完成这项工作。以下是您将添加到该文件中的内容
$WorkDirectory /tmp/rsyslog # temporary directory for storing data
$ActionQueueType LinkedList # use asynchronous processing
$ActionQueueFileName srvrfwd # set file name, also enables disk mode
$ActionResumeRetryCount -1 # infinite retries on insert failure
$ActionQueueSaveOnShutdown on # save in-memory data if rsyslog shuts down
$ModLoad imudp #loads the udp module
#listen for messages on udp localhost:514 $UDPServerAddress localhost $UDPServerRun 514 *.*
@@(o)127.0.0.1:6514;RSYSLOG_SyslogProtocol23Format
您需要重启 rsyslog,所以在您的终端中,运行
$ sudo brew services restart rsyslog
现在您的 rsyslog 将把所有消息转发到一个 TCP 端口,这就是我们将让 Telegraf 拾取它们的地方!
Linux
由于 Mac OS 只是另一个 Unix 变体,因此 Linux 说明与 Mac OS X 说明非常相似。我们仍然要使用 rsyslog
,但在许多 Linux 发行版上,rsyslog 现在是默认设置,所以我们已经很接近了。最简单的方法是直接查看 /etc
,看看您是否有一个 syslog.conf
文件或一个 rsyslog.conf
文件。如果您没有 rsyslog.conf
文件,您需要安装它。
$ sudo apt-get install rsyslog
将在 Ubuntu 和其他基于 Debian 的系统上为您实现目标。如果您的 Linux 使用不同的软件包管理器,如 yum
等,请使用它来安装 rsyslog。
配置
与 Mac OS 一样,我们需要在 rsyslog.conf 文件中添加几行,所以使用 sudo 和您最喜欢的编辑器,将以下内容添加到您的配置文件中
$WorkDirectory /tmp/rsyslog # temporary directory for storing data
$ActionQueueType LinkedList # use asynchronous processing
$ActionQueueFileName srvrfwd # set file name, also enables disk mode
$ActionResumeRetryCount -1 # infinite retries on insert failure
$ActionQueueSaveOnShutdown on # save in-memory data if rsyslog shuts down
$ModLoad imudp #loads the udp module
#listen for messages on udp localhost:514 $UDPServerAddress localhost $UDPServerRun 514 *.*
@@(o)127.0.0.1:6514;RSYSLOG_SyslogProtocol23Format
您当然需要重启 rsyslog 以强制它读取新的配置文件。如果您使用的是支持 systemd 的 Linux 变体,那么
$ sudo systemctl restart rsyslog
将会完成这项工作。如果您没有,您可以始终简单地运行
$ ps -elf | grep syslog
并为您返回的进程 ID 发出 kill -HUP PID。您的 rsyslog 现在应该正在将 syslog 消息发布到 TCP 端口,我们可以继续配置 Telegraf。
配置 Telegraf
首先,请注意您需要拥有 最新版本的 Telegraf,在本帖发布时,它是 v1.7。如果您不确定您安装的 Telegraf 版本,那么
$ telegraf --version
会告诉您。
现在您将进入您的 telegraf.conf 文件(在 Linux 上,它通常位于 /etc/telegraf
中,在 Mac OS 上,它通常位于 /usr/local/etc/telegraf
中),并取消注释以下行
# # Accepts syslog messages per RFC5425
[[inputs.syslog]]
# ## Specify an ip or hostname with port - eg., tcp://localhost:6514, tcp://10.0.0.1:6514
# ## Protocol, address and port to host the syslog receiver.
# ## If no host is specified, then localhost is used.
# ## If no port is specified, 6514 is used (RFC5425#section-4.1).
server = "tcp://localhost:6514"
如果您在升级时保留了旧版本的配置文件,您可以只将这些行添加到文件中。
现在重启 Telegraf,您应该会在您的数据库中获得日志文件。从命令行
$ influx
> use telegraf
Using database telegraf
> show measurements
...
syslog
...
您现在在您的数据库中拥有 syslog 数据了!太棒了!但它有什么用呢?
可视化您的日志数据
既然您已将 syslog 数据输入到 InfluxDB 中,您可以用它做什么呢?好吧,如果您足够勇敢,您可以安装 Chronograf 的 nightly build 版本,并在其中的日志查看器中使用它来观看您的日志流逝,并深入研究它们
我可以轻松地查看来自我的串行守护进程的所有日志事件,只需点击它们进行过滤
所以,问题是,现在您可以在 Chronograf 中可视化您的 syslog 数据,您将能够做什么?