在ubuntu中安装ELK Stack(Elasticsearch, Logstash, 和 Kibana)进行多个服务器日志集中管理

我们在本文中介绍在ubuntu中安装 ELK Stack,-Elasticsearch 2.0.0, Logstash 2.0.0, and Kibana 4.2.0,并配置ELK,收集和可视化系统日志。Logstash 是收集,分析,存储日志信息的开源工具。Kibana 4 提供了查找,和显示日志的web接口。所有的这些工具都是基于Elasticsearch的。

目的:

设置用Logstash收集多个服务器的系统日志(syslogs),设置 Kibana 可视化收集的日志。

我们Logstash / Kibana的设置主要包含如下4个部分

  • Logstash: 处理传入的logs
  • Elasticsearch: 储存logs
  • Kibana:查找和显示logs的web接口,通过Nginx。
  • Logstash Forwarde 把服务器上的logs发送给Logstash,Logstash Forwarde利用lumberjack 网络协议和Logstash进行通信。

elk-infrastructure

我们先在一个服务器上安装Kibana,ElasticSearch,Logstash这三个组件,充当Logstash服务器。然后在客户端服务器安装Logstash Forwarder,Logstash Forwarder负责收集客户端服务器的logs并发送给Logstash服务器。

Logstash服务器端

安装 Java 8

Elasticsearch 和 Logstash 需要 Java 运行环境

增加Oracle Java PPA 到 apt:

更新apt包数据库:

安装Java 8:

现在 Java 8 安装完成,下面安装 ElasticSearch

安装 Elasticsearch

在用包管理工具增加Elastic的包列表,导入 Elasticsearch 公开 GPG 密钥

创建 Elasticsearch 源:

更新apt包数据库:

安装 Elasticsearch :

安装完成之后,修改配置文件

你应该限制外网访问Elasticsearch服务(端口9200),这样可以禁止外部用户通过HTTP API访问数据。找到 network.host,去掉注释并改为localhost,如下:

启动Elasticsearch:

设置开机自启:

现在Elasticsearch安装并运行。

安装 Kibana

在安装Kibana之前,让我们设置kibana的用户和组

如果 GID 999 被占用,请改为其它可用的。

下载Kibana到home目录:

解压:

配置Kibana:

找到server.host,替换IP地址为 “localhost”:

现在Kibana只允许本地用户访问,没有关系,因为我们要用Nginx方向代理来处理外部请求。

把Kibana放在适当的目录:

改变Kibana的所有权为之前创建的kibana用户:

Kibana可以在/opt/kibana/bin/kibana启动,但这里我们把Kibana配置为服务:

启动:

下面安装反向代理。

安装Nginx

因为我们设置了 Kibana 监听localhost,我们必须设置反向代理,允许外部用户访问它。这是安装Nginx的目的。

如果没有Nginx服务,安装:

用 htpasswd 创建管理员用户:

kibanaadmin为管理员名称,修改为你想要的。

配置Nginx默认服务块:

清空文件内容,拷贝:

server_name 修改为你的。Nginx重定向HTTP到Kibana(监听localhost:5601),并用htpasswd.users文件验证用户名。

重启:

现在在浏览器输入http://logstash_server_public_ip/ 访问Logstash服务器,输入kibanaadmin用户名,就可以看到欢迎界面了。下面安装Logstash。

安装Logstash

创建Logstash源:

更新包仓库:

安装Logstash:

现在Logstash安装完成,但是还没有配置。

生成SSL证书

由于我们要用Logstash Forwarder传送服务器上的logs到Logstash服务器。我们需要SSL证书的密钥对,Logstash Forwarder用这个证书确认Logstash服务的身份。创建目录存储证书的私钥:

现在有两个选项生成SSL证书。如果你有一个DNS设置可以为客户服务器解析Logstash服务器的IP,用选项二。否则用选项一,允许你使用IP地址。

选项一:IP地址

找到[v3_ca]段:

生成key:

把 logstash-forwarder.crt 文件发送给所有需要log的客户端服务器。如果你选择选项一,现在可以跳过选项二了。

选项二:FQDN(DNS)

如果在你的私有网络上有DNS设置,你应该创建一个A记录包含Logstash Server的私有ip地址,域名将会被下面命令使用,产生SSL证书。

替换logstash_server_fqdn。

把 logstash-forwarder.crt 文件发送给所有需要log的客户端服务器

配置Logstash

Logstash的配置文件格式是JSON格式,在 /etc/logstash/conf.d 目录下。配置文件包含三段:inputs, filters, 和 outputs。

让我们创建一个配置文件 01-lumberjack-input.conf,并设置lumberjack的input:

指定lumberjack将会监听tcp 5043端口,比使用上面创建的SSL key。

让我们创建一个配置文件 10-syslog.conf,并设置filter:

filter查找syslog类型的日志(来自Logstash Forwarder),并尝试使用grok解析log。

最后我们创建30-lumberjack-output.conf:

配置Logstash把log存储到Elasticsearch。

重启:

设置 Logstash Forwarder (设置客户端服务器)

拷贝SSL证书到客户端服务器

在客户端服务器安装  Logstash Forwarder:

安装:

注意:如果你用的是32位的ubuntu系统,会得到”Unable to locate package logstash-forwarder”错误,你需要手动安装了。

拷贝SSL证书:

配置Logstash Forwarder

在[network]段,增加下面几行:

注意替换 logstash_server_private_address

在[files]段:

重启:

现在Logstash Forwarder 可以发送 syslog 和 auth.log 到你的Logstash服务器。


现在你可以浏览器访问你的Logstash服务器了。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注