本文共 5609 字,大约阅读时间需要 18 分钟。
在本教程中,我们将引导您完成在Ubuntu 14.04上安装ELK堆栈的过程,即Elasticsearch 2.2.x、Logstash 2.2.x以及Kibana 4.4.x。我们还将探讨如何利用Filebeat 1.1.x以集中化方式对其进行配置以实现系统日志整理与可视化转换。
本教程的目标在于设置Logstash以收集多台服务器上的系统日志,而后设置Kibana对收集到的日志进行可视化处理。
要完成本教程,大家首先需要引导一套Ubuntu 14.04 VPS。相关方法请参阅。
Elasticsearch与Logstash需要Java作为运行环境。我们选择安装最新的甲骨文Java 8版本以符合Elasticsearch推荐要求。
将甲骨文Java PPA添加至apt:
sudo add-apt-repository -y ppa:webupd8team/javasudo apt-get update
安装甲骨文Java 8的最新稳定版本:
sudo apt-get -y install oracle-java8-installer
我们可通过添加Elastic的软件包源列表利用软件包管理器安装Elasticsearch。
将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 service elasticsearch restartsudo update-rc.d elasticsearch defaults 95 10
我们可添加Elastic软件包源列表以安装Kibana。
创建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为自动启动:
sudo update-rc.d kibana defaults 96 9sudo service kibana start
由于我们在配置中要求Kibana监听本地主机,因此必须设置反向代理以允许外部接入。我们将使用Nginx完成这项目标。
安装Nginx与Apache2-utils:
sudo apt-get install nginx apache2-utils
创建管理员用户并设置密码:
sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin
配置Nginx反向代理:
sudo vi /etc/nginx/sites-available/default
复制以下内容至Nginx配置文件中:
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:
sudo service nginx restart
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 -y install logstash
启动并设置Logstash为自动启动:
sudo service logstash restartsudo update-rc.d logstash defaults 96 9
由于我们需要使用Filebeat将来自客户服务器的日志发送至ELK服务器,因此这里必须创建一份SSL证书与密钥对。
创建SSL证书与私钥目录:
sudo mkdir -p /etc/pki/tls/certssudo mkdir /etc/pki/tls/private
生成SSL证书与私钥(选择IP地址选项):
cd /etc/pki/tlssudo openssl req -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
Logstash配置文件为JSON格式,且位于/etc/logstash/conf.d当中。其配置由输入、过滤与输出三部分构成。
创建输入配置文件02-beats-input.conf:
sudo vi /etc/logstash/conf.d/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" }}创建过滤配置文件10-syslog-filter.conf:
sudo vi /etc/logstash/conf.d/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}" ] } date { match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } }}创建输出配置文件30-elasticsearch-output.conf:
sudo vi /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配置:
sudo service logstash configtest
重启Logstash:
sudo service logstash restartsudo update-rc.d logstash defaults 96 9
通过以下步骤保证各Ubuntu或Debian服务器向ELK服务器上的Logstash发送日志。
在ELK服务器上将SSL证书复制至客户服务器:
scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp
在客户服务器上设置Filebeat:
sudo mkdir -p /etc/pki/tls/certssudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/
在客户服务器上创建Beats源列表:
echo "deb https://packages.elastic.co/beats/apt stable main" | sudo tee -a /etc/apt/sources.list.d/beats.list
更新apt软件包数据库并安装Filebeat:
sudo apt-get updatesudo apt-get -y install filebeat
配置Filebeat:
sudo vi /etc/filebeat/filebeat.yml
修改配置文件内容:
filebeat { prospectors { path => ["/var/log/auth.log", "/var/log/syslog"] } document_type: "syslog" hosts => ["ELK_server_private_IP:5044"] bulk_max_size: 1024 tls { certificate_authorities => ["/etc/pki/tls/certs/logstash-forwarder.crt"] }}重启Filebeat:
sudo service filebeat restartsudo update-rc.d filebeat defaults 95 10
如果ELK堆栈设置正确,Filebeat会将syslog日志发送至Elasticsearch。您可以通过以下命令验证:
curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'
完成以上步骤后,您可以通过浏览器访问Kibana界面:
filebeat-YYYY.MM.DD。通过本教程,您已经成功设置了一个功能齐全的ELK堆栈。系统日志已经以集中方式通过Elasticsearch与Logstash实现收集与管理,而Kibana则负责进行图形化处理。
转载地址:http://obdt.baihongyu.com/