2018 Mac安装ELK

虽然看到国内的日志易号称比ELK强,但是作为一个初学者,还是从原生ELK开始学习,最近的项目需要对文本数据各字段进行快速检索、组合查询、模糊查询,在架构选择上选择了Elasticsearch作为支撑这些功能的存储和搜索引擎。

1. 安装配置ELK

日志分析平台可以有多种技术架构的选型,但经过了多年的演变,现在比较流行的应该就是ELK了。 ELK三个字母的意义如下:

  1. Elasticsearch
  2. Logstash
  3. Kibana

架构图下图:

图中的Shipper和Indexer都可以是Logstash, Broker一般为Redis,也可以是kafka等。而Search & Storage则主要是Elasticsearch了,一方面接收上游index好的文档,另一方面提供API支持对内容的检索。而kibana则是一个web interface, 可以提供简单易用的界面让用户方便的写出搜索的表达式来访问Elasticsearch.

使用brew安装

既然使用了mac,那么使用brew安装程序则是一个最简单不过的方式了。

首先安装Elasticsearch,直接输入以下命令即可:

brew install elasticsearch

但可能遇到问题,比如要求Java的版本是1.8(我安装的Elasticsearch的按本是5.2.2),这里面可能涉及到还要安装brew cast用来安装java8, 运行如下命令加以纠正。

brew install brew-cask-completion
brew update
brew cask install caskroom/versions/java8

安装完成后,可以查看elasticsearch的版本:

elasticsearch --version
Version: 6.2.2, Build: 10b1edd/2018-02-16T19:01:30.685723Z, JVM: 1.8.0_162

启动和停止elasticsearch也很简单:

brew services start elasticsearch
brew services stop elasticsearch

浏览器访问http://localhost:9200可以看到Elasticsearch的信息:

