ELK日志分布式日志平台搭建

首先先搭建好ELK中的ElasticSearch存储数据 和Logstash采集数据

ElasticSearch 本地快速搭建与使用

es的独立性也很强,它本身是一个分布式的搜索引擎,通过倒排序索引对存储的数据进行索引。
当输入查询关键字之后,es依据命中结果的匹配度有序返回结果,效果就像大家百度或者google搜索一样。

在ELK组合中,担当的是数据存储、索引和提供查询接口的功能。

Logstash安装配置

kibana图形显示数据

kibana是一个数据展示的客户端,提供对es中数据的可视化搜索和展示功能,主要提供了时间维度和数据中字段值的检索。以及功能丰富的看板,能够添加曲线图、饼图、地址分布图等多种样式的展示图形。

elasticsearch 服务安全配置

elasticsearch 服务安全配置

一、目前主要通过插件的形式来控制:

  1. 常用的插件主要包括:elasticsearch-http-basic,search-guard,shield
  2. 由于shield是收费的暂时还未研究(研究后统一补充)
  3. search-guard主要用于elasticsearch2.x以后的版本(研究后统一补充)
  4. elasticsearch-http-basic主要用于elasticsearch1.x的版本
  5. 基于目前我们es集群大部分都是1.5.2版本的,所以主要使用http-basic来控制来自http请求的访问。

二、elasticsearch-http-basic安装:

  1. 下载elasticsearch-http-basic-1.5.1.jar(下载地址:https://github.com/Asquera/elasticsearch-http-basic/releases)
  2. 在ES的plugins文件夹下新建http-basic文件夹
  3. 把下载的 elasticsearch-http-basic-1.5.1.jar拷贝到新建的http-basic文件夹下
  4. 修改ES的配置文件elasticsearch.yml,在文件末尾添加以下配置:
配置名                                     默认值                            说明

http.basic.enabled                         true                            开关,开启会接管全部HTTP连接

http.basic.user                          "admin"                          账号

http.basic.password                      "admin_pw"                       密码

http.basic.ipwhitelist            ["localhost", "127.0.0.1"]    白名单内的ip访问不需要通过账号和密码,支持ip和主机名,不支持ip区间或正则

http.basic.trusted_proxy_chains    []                                    信任代理列表

http.basic.log    false                                              把无授权的访问事件添加到ES的日志

http.basic.xforward    ""                                          记载代理路径的header字段名

5.重启ES集群
目前我们主要通过http.basic.ipwhitelist 白名单 + 用户名、密码来控制外部机器对ES集群的http请求,

1.在白名单内的ip列表用户无需验证可直接通过ES节点的ip地址访问ES,白名单外的用户无权访问ES集群

2.由于白名单无法控制通过域名的访问,如果要通过域名访问ES必须要通过用户名和密码来访问

安装
下载地址:https://www.elastic.co/downloads/kibana
解压:tar zxvf kibana-6.4.0-linux-x64.tar.gz

配置 Kibana
Kibana server 启动时从 kibana.yml 文件中读取配置属性。Kibana 默认配置 localhost:5601 。改变主机和端口号,或者连接其他机器上的 Elasticsearch,需要更新 kibana.yml 文件。也可以启用 SSL 和设置其他选项。

Kibana 基础配置项
https://www.elastic.co/guide/cn/kibana/current/settings.html(官方配置文档)

#默认值: 5601 Kibana 由后端服务器提供服务,该配置指定使用的端口号。
server.port: 5601
#默认值: "localhost" 指定后端服务器的主机地址。
server.host: "192.168.1.191"
#默认值: "http://localhost:9200" 用来处理所有查询的 Elasticsearch 实例的 URL 。
elasticsearch.url: "http://192.168.1.191:9200"

启动Kibana

./kibana  //不能关闭终端
nohup  ./kibana > /nohub.out &  //可关闭终端,在nohup.out中查看log
在浏览器中访问:http://192.168.1.191:5601/

输入*配备所有目录 选择其中一个生成数据
ELK日志分布式日志平台搭建

ELK日志平台整合

因为没有特负责的业务,所以这里采用FileBeats收集日志直接输出到elasticsearch ,用kibana展示查询

安装运行 FileBeats

FileBeats 也提供了下载包,地址为 https://www.elastic.co/downloads/beats/filebeat 。找到系统对应的包下载后解压即可。

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

进入目录编辑 filebeat.yml 找到对应的配置项,配置如下

###################### Filebeat Configuration Example #########################

# 此文件是一个示例配置文件,仅突出显示最常见的配置文件

#=========================== Filebeat inputs =============================

filebeat.inputs:
# 每个 - 是一个输入。 大多数选项可以在输入级别设置,因此您可以使用不同的输入进行各种配置。下面是输入特定的配置。
- type: log
  # 为true以启用此输入配置。
  enabled: true
  # 采集文件的路径
  paths:
    - /usr/local/apache-tomcat-8.5.34/logs/*.txt

  #要匹配的正则表达式列表。 它会删除与列表中任何正则表达式匹配的行。
  #exclude_lines: ['^DBG']
  # 要匹配的正则表达式列表
  #include_lines: ['^ERR', '^WARN']

  # 排除文件。 要匹配的正则表达式列表
  #exclude_files: ['.gz$']

  # 可选的附加字段。 可以*选择这些字段以将其他信息添加到已爬网日志文件以进行过滤
  #fields:
  #  level: debug
  #  review: 1

  ### Multiline options

  # 多行可用于跨越多行的日志消息。 这对于Java Stack Traces或C-Line Continuation来说很常见
  # 必须匹配的正则表达式模式。 示例模式匹配以[以[]开头的所有行
  #multiline.pattern: ^\[

  # 定义是否取消设置的模式。 默认值为false。
  #multiline.negate: false




#============================= Filebeat modules ===============================

filebeat.config.modules:
  # 用于配置加载的Glob模式
  path: ${path.config}/modules.d/*.yml
  #设置为true以启用配置重新加载
  reload.enabled: false
  #检查路径下文件的更改周期
  #reload.period: 10s

#====================Elasticsearch模板设置 ==========================

setup.template.settings:
  index.number_of_shards: 3
  #index.codec: best_compression
  #_source.enabled: false

#============================== Kibana 设置=====================================
setup.kibana:
  host: "192.168.1.191:5601"

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  hosts: ["192.168.1.191:9200"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

  # Optional protocol and basic auth credentials.
  #protocol: "https"
  #username: "elastic"
  #password: "changeme"

配置完成后执行如下命令,启动 FileBeat 即可(elasticsearch先启动)

# FileBeat 需要以 root 身份启动,因此先更改配置文件的权限
sudo chown root filebeat.yml
sudo ./filebeat -e -c filebeat.yml -d "publish"
#后台启动
nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &

访问kibana就会出现新加入的索引列表filebeat-6.4.0-2018.09.29
ELK日志分布式日志平台搭建