DigitalOcean ELK一键式应用程序为您提供了一种快速启动集中式日志服务器的方法。 ELK由三个关键软件组成:Elasticsearch,Logstash和Kibana。 它们一起允许您收集,搜索和分析来自基础架构的日志文件。 Logstash收集和解析传入的日志,Elasticsearch对其进行索引,Kibana为您提供了一个强大的Web界面来可视化数据。
本教程将向您介绍如何启动ELK实例并在其他服务器上设置Filebeat,以将日志发送到新的集中式日志记录服务器。
创建ELKDroplet
要开始使用它,只需创建一个Droplet,并指定您的主机名和大小。 我们建议您在至少 2GB的Droplet运行ELK。
选择您所需的地区:
在Ubuntu 14.04在应用程序选项卡中选择ELK :
如果使用SSH密钥管理您的小程序,它比密码安全并且是建议的,您还可以指定要添加到此服务器的小程序。
访问您的Kibana凭据
一旦您的服务器已经启动,您将能够通过其IP地址在Web浏览器中访问Kibana前端。 但是,这已被密码保护。 为了检索随机生成的密码,您将需要通过命令行访问服务器。
您可以使用以下命令登录到您的Droplet:
ssh root@your_ip_address
如果系统提示您输入密码,请输入在创建服务器时通过电子邮件发送给您的密码。 或者,如果使用SSH密钥设置Droplet,则可以继续并登录,而不需要密码。
一旦您登录,您将看到包含您的密码的一天的消息(MOTD)。 它将如下所示:
-------------------------------------------------------------------------------------
Thank you for using DigitalOcean's ELK Stack Application.
Your Kibana instance can be accessed at http://xxx.xxx.xx.xxx/
Your Kibana login credentials are:
Username: admin
Password: XXXXXXXXXX
-------------------------------------------------------------------------------------
现在您已拥有您的登录凭据,您可以通过在浏览器中输入其IP地址并提供您的用户名和密码来访问Kibana。
使用Kibana
Kibana是高度可配置的。 您可以使用已过滤的搜索和可视化数据来创建自定义信息中心。 默认情况下,ELK一键设置收集syslog
从Droplet本身和Nginx的访问日志。 所以你应该已经有数据,看看当你第一次登录。
为了开始查看您的数据,您必须首先配置索引模式。 这可以通过选择左侧[filebeat] -YYY.MM.DD从索引模式菜单,然后单击星按钮,将其设置为默认的指标来完成。
顶部导航栏中点击查看 ,查看已创建的日志:
要探索更多可视化数据的方法,请查看以下教程:
转发日志
为了将日志发送到ELK服务器,您需要在其他服务器上安装和配置Filebeat。 本教程的重点是在Ubuntu上安装它,但你也可以向前从日志运行的CentOS以及服务器 。
现在,我们将配置一个客户端服务器发送它的syslog
到您的ELK服务器。
安装SSL证书
为了在将日志发送到ELK服务器时对流量进行加密,首次引导时会创建自签名SSL证书。 必须在每个客户端服务器上安装此证书。 在您的ELK服务器上运行此命令可以将SSL证书复制到客户端服务器 :
scp /etc/pki/tls/certs/logstash-forwarder.crt user@client.ip.address:/tmp
SSL证书现在将出现在/tmp
在客户端服务器上的文件夹中。 现在您必须将其安装到正确的目录:
sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/
安装Filebeat
在客户端服务器上 ,Logstash转发信息库添加到您的APT源和下载的签名密钥:
wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -
echo 'deb https://packages.elastic.co/beats/apt stable main' | sudo tee /etc/apt/sources.list.d/filebeat.list
然后安装Logstash转发程序包:
sudo apt-get update
sudo apt-get install filebeat
接下来,您需要确保Logstash Forwarder将在启动时自动启动:
sudo update-rc.d filebeat defaults
配置Filebeat
在客户端服务器上 ,创建和编辑Logstash代理的配置文件,它是YAML格式:
sudo nano /etc/filebeat/filebeat.yml
该文件将包括许多注释掉的选项。 这里我们将在大多数情况下使用默认值。 我们将配置Filebeat以连接到端口5044上的ELK服务器,并使用先前安装的SSL证书。 路径部分指定哪些日志文件发送,而DOCUMENT_TYPE部分指定这些日志型“系统日志”(这是我们的过滤器正在寻找的类型)。
删除注释掉选项,并在您的ELK服务器的IP地址替换elk_server_IP
,你Filebeat配置将如下所示:
filebeat:
prospectors:
-
paths:
- /var/log/auth.log
- /var/log/syslog
input_type: log
document_type: syslog
output:
logstash:
hosts: ["elk_server_IP:5044"]
tls:
certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
保存并退出。 现在重新启动Filebeat将我们的更改放置到位:
sudo service filebeat restart
现在Filebeat发送syslog到您的ELK服务器!
自动安装在新Droplet上
您将需要重复这个过程为所有你想收集原木其他现有的服务器,但是当你创建一个使用新的服务器可以简化这一过程DigitalOcean的元数据服务 。 当创建一个新的Droplet,可以提供cloud-config
文件 ,它会自动配置Logstash代理作为你的第一个Droplet的靴子。
为了做到这一点,您必须从ELK服务器复制SSL证书的内容。 您可以通过运行以下命令查看文件:
cat /etc/pki/tls/certs/logstash-forwarder.crt
现在,您可以创建一个cloud-config
文件自动上面我们采取的步骤:
#cloud-config
write_files:
- content: |
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWsdERgfgIJAP1eIkzku0apMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTQxMjA0MjExNDQ4WhcNMjQxMjAxMjExNDQ4WjBF
MQswCQYDVQQGEwJBVTETSDFUIQUECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAo3I1IQzaZPFHdfgSes3uqcan8EqcObLy8nFPqHn8fmLT+AfA4JnVSB6S
dl/qYOUoKI4mFaQROhaC+VWV2E0sB42pv5jKZfC8orHTuY23eXnZFeajGVqIQhu3
4VIv56l/nSnS30t/ryPAyDqrb+hPT1HNc92ruobTLlKl1XVgBfHqldUHVHPk99Gv
xRLQQKg/EIZkFyGYMi770N9vR3usBuaAuPX78RmNGoiNYRAJDKJ2vvU86mGqoMow
Bw9mICaVv94P9z8vROPHI1IZnlKKjDKqvSvfyR1J4H2hCP6yoGmYbz9DHfOqnWie
J1u7DZ5YeIgZIy2TWqaaTVDgwjb3AwIFGWSUo1AwTjAdBgNVHQ4EFgQUXsvZ6xD7
1PfKJbPBmYHnUsWsZ5UwHwYDVR0jBBgwFoAUXsvZ6xD71PfKJbPBmYHnUsWsZ5Uw
DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAdqnijWlcsbk8A1L4yfQa
Dm172P7hatN3fh4lmPoVsd5sMPmYsYOFZ6Vk9MIFg+ibeV42n+OtYb31lJq76nKF
IYR+zuDyEAVkmZEA7Sb3zQDGH0qqC12ztiAbBw+XsD3s1a8VaqHk3AuvD35xURKK
+fy2kbnoFZ0yFsDcr+h442PVrvShMYtKcVKquuHs8TJolON3bvZCLyK0YqHtnHPN
QoWI5Si7ojsSnUPLBZqaSGUQu8UipMLJk+HvbbVt1purI3mH3/tB3D1gnSiTGRGD
vXvw8/qDgPAT5fWW5OniVWUsYlNNs2irTqTSI7aBh6QPcxpmcOFkctsRTSWz/Mrz
qQ==
-----END CERTIFICATE-----
path: /etc/pki/tls/certs/logstash-forwarder.crt
- content: |
filebeat:
prospectors:
-
paths:
- /var/log/auth.log
- /var/log/syslog
input_type: log
document_type: syslog
output:
logstash:
hosts: ["HOST_IP_ADDR:5044"]
tls:
certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
path: /etc/filebeat/filebeat.yml
runcmd:
- wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -
- echo 'deb https://packages.elastic.co/beats/apt stable main' | sudo tee /etc/apt/sources.list.d/filebeat.list
- sudo apt-get update
- sudo apt-get install filebeat
- sudo update-rc.d filebeat defaults
- sudo service filebeat start
请确保用自己更换证书的内容,包括与线BEGIN
和END
,以及您的ELK服务器的IP地址。
现在,创建一个新的Droplet时,可以粘贴此文件到启用用户数据字段:
当您的新服务器联机时,新数据将开始流向您的ELK服务器,并在Kibana中可见。
更多信息
为了处理它接收的日志,Logstash需要过滤文件和提取格式化的数据,因为不同的日志文件具有非常不同的格式。 这些过滤器安装到/etc/logstash/conf.d/
默认情况下,ELK应用对过滤器syslog
和Nginx的的访问日志。 举例来说,这里是/etc/logstash/conf.d/10-syslog.conf
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
有关如何编写Logstash过滤器和Apache过滤器示例的详细信息,请查看本教程: