拼音指南在哪(拼音指南在哪里word2010)
783
2022-05-29
参考文章
elastic官网:https://www.elastic.co
Elasticsearch中文社区:http://elasticsearch.cn/
部署安装filebeat:https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04
Topbeat:https://www.digitalocean.com/community/tutorials/how-to-gather-infrastructure-metrics-with-topbeat-and-elk-on-ubuntu-14-04
Packetbeat:https://www.digitalocean.com/community/tutorials/how-to-gather-infrastructure-metrics-with-packetbeat-and-elk-on-ubuntu-16-04
最佳实践:http://udn.yyuap.com/doc/logstash-best-practice-cn/output/elasticsearch.html
架构设计
日志转发收集软件:
Filebeat: 将syslog等日志发送到Logstash的客户端服务器上,作为日志传送代理,利用lumberjack 工具网络协议与Logstash进行通信。
Topbeat: 将CPU,内存,进程活动和系统负载等服务器数据发送到Logstash实例。当与ELK堆栈(Elasticsearch,Logstash和Kibana)一起使用时,Topbeat可以用作其他系统度量可视化工具(如Prometheus或Statsd)的替代选项。
Packetbeat: 可以运行在应用服务器上或者独自的服务器。当运行在独自服务器上时,需要从交换机的镜像端口或者窃听设备上获取网络流量。
应用程序等产生的日志直接推送至日志服务器中,经过logstash的处理最终推送至elasticsearch中,在kibana上进行展示,并通过Nginx限制用户访问。可以在logstash的Filter上定制解析规则和报警规则,定时将不可读日志文件解析为可读的json文件进行处理,当日志有严重的错误时可通过logstash的Output定制邮件模板进行报警。
安全问题:所有服务尽可能只对内网ip暴露(通过防火墙实现),减少对外暴露的服务,并且以低权限账户运行。跨节点的服务(如filebeat,topbeat,packetbeat等)连接一律采用SSL双向认证的方案,提高安全性。
准备环境
日志收集服务器端如下,并准备将要收集日志的其他服务器。
操作系统:Ubuntu 14.04
RAM:4GB
CPU:2
安装java8
将Oracle Java PPA添加到apt中:
sudo add-apt-repository -y ppa:webupd8team/java
更新apt包数据库:
sudo apt-get update
使用此命令安装最新的稳定版本的Oracle Java 8(并接受弹出的许可协议):
sudo apt-get -y install oracle-java8-installer
现在安装了Java 8,我们来安装ElasticSearch。
安装Elasticsearch
Elasticsearch可以通过添加Elastic的包源列表与包管理器一起安装。
运行以下命令将Elasticsearch公共GPG密钥导入到apt中:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
创建Elasticsearch源列表:
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
更新apt包数据库:
sudo apt-get update
使用此命令安装Elasticsearch:
sudo apt-get -y install elasticsearch
Elasticsearch现已安装。我们来编辑配置:
sudo vi /etc/elasticsearch/elasticsearch.yml
您将要限制对Elasticsearch实例(端口9200)的外部访问,因此外部人员无法通过HTTP API读取数据或关闭Elasticsearch集群。找到指定network.host,取消注释它并将其值替换为“localhost”的行,如下所示:
elasticsearch.yml摘录(更新)
network.host: localhost
保存并退出elasticsearch.yml。
现在启动elasticsearch:
sudo service elasticsearch restart
然后在启动时运行以下命令启动Elasticsearch:
sudo update-rc.d elasticsearch defaults 95 10
现在Elasticsearch正在运行,我们来安装Kibana。
安装Kibana
Kibana可以通过添加Elastic的包源列表来安装包管理器。
创建Kibana源列表:
echo "deb http://packages.elastic.co/kibana/4.4/debian stable main" | sudo tee -a /etc/apt/sources.list.d/kibana-4.4.x.list
更新apt包数据库:
sudo apt-get update
使用此命令安装Kibana:
sudo apt-get -y install kibana
Kibana现已安装,打开Kibana配置文件以进行编辑:
sudo vi /opt/kibana/config/kibana.yml
在Kibana配置文件中,找到指定server.host并将IP地址(默认为“0.0.0.0”)替换为“localhost”的行:
kibana.yml摘录(更新)
server.host: "localhost"
保存并退出。这个设置使得Kibana只能由本地主机访问。我们将使用Nginx反向代理来允许外部访问。
现在启用Kibana服务,并启动它:
sudo update-rc.d kibana defaults 96 9
sudo service kibana start
在使用Kibana Web界面之前,我们必须设置一个反向代理。现在,我们来做Nginx。
安装Nginx
因为我们配置了Kibana来监听localhost,所以我们必须设置一个反向代理来允许外部访问它。为此,我们将使用Nginx。
注意:如果您已经有要使用的Nginx实例,请随意使用。只要确保配置Kibana所以它是由你的Nginx服务器可达(你可能要更改的host值,在/opt/kibana/config/kibana.yml,你Kibana服务器的专用IP地址或主机名)。另外,建议您启用SSL / TLS。
使用apt来安装Nginx和Apache2-utils:
sudo apt-get install nginx apache2-utils
使用htpasswd创建一个名为“kibanaadmin”的管理员用户(您应该使用其他名称),可以访问Kibana Web界面:
sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin
在提示符下输入密码。记住这个登录,你将需要它来访问Kibana Web界面。
现在打开您喜欢的编辑器中的Nginx默认服务器块。我们将使用vi:
sudo vi /etc/nginx/sites-available/default
删除文件的内容,并将以下代码块粘贴到文件中。请务必更新server_name以符合您服务器的名称:
/ etc / nginx / sites-available / default
server {
listen 80;
server_name example.com;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.users;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
保存并退出。这将Nginx配置为将您的服务器的HTTP流量指向正在侦听的Kibana应用程序localhost:5601。此外,Nginx将使用htpasswd.users我们之前创建的文件,并需要基本身份验证。
现在重新启动Nginx,使我们的更改生效:
sudo service nginx restart
Kibana现在可通过您的FQDN或ELK服务器的公共IP地址访问,即http:// elk \ _server \ _public \ _ip /。如果您在网络浏览器中进入“kibanaadmin”凭据,您应该会看到一个Kibana欢迎页面,它将要求您配置索引模式。我们稍后再回到安装所有其他组件之后。
安装Logstash
Logstash软件包可以从与Elasticsearch相同的存储库中获得,我们已经安装了该公钥,因此我们来创建Logstash源代码列表:
echo 'deb http://packages.elastic.co/logstash/2.2/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash-2.2.x.list
更新apt包数据库:
sudo apt-get update
使用此命令安装Logstash:
sudo apt-get install logstash
已安装Logstash,但尚未配置。
生成SSL证书
由于我们将使用Filebeat将客户端服务器中的日志发送到我们的ELK服务器,因此我们需要创建SSL证书和密钥对。Filebeat使用证书来验证ELK Server的身份。创建使用以下命令存储证书和私钥的目录:
sudo mkdir -p /etc/pki/tls/certs
sudo mkdir /etc/pki/tls/private
现在您有两个生成SSL证书的选项。如果您有DNS设置,将允许您的客户端服务器解析ELK服务器的IP地址,请使用选项2。否则,选项1将允许您使用IP地址。
选项1:IP地址
如果您没有DNS设置,将允许您收集日志的服务器来解析您的ELK服务器的IP地址,则必须将ELK Server的私有IP地址添加到subjectAltName(SAN)字段我们即将生成的SSL证书。为此,请打开OpenSSL配置文件:
sudo vi /etc/ssl/openssl.cnf
查找[ v3_ca ]文件中的部分,并在其下添加此行(用ELK Server的私有IP地址替换):
openssl.cnf摘录(更新)
subjectAltName = IP: ELK_server_private_IP
保存并退出。
现在使用以下命令在适当的位置(/ etc / pki / tls /)生成SSL证书和私钥:
cd /etc/pki/tls
sudo openssl req -config /etc/ssl/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
该logstash-forwarder.crt文件将被复制到所有将日志发送到Logstash服务器,但我们会做到这一点稍晚。我们来完成我们的Logstash配置。如果您使用此选项,请跳过选项2并继续进行配置Logstash。
选项2:FQDN(DNS)
如果您使用专有网络进行DNS设置,则应创建一个包含ELK Server专用IP地址的A记录,该域名将在下一个命令中使用,以生成SSL证书。或者,您可以使用指向服务器的公共IP地址的记录。只需确保您的服务器(您将要收集的服务器记录的)将能够将域名解析到您的ELK服务器。
现在,使用以下命令(在ELK服务器的FQDN中替换),在适当的位置(/ etc / pki / tls / ...)中生成SSL证书和私钥:
cd /etc/pki/tls; sudo openssl req -subj '/CN=ELK_server_fqdn/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
该logstash-forwarder.crt文件将被复制到所有将日志发送到Logstash服务器,但我们会做到这一点稍晚。我们来完成我们的Logstash配置。
配置Logstash
Logstash配置文件采用JSON格式,驻留在/etc/logstash/conf.d中。配置由三部分组成:输入,滤波和输出。
我们来创建一个配置文件,02-beats-input.conf并设置我们的“filebeat”输入:
sudo vi /etc/logstash/conf.d/02-beats-input.conf
插入以下输入配置:
02-beats-input.conf
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
保存并退出。这指定了一个beats在tcp端口上侦听的输入,它将5044使用我们之前创建的SSL证书和私钥。
现在我们创建一个调用的配置文件10-syslog-filter.conf,在这里我们将添加一个syslog消息的过滤器:
sudo vi /etc/logstash/conf.d/10-syslog-filter.conf
插入以下syslog 过滤器配置:
10-syslog-filter.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" ]
}
}
}
保存并退出。此过滤器查找标记为“syslog”类型(由Filebeat)类型的日志,它将尝试grok用于解析传入的syslog日志,使其结构化和查询。
最后,我们将创建一个名为30-elasticsearch-output.conf:
sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf
插入以下输出配置:
/etc/logstash/conf.d/30-elasticsearch-output.conf
output {
elasticsearch {
hosts => ["localhost:9200"]
sniffing => true
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
保存并退出。此输出基本上配置Logstash,以将所有节拍数据存储在运行于localhost:9200所使用节拍命名的索引(在我们的例子中为filebeat)的Elasticsearch中。
如果要为使用Filebeat输入的其他应用程序添加过滤器,请务必命名文件,以便它们在输入和输出配置之间进行排序(即在02和30之间)。
使用以下命令测试您的Logstash配置:
sudo service logstash configtest
Configuration OK如果没有语法错误,它应该显示。否则,尝试读取错误输出以查看您的Logstash配置有什么问题。
重新启动Logstash并启用它,使配置更改生效:
sudo service logstash restart
sudo update-rc.d logstash defaults 96 9
接下来,我们将加载示例Kibana仪表板。
加载Kibana仪表板
Elastic提供了几个示例Kibana仪表板和Beats索引模式,可以帮助您开始使用Kibana。虽然我们不会在本教程中使用仪表板,但是我们将加载它们,因此我们可以使用它包含的Filebeat索引模式。
首先,将示例仪表盘存档下载到您的主目录:
cd ~
curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip
unzip使用以下命令安装软件包:
sudo apt-get -y install unzip
接下来,提取存档的内容:
unzip beats-dashboards-*.zip
并使用以下命令将示例仪表板,可视化和Beats索引模式加载到Elasticsearch中:
cd beats-dashboards-*
./load.sh
这些是我们刚加载的索引模式:
[packetbeat-] YYYY.MM.DD
[topbeat-] YYYY.MM.DD
[filebeat-] YYYY.MM.DD
[winlogbeat-] YYYY.MM.DD
当我们开始使用Kibana时,我们将选择Filebeat索引模式作为默认值。
在Elasticsearch中加载文件搜索索引模板
因为我们计划使用Filebeat将日志发送到Elasticsearch,所以我们应该加载一个Filebeat索引模板。索引模板将配置Elasticsearch,以智能方式分析传入的Filebeat字段。
首先,将Filebeat索引模板下载到您的主目录:
cd ~
curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json
然后使用以下命令加载模板:
curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-index-template.json
如果模板正确加载,您应该会看到如下消息:
Output:
{
"acknowledged" : true
}
现在我们的ELK服务器已准备好接收Filebeat数据了,我们继续在每个客户端服务器上设置Filebeat。
设置Filebeat(添加客户端服务器)
复制SSL证书
在您的ELK服务器上,将先决条件教程中创建的SSL证书复制到客户端服务器(替换客户端服务器的地址和您自己的登录名):
scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp
提供登录凭据后,请确保证书副本成功。客户端服务器和ELK服务器之间的通信是必需的。
现在,在您的客户端服务器上,将ELK服务器的SSL证书复制到相应的位置(/ etc / pki / tls / certs):
sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/
现在我们将安装Topbeat软件包。
安装Filebeat包
在客户端服务器上,创建Beats源列表:
echo "deb https://packages.elastic.co/beats/apt stable main" | sudo tee -a /etc/apt/sources.list.d/beats.list
它还使用与Elasticsearch相同的GPG密钥,可以使用以下命令安装:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
然后安装Filebeat包:
sudo apt-get update
sudo apt-get install filebeat
已安装Filebeat,但尚未配置。
配置文件
现在我们将配置Filebeat以连接到我们的ELK服务器上的Logstash。本节将引导您修改Filebeat附带的示例配置文件。当你完成这些步骤,你应该有一个看起来像一个文件这样。
在客户端服务器上,创建并编辑Filebeat配置文件:
sudo vi /etc/filebeat/filebeat.yml
注意: Filebeat的配置文件采用YAML格式,这意味着缩进非常重要!请务必使用与这些说明相同数量的空格。
在文件顶部附近,您将看到该prospectors部分,您可以在哪里定义探矿者,指定哪些日志文件应该发货,以及应如何处理。每个探矿者由-字符指示。
我们将修改现有探矿派syslog和auth.log以Logstash。在下面paths,注释掉该- /var/log/*.log文件。这将阻止Filebeat将该目录中的每一个都发送.log到Logstash。然后添加新条目syslog和auth.log。完成后应该看起来像这样:
filebeat.yml摘录1的5
...
paths:
- /var/log/auth.log
- /var/log/syslog
# - /var/log/*.log
...
然后找到指定document_type:,取消注释它并将其值更改为“syslog”的行。修改后应该看起来像这样:
filebeat.yml摘录2的5
...
document_type: syslog
...
这指定此探测器中的日志类型为syslog(它是Logstash筛选器所查找的类型)。
如果要将其他文件发送到ELK服务器,或对Filebeat如何处理日志进行任何更改,请随时修改或添加探测器条目。
接下来,在该output部分下,找到所说的行,它表示elasticsearch:弹性搜索输出部分(我们不会使用)。删除或注释掉整个Elasticsearch输出部分(直到所说的行#logstash:)。
找到注释掉的Logstash输出部分,由说明的行#logstash:指示,并通过删除前面的内容取消注释#。在本节中,取消注释hosts: ["localhost:5044"]行。更改localhost为您的ELK服务器的私有IP地址(或主机名,如果您使用该选项):
filebeat.yml摘录3 of 5
### Logstash as output
logstash:
# The Logstash hosts
hosts: ["ELK_server_private_IP:5044"]
这将配置Filebeat以连接到您的ELK服务器上的Logstash端口5044(我们为之前指定的Logstash输入的端口)。
直接在hosts条目下,并且用相同的缩进,添加以下行:
filebeat.yml摘录4/5
bulk_max_size: 1024
接下来,找到该tls部分,并取消注释。然后取消注释指定的行certificate_authorities,并将其值更改为["/etc/pki/tls/certs/logstash-forwarder.crt"]。它应该看起来像这样:
filebeat.yml摘录5的5
...
tls:
# List of root certificates for HTTPS server verifications
certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
这将配置Filebeat以使用我们在ELK服务器上创建的SSL证书。
保存并退出。
现在重新启动Filebeat以使我们的更改到位:
sudo service filebeat restart
sudo update-rc.d filebeat defaults 95 10
现在Filebeat被发送syslog,并auth.log以您的ELK服务器上Logstash!对于您希望收集日志的所有其他服务器重复此部分。
测试Filebeat安装
如果您的ELK堆栈正确设置,Filebeat(在您的客户端服务器上)应该将您的日志发送到ELK服务器上的Logstash。Logstash应该将Filebeat数据加载到Elasticsearch的日期戳索引中filebeat-YYYY.MM.DD。
在您的ELK服务器上,验证Elasticsearch确实通过使用以下命令查询Filebeat索引来接收数据:
curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'
你应该看到一堆如下的输出:
Sample Output:
...
{
"_index" : "filebeat-2016.01.29",
"_type" : "log",
"_id" : "AVKO98yuaHvsHQLa53HE",
"_score" : 1.0,
"_source":{"message":"Feb 3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"}
}
...
如果您的输出显示0次总匹配,Elasticsearch不会在您搜索的索引下加载任何日志,您应该检查您的设置是否有错误。
设置Topbeat(添加客户端服务器)
复制SSL证书
在您的ELK服务器上,将先决条件教程中创建的SSL证书复制到客户端服务器(替换客户端服务器的地址和您自己的登录名):
scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp
提供登录凭据后,请确保证书副本成功。客户端服务器和ELK服务器之间的通信是必需的。
现在,在您的客户端服务器上,将ELK服务器的SSL证书复制到相应的位置(/ etc / pki / tls / certs):
sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/
现在我们将安装Topbeat软件包。
安装Topbeat包
在客户端服务器上,确保Beats源列表存在。打开/etc/apt/sources.list.d/beats.list编辑:
sudo vi /etc/apt/sources.list.d/beats.list
确保该行存在(如果它不存在则将其粘贴):
/etc/apt/sources.list.d/beats.list
deb https://packages.elastic.co/beats/apt stable main
保存并退出。
Topbeat使用与Elasticsearch和Filebeat相同的GPG密钥,可以使用以下命令安装:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
然后安装Topbeat软件包:
sudo apt-get update
sudo apt-get install topbeat
Tobeat现在已安装但尚未配置。
配置文件
现在我们将配置Topbeat连接到我们的ELK服务器上的Logstash。本节将引导您修改Topbeat附带的示例配置文件。当你完成这些步骤,你应该有一个看起来像一个文件这样。
在客户端服务器上,创建和编辑Topbeat配置文件:
sudo vi /etc/topbeat/topbeat.yml
注意: Topbeat的配置文件采用YAML格式,这意味着缩进非常重要!请务必使用与这些说明相同数量的空格。
在文件顶部附近,您将看到该input部分,您可以在其中指定哪些指标和统计信息应发送到ELK服务器。我们将使用默认输入设置,但可以随意更改以适应您的需要。
在该output部分下,找到所说的行,它表示elasticsearch:弹性搜索输出部分(我们不会使用)。删除或注释掉整个Elasticsearch输出部分(直到所说的行#logstash:)。
找到注释掉的Logstash输出部分,由说明的行#logstash:指示,并通过删除前面的内容取消注释#。在本节中,取消注释hosts: ["localhost:5044"]行。更改localhost为您的ELK服务器的私有IP地址(或主机名,如果您使用该选项):
topbeat.yml - 1的2
### Logstash as output
logstash:
# The Logstash hosts
hosts: ["ELK_server_private_IP:5044"]
这将配置Topbeat连接到您的ELK服务器上的Logstash端口5044(我们在前提条件教程中指定了Logstash输入的端口)。
接下来,找到该tls部分,并取消注释。然后取消注释指定的行certificate_authorities,并将其值更改为["/etc/pki/tls/certs/logstash-forwarder.crt"]。它应该看起来像这样:
topbeat.yml - 2的2
...
tls:
# List of root certificates for HTTPS server verifications
certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
这将配置Topbeat以在先决条件教程中使用我们在ELK服务器上创建的SSL证书。
保存并退出。
现在重新启动Topbeat以使我们的更改到位:
sudo service topbeat restart
sudo update-rc.d topbeat defaults 95 10
现在,Topbeat将您的客户端服务器的系统,进程和文件系统指标发送到您的ELK服务器!对于您希望以Topbeat指标衡量的所有其他服务器重复此部分。
测试Topbeat安装
如果您的ELK堆栈设置正确,则Topbeat(在客户端服务器上)应将您的日志发送到ELK服务器上的Logstash。Logstash应该将Topbeat数据加载到带有日期戳索引的Elasticsearch中topbeat-YYYY.MM.DD。
在您的ELK服务器上,验证Elasticsearch确实通过使用以下命令查询Topbeat索引来接收数据:
curl -XGET 'http://localhost:9200/topbeat-*/_search?pretty'
你应该看到一堆如下的输出:
Sample Output:
{
"_index" : "topbeat-2016.02.01",
"_type" : "process",
"_id" : "AVKeLSdP4HKUFv4CjZ7K",
"_score" : 1.0,
"_source":{"@timestamp":"2016-02-01T18:51:43.937Z","beat":{"hostname":"topbeat-01","name":"topbeat-01"},"count":1,"proc":{"cpu":{"user":0,"user_p":0,"system":50,"total":50,"start_time":"12:54"},"mem":{"size":0,"rss":0,"rss_p":0,"share":0},"name":"jbd2/vda1-8","pid":125,"ppid":2,"state":"sleeping"},"type":"process","@version":"1","host":"topbeat-01"}
}
如果您的输出显示0次总匹配,Elasticsearch将不会在您搜索的索引下加载任何Topbeat数据,您应该检查您的设置是否有错误。
设置Packetbeat(添加客户端服务器)
复制SSL证书
在您的ELK服务器上,将先决条件教程中创建的SSL证书复制到客户端服务器(替换客户端服务器的地址和您自己的登录名):
scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp
提供登录凭据后,请确保证书副本成功。客户端服务器和ELK服务器之间的通信是必需的。
现在,在您的客户端服务器上,将ELK服务器的SSL证书复制到相应的位置(/ etc / pki / tls / certs):
sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/
现在我们将安装Topbeat软件包。
安装Topbeat包
在客户端服务器上,确保Beats源列表存在。打开文件/etc/apt/sources.list.d/beats.list进行编辑:
sudo nano /etc/apt/sources.list.d/beats.list
如果您以前安装了出货单,则此文件可能已包含以下行:
/etc/apt/source.list.d/beats.list
deb https://packages.elastic.co/beats/apt stable main
如果文件为空白,或者该行不存在,请添加并保存文件。然后退出编辑器。
要安装此源码,我们需要一个GPG密钥。Packetbeat使用与Elasticsearch相同的GPG密钥,我们使用以下命令安装:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
现在,安装Packetbeat包:
sudo apt-get update
sudo apt-get install packetbeat
Packetbeat现已安装,但需要先配置才能使用。
配置文件
Packetbeat需要知道要记录的内容以及发送数据的位置。我们将其配置为连接到我们的ELK服务器上的Logstash,并定义我们希望观看哪种流量。我们将通过修改Packetbeat附带的默认配置文件来实现。
在客户端服务器上,编辑Packetbeat配置文件:
sudo nano /etc/packetbeat/packetbeat.yml
注意: Packetbeat的配置文件采用YAML格式,这意味着缩进非常重要!请务必使用与这些说明相同数量的空格。
在文件顶部附近,您将看到该input部分,您可以在其中指定哪些指标和统计信息应发送到ELK服务器。我们将使用默认输入设置,但可以随意更改以适应您的需要。
选择从中捕获流量的网络接口。在Linux上,Packetbeat支持捕获安装了Packetbeat的服务器发送或接收的所有消息。为此,any用作设备:
packetbeat.yml
# Select the network interfaces to sniff the data. You can use the "any"
# keyword to sniff on all connected interfaces.
interfaces:
device: any
在本protocols节中,配置Packetbeat可以找到每个协议的端口。如果您使用任何非标准端口,请在此处添加。否则,默认值应该很好。
packetbeat.yml
protocols:
dns:
ports: [53]
include_authorities: true
include_additionals: true
http:
ports: [80, 8080, 8081, 5000, 8002]
memcache:
ports: [11211]
mysql:
ports: [3306]
pgsql:
ports: [5432]
redis:
ports: [6379]
thrift:
ports: [9090]
mongodb:
ports: [27017]
接下来,我们需要告诉Packetbeat发送数据的位置。
在该output部分下,找到开头的行elasticsearch:,表示弹性搜索输出部分。我们不会使用此部分,因此删除或注释整个Elasticsearch输出部分,直到所说的行#logstash:)。
开始在这里删除:
packetbeat.yml
### Elasticsearch as output
elasticsearch:
# Array of hosts to connect to.
# Scheme and port can be left out and will be set to the default (http and 9200)
...
并继续删除,直到找到这一行:
packetbeat.yml
### Logstash as output
我们不会将数据发送到Elasticsearch,而是将其发送到Logstash。所以找到被注释掉的Logstash输出部分,#logstash:.通过删除前面的那行以由Uncomment开头的行指示#。然后取消注释hosts: ["localhost:5044"]行并更改localhost为您的ELK服务器的私有IP地址。配置文件的部分应如下所示:
packetbeat.yml
### Logstash as output
logstash:
# The Logstash hosts
hosts: ["your_ELK_server_private_ip_address:5044"]
这将配置Packetbeat以连接到端口上的ELK服务器上的5044Logstash,这是我们在前提教程中为Logstash输入指定的端口。
接下来,找到该tls部分,并删除前面的注释tls:。然后取消注释指定的行certificate_authorities,并将其值更改为["/etc/pki/tls/certs/logstash-forwarder.crt"]:
packetbeat.yml
tls:
# List of root certificates for HTTPS server verifications
certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
这将配置Packetbeat以使用我们从ELK服务器复制的证书。没有这个,客户端将无法建立连接。
如果您想要仔细检查您的配置文件,请将此与此示例进行比较,这样可以避免大部分不必要的注释来提高可读性:
packetbeat.yml
############################# Sniffer #########################################
interfaces:
device: any
############################# Protocols #######################################
protocols:
dns:
ports: [53]
include_authorities: true
include_additionals: true
http:
ports: [80, 8080, 8081, 5000, 8002]
memcache:
ports: [11211]
mysql:
ports: [3306]
pgsql:
ports: [5432]
redis:
ports: [6379]
thrift:
ports: [9090]
mongodb:
ports: [27017]
############################# Output ##########################################
output:
### Logstash as output
logstash:
hosts: ["your_ELK_server_private_ip_address:5044"]
tls:
certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
############################# Logging #########################################
logging:
files:
rotateeverybytes: 10485760 # = 10MB
检查您的配置后,保存文件并退出文本编辑器。
现在重新启动Packetbeat以使您的更改到位:
sudo service packetbeat restart
并且当您的服务器重新启动时,将Packetbeat配置为启动:
sudo update-rc.d packetbeat defaults 95 10
对于您要监视的任何其他服务器重复此部分。
Packetbeat现在应该监听网络流量并将其发送到Logstash。我们来看看它是否正常工作。
测试Packetbeat安装
此时,您的客户端服务器上的Packetbeat应该将您网络流量的日志发送到ELK服务器上的Logstash。Logstash应该将Packetbeat数据加载到Elasticsearch中,该索引被称为日期戳索引 packetbeat-YYYY.MM.DD。我们来测试一下这个工作原理是在客户端机器上创建一个简单的HTTP请求,并在ELK服务器上的Elasticsearch中查找该请求。
在您的客户端服务器上,用于curl发出请求http://www.elastic.co。
curl http://www.elastic.co/ > /dev/null
然后,在您的ELK服务器上,验证Elasticsearch确实通过使用以下命令查询Packetbeat索引来接收数据:
curl -XGET 'http://localhost:9200/packetbeat-*/_search?pretty'
你应该看到一堆如下的输出:
Output
{
"_index" : "packetbeat-2016.09.29",
"_type" : "http",
"_id" : "AVdDG6pDqHsDFrI4DAlI",
"_score" : 1.0,
"_source" : {
如果您的输出显示0次总点击次数,Elasticsearch将不会在您搜索的索引下加载任何Packetbeat数据,您应该在几秒钟后再次尝试,因为可能需要很短时间才能拾取数据。如果您在等待后仍然看不到任何结果,请检查您的设置是否有错误。确保您已将Packetbeat的配置文件指向您转移的证书,因为如果路径不正确,它将以静默方式失败。
日志分析服务 LOG
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。