博客
关于我
如何在Ubuntu 14.04上安装Elasticsearch、Logstash以及Kibana(即ELK堆栈)
阅读量:247 次
发布时间:2019-03-01

本文共 5609 字,大约阅读时间需要 18 分钟。

Ubuntu 14.04上安装ELK堆栈(Elasticsearch、Logstash、Kibana)

在本教程中,我们将引导您完成在Ubuntu 14.04上安装ELK堆栈的过程,即Elasticsearch 2.2.x、Logstash 2.2.x以及Kibana 4.4.x。我们还将探讨如何利用Filebeat 1.1.x以集中化方式对其进行配置以实现系统日志整理与可视化转换。


目录

  • 已定目标
  • 先决条件
  • 安装Java 8
  • 安装Elasticsearch
  • 安装Kibana
  • 安装Nginx
  • 安装Logstash
  • 生成SSL证书
  • 配置Logstash
  • 设置Filebeat(客户服务器)
  • 测试Filebeat安装
  • 接入Kibana
  • 总结

  • 已定目标

    本教程的目标在于设置Logstash以收集多台服务器上的系统日志,而后设置Kibana对收集到的日志进行可视化处理。


    先决条件

    要完成本教程,大家首先需要引导一套Ubuntu 14.04 VPS。相关方法请参阅。


    安装Java 8

    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

  • 安装Elasticsearch

    我们可通过添加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

  • 安装Kibana

    我们可添加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

  • 安装Nginx

    由于我们在配置中要求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

    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

  • 生成SSL证书

    由于我们需要使用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

    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

  • 设置Filebeat(客户服务器)

    通过以下步骤保证各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

  • 测试Filebeat安装

    如果ELK堆栈设置正确,Filebeat会将syslog日志发送至Elasticsearch。您可以通过以下命令验证:

    curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

    接入Kibana

    完成以上步骤后,您可以通过浏览器访问Kibana界面:

  • 打开浏览器,输入ELK服务器的公共IP地址或FQDN。
  • 输入管理员账号“kibanaadmin”和密码。
  • 选择默认索引模式filebeat-YYYY.MM.DD
  • 点击“Discover”查看日志数据。

  • 总结

    通过本教程,您已经成功设置了一个功能齐全的ELK堆栈。系统日志已经以集中方式通过Elasticsearch与Logstash实现收集与管理,而Kibana则负责进行图形化处理。

    转载地址:http://obdt.baihongyu.com/

    你可能感兴趣的文章
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>
    NLog类库使用探索——详解配置
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP的神经网络训练的新模式
    查看>>
    NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
    查看>>
    NLP:使用 SciKit Learn 的文本矢量化方法
    查看>>
    Nmap扫描教程之Nmap基础知识
    查看>>
    Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
    查看>>
    NMAP网络扫描工具的安装与使用
    查看>>
    NMF(非负矩阵分解)
    查看>>
    nmon_x86_64_centos7工具如何使用
    查看>>
    NN&DL4.1 Deep L-layer neural network简介
    查看>>
    NN&DL4.3 Getting your matrix dimensions right
    查看>>
    NN&DL4.8 What does this have to do with the brain?
    查看>>
    No 'Access-Control-Allow-Origin' header is present on the requested resource.
    查看>>
    NO 157 去掉禅道访问地址中的zentao
    查看>>