本节书摘来自华章计算机《Splunk智能运维实战》一书中的第1章,第1.6节,作者 [美]乔史·戴昆(Josh Diakun),保罗R.约翰逊(Paul R. Johnson),德莱克·默克(Derek Mock),译 宫鑫,康宁,刘法宗 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.6使用通用转发器收集数据
如今的IT环境既包括办公室壁橱内的数台服务器,也包括多个异地分布式数据中心的数百台终端服务器。
如果需要收集的数据不在安装有Splunk的服务器上,可在远程终端服务器上安装Splunk通用转发器(Universal Forwarder,UF),并用它将数据转发到Splunk以进行索引。
通用转发器和Splunk服务器类似,具有很多相同的特性,但不包括Splunk Web,并且也没捆绑Python可执行文件和库。此外,通用转发器不能预处理数据,如执行换行和时间戳提取。
本节将学习配置Splunk通用转发器来将数据转发到Splunk索引器及如何创建索引器来接收数据。
做好准备
要进行本节的操作,需要一个安装有Splunk Universal Forwarder但尚未进行配置的服务器,以及一个运行有Splunk的服务器。
要获取通用转发器软件,请前往/download并注册账户。可将软件直接下载到服务器,也可将软件下载到笔记本电脑或工作站,并通过文件传送协议,如SFTP,将其上传至服务器。
如何操作
按照下列步骤配置Splunk转发器来转发数据,并配置 Splunk 索引器接收数据:
1 . 在安装有通用转发器的服务器上,打开命令提示符窗口(Windows用户)或终端窗口(UNIX用户)。
2 . 切换到$SPLUNK_HOME/bin目录,$SPLUNK_HOME是Splunk转发器的安装目录。
UNIX系统中,默认安装目录为/opt/splunkforwarder/bin。Windows系统中,默认安装目录为C:Program FilesSplunkUniversalForwarderbin。
如使用Windows系统,应省略下面Splunk命令前的“./”。
3 . 打开Splunk转发器,输入下列命令:
4 . 接受许可证协议。
5 . 使用下列命令使通用转发器自动运行;
6 . 设置索引器,通用转发器将发送数据到此索引器。将主机值替换为索引器的值,并为通用转发器替换用户名和密码。
登录转发器的用户名和密码(默认为admin:changeme)是<username>:<password>
。
可以用相同的方法添加其他索引器,只需重复前一步的命令,使用不同的索引器主机或IP。如果照此方法指定了多个接收索引器,Splunk将自动为转发的数据平衡负载。端口9997是默认的Splunk TCP端口,不要改变它,除非它因为某种原因不能使用。
在Splunk索引器所在的服务器上:
登录Splunk索引器所在的服务器。从右上角的主启动器单击“设定”菜单,并选择“转发和接收”链接。
单击“配置接收”链接。
单击“新建”。在“监听此端口”字段中输入9997。
单击“保存”并重启Splunk。至此已经安装并配置了通用转发器,它会发送数据到Splunk服务器,Splunk服务器也会按照设置接收默认Splunk TCP端口9997的数据。
工作原理
设置转发器将数据传送到某服务器实际上是在后台添加新的配置节到inputs.conf文件中。在Splunk服务器上,inputs.conf文件会添加一个[splunktcp]节来激活接收。Splunk转发器上的outputs. conf文件位于$SPLUNK_HOME/etc/system/local,当设置数据接收时,Splunk服务器上的inputs.conf文件位于所用应用程序(本例中是启动器应用程序)的本地目录中。
使用转发器收集和转发数据具有诸多优势。转发器默认会与索引器在TCP端口9997上通信,这会开启一套非常简单的防火墙规则。转发器也可以通过配置来对多个索引器上的数据进行负载平衡,增加搜索速度和可用性。此外,也可配置转发器,使其在与索引器通信丢失时对接收的数据进行队列排序。如果索引器接收的数据不是从性能计数器或系统日志流等日志文件中读取的,这一点至关重要,因为这样的数据无法重新读取。
更多内容
除了本节所介绍的通过Splunk的命令行界面配置通用转发器之外,还有其他方法来快速更新设置,并可自定义Splunk提供的许多配置选项。
通过outputs.conf添加接收索引器
可在通用转发器的outputs.conf配置文件中添加接收索引器。编辑$SPLUNK_HOME/etc/system/local/outputs.conf,添加输入,然后重启通用转发器。下面提供了示例配置,其中指定了两个接收索引器。[tcpout-server]一节可针对单个接收索引器添加输出配置。
如果通用转发器上的inputs.conf没有进行任何配置,而outputs.conf至少配置了一个合法的接收索引器,Splunk转发器将只发送内部日志数据到索引器。因此,转发器通过正确配置可以被Splunk索引器检测到,但不一定会发送任何真实数据。