博客
关于我
如何在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/

    你可能感兴趣的文章
    npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
    查看>>
    npm install digital envelope routines::unsupported解决方法
    查看>>
    npm install 卡着不动的解决方法
    查看>>
    npm install 报错 EEXIST File exists 的解决方法
    查看>>
    npm install 报错 ERR_SOCKET_TIMEOUT 的解决方法
    查看>>
    npm install 报错 fatal: unable to connect to github.com 的解决方法
    查看>>
    npm install 报错 no such file or directory 的解决方法
    查看>>
    npm install 权限问题
    查看>>
    npm install报错,证书验证失败unable to get local issuer certificate
    查看>>
    npm install无法生成node_modules的解决方法
    查看>>
    npm install的--save和--save-dev使用说明
    查看>>
    npm node pm2相关问题
    查看>>
    npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
    查看>>
    npm run build报Cannot find module错误的解决方法
    查看>>
    npm run build部署到云服务器中的Nginx(图文配置)
    查看>>
    npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
    查看>>
    npm scripts 使用指南
    查看>>
    npm should be run outside of the node repl, in your normal shell
    查看>>
    npm start运行了什么
    查看>>
    npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
    查看>>