{
  "name" : "IovwYsw",
  "cluster_name" : "elasticsearch_xiaoyongwang",
  "cluster_uuid" : "uFQpTBkrSNGfY3Vyy_FH5g",
  "version" : {
    "number" : "6.2.2",
    "build_hash" : "10b1edd",
    "build_date" : "2018-02-16T19:01:30.685723Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

接着安装logstash:

brew install logstash

安装好后查看版本:

logstash --version
logstash 6.2.2

启动Logstash:

bin/logstash -e 'input { stdin { } } output { stdout {} }'

浏览器访问http://localhost:9600可以看到如下信息:

host	"XiaoyongdeMacBook-Pro.local"
version	"6.2.2"
http_address	"127.0.0.1:9600"
id	"c7161169-2a48-41be-9e4a-d20d01019862"
name	"XiaoyongdeMacBook-Pro.local"
build_date	"2018-02-16T20:52:54+00:00"
build_sha	"93a53e45ca9ecb40801c2d37bfd8ed07dc971558"
build_snapshot	false

Kibana不需要通过brew安装,直接下载压缩包后,解压后执行./kibana即可。

tar zxvf kibana-6.2.2-darwin-x86_64.tar.gz

不过我还是在/usr/local/bin/下创建了kibanakibana-plugin的软连接, elasticsearch,elasticsearch-plugin,logstashlogstash-plugin都在这个目录下,以后安装插件的话,还都需要用上这些*-plugin.

Kibana安装完成后,需要在config/kibana.yml文件中,确认elasticsearch.url: "http://localhost:9200"

2 测试写入和查询

写入Elasticsearch可以很简单,其本身就提供了RESTFul的API接口,请仔细参考这个链接

https://www.elastic.co/guide/en/kibana/current/tutorial-load-dataset.html ,比如,创建 shakespeare 映射:

curl -XPUT 'localhost:9200/shakespeare?pretty' -H 'Content-Type: application/json' -d'
 {
  "mappings": {
   "doc": {
    "properties": {
     "speaker": {"type": "keyword"},
     "play_name": {"type": "keyword"},
     "line_id": {"type": "integer"},
     "speech_number": {"type": "integer"}
    }
   }
  }
 }
 '

通过以下命令将数据写入Elasticsearch:

curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json

检查导入成功与否,命令

curl -XGET 'localhost:9200/_cat/indices?v&pretty'
health status index               uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   logstash-2015.05.19 E7QKssNoTEieEKy7Wqt8Qw   5   1       4624            0     22.6mb         22.6mb
yellow open   logstash-2015.05.20 MxR0w4ILSBeE-RwM1w7IVA   5   1       4750            0     22.9mb         22.9mb
green  open   .kibana             CQHHSCv0TsupIJTUOZeMsw   1   0          2            0      9.4kb          9.4kb
yellow open   shakespeare         1iTc9waHToOMz3sW-wXGpA   5   1     111396            0     21.6mb         21.6mb
yellow open   bank                bZ38Do5OSnCn6axE6wquFw   5   1       1000            0    475.1kb        475.1kb
yellow open   logstash-2015.05.18 StHBhHI2ShCWvNQQGRhGDg   5   1       4631            0       21mb           21mb

数据写入后,到kibana目录运行./kibana,启动后访问:http://localhost:5601/ , 看到kibana界面后会提示”Configure an index pattern”。, 如下图:

刚才在写入数据的时候已经创建了shakespeare index, 且不是按照时间分布的日志文件(shakespeare只有一个json文件),因此,取消勾选Index contains time-based envents,输入shakespeare后,就能看到create按钮了。

点击kibana的Discover页面,输入WESTMORELAND查询,可以看到有110个结果:

3. 监控和安全

在Elasticsearch 5.x的时代,监控和管理由X-Pack统一完成,包含:

  1. 安全:用户权限管理
  2. 告警:自动告警
  3. 监控:监控Elasticsearch集群的状态
  4. 报告:发送报告、导出数据
  5. 图表:可视化数据

在安装X-Pack之前,需要停止Kibana和Elasticsearch,可参考https://www.elastic.co/cn/downloads/x-pack进行安装。

elasticsearch-plugin install x-pack
kibana-plugin install x-pack

安装完成后,启动elasticsearch和kibana,访问kibana时发现需要登录了, 默认用户名和密码是elastic/changeme。

后续可以在Management面板中进行用户和角色的配置,也可以看到新增了Reporting。

在Monitoring页面中可以看到Elasticsearch和Kibana的状态,点击Indices还可以看到具体索引的状态。

告警功能和报表功能后续再进行详细研究。之前在A家的时候,记得有个基于日志的告警功能:当service的日志中出现了ERROR或FATAL,可以自动触发告警。有了X-Pack后,这个功能应该也是可以通过ELK来实现的啦。

通过访问http://localhost:9200/_cat/indices?v查看Elasticsearch的Index, 可以发现几个新的与监控有关的index:

health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   .monitoring-es-2-2017.03.04     COZvO_dlSkqdEtntrZrzFA   1   1      10240          154      4.5mb          4.5mb
green  open   .security                       XEeHRF5NT0ud2jpxOzsoHw   1   0          1            0      2.8kb          2.8kb
yellow open   .kibana                         p-cJGBCXQySNGR0924jRdQ   1   1          2            1      9.8kb          9.8kb
yellow open   .monitoring-data-2              QZt0hpTISUO_58pWoG5Hyw   1   1          3            0      6.9kb          6.9kb
yellow open   .monitoring-kibana-2-2017.03.04 nLHKuL1KTiCE2lsWz8tdkA   1   1        849            0      245kb          245kb
yellow open   shakespeare                     zPCLp4KmTkiu7m4tYcA_Iw   5   1     111396            0     28.1mb         28.1mb

4. 使用Logstash导入日志

参考链接:https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html

下载并解压日志数据:

gunzip logstash-tutorial.log.gz

下载并安装 FileBeat

tar zxvf filebeat-6.2.2-darwin-x86_64.tar.gz

进入Filebeat 安装好的目录,编辑 filebeat.yml文件

filebeat.prospectors:
- type: log
  paths:
    - /Users/xiaoyongwang/Downloads/logstash-tutorial.log 
output.logstash:
  hosts: ["localhost:5044"]

修改文件的Owner,参见https://www.elastic.co/guide/en/beats/libbeat/6.2/config-file-permissions.html

chown root filebeat.yml

启动filebeat,

sudo ./filebeat -e -c filebeat.yml -d "publish"

配置Logstash 以便接受刚才配置的filebeat 日志。在Logstash安装目录下创建 first-pipeline.conf文件,文件内容如下:

input {
    beats {
        port => "5044"
    }
}
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}
output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}

启动Logstash,

bin/logstash -f first-pipeline.conf --config.reload.automatic

验证你配置的管道

curl -XGET 'localhost:9200/logstash-$DATE/_search?pretty&q=response=200'

注意:如果你配置了x-pack,会出现错误,需要授权




你可能感兴趣的:(2018 Mac安装ELK)