世界上只有一种英雄主义,就是看清生活的真相之后依然热爱生活!

部署 Elasticsearch+Filebeat+Kibana 日志收集分析系统

2019-04-10
805次查阅
2019/8/7

Elasticsearch 基本概念

  • node:运行单个ES实例的服务器
  • cluster:一个或多个节点组成的集群
  • index:索引多个文档的集合
  • type:一个 index 可以定义一个或多个类型,将 document 逻辑份组
  • document:index 里的每条记录
  • field:ES存储最小单元
  • shards:ES将index分片
  • replicas:index 一份或多份副本

和关系型数据库对照:

Elasticsearch​        MySQL
index                database
type                 table
document             row
field                Column

Elasticsearch 是 java 语言编写,所以需要配置 java 环境,这里使用的是 java 开源版本:

yum install java-1.8.0-openjdk.x86_64

Elasticsearch 配置

下载:https://www.elastic.co/cn/downloads/elasticsearch
文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

使用rpm包方式安装,安装参考官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/rpm.html

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-x86_64.rpm
rpm -ivh elasticsearch-7.3.0-x86_64.rpm

mkdir -p /data/elasticsearch/{data,log}
chown -R elasticsearch:elasticsearch /data/elasticsearch

Elasticsearch 配置文件:

grep -v "^#" /etc/elasticsearch/elasticsearch.yml

cluster.name: es-cluster
node.name: node-1
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/log
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]

Elasticsearch 推荐使用集群,这里暂使用单节点做测试。

Elasticsearch 数据操作

REST APIs文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/rest-apis.html

REST API请求格式:

curl -X<verb> '<protocol>://<host>:<prot>/<path>?<query_string>' -d '<body>'

参数             描述
verb             HTTP方法,比如GET/POST/PUT/HEAD/DELETE
host             ES节点中任意主机名
port             ES HTTP服务端口,默认是9200
path             索引路劲
query_string     可选的查看请求参数,例如 ?pretty 将格式化输出的 json 数据
-d               请求数据参数
body             json 格式的请求主体数据

Kibana 配置

下载:https://www.elastic.co/cn/downloads/kibana
文档:https://www.elastic.co/guide/cn/kibana/current/index.html

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.3.0-x86_64.rpm
rpm ivh kibana-7.3.0-x86_64.rpm

Kibana 配置文件:

grep -Ev "^#|^$" /etc/kibana/kibana.yml

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
pid.file: /tmp/kibana.pid
i18n.locale: "zh-CN"

新版本的 kibana 官方已经支持中文,配置文件中配置即可。

启动 elasticsearch 和 kibana:

systemctl enable elasticsearch.service
systemctl start elasticsearch

systemctl enable kibana.service
systemctl start kibana

安装 Filebeat

Filebeat是一个轻量级的日志收集工具,用于转发和收集日志数据。Filebeat安装在被收集服务器上,监视指定的日志文件或路径,将收集的日志事件转发到 Elasticsearch或 Logstash 进行索引。

下载:https://www.elastic.co/cn/downloads/beats/filebeat
文档:https://www.elastic.co/guide/en/beats/filebeat/current/index.html

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.0-x86_64.rpm
rpm -ivh filebeat-7.3.0-x86_64.rpm

filebeat 配置文件:

# 输入部分
filebeat.inputs:

# 收集 nginx 日志
- type: log
  enabled: true
  paths:
    - /home/nginxlogs/webpos.huiyika.com.log
  json.keys_under_root: true
  json.add_error_key: true
  fields:
    source: 'webpos-nginx-access'

# 收集 docker 日志
- type: docker
  enabled: true
  containers.ids:
    - '6469383a2884015181d52c0b2ea7cd772a883dd4af79dd1ef9715e6eba78015e'
  fields:
    source: 'docker-consul'


# 输出部分
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["192.200.200.2:9200"]
  indices:
    - index: "%{[fields.source]}-%{+yyyy.MM.dd}"
      when.contains:
        fields.source: "webpos-nginx-access"
    - index: "%{[fields.source]}-%{+yyyy.MM.dd}"
      when.contains:
        fields.source: "docker-consul"

配置很多,具体参考官网文档,修改好配置文件,重启生效:

systemctl restart filebeat 

收集 nginx 日志,需要修改 nginx 日志为 JSON 格式:

log_format json escape=json '{ "@timestamp": "$time_iso8601", '
                             '"time": "$time_iso8601", '
                             '"remote_addr": "$remote_addr", '
                             '"remote_user": "$remote_user", '
                             '"body_bytes_sent": "$body_bytes_sent", '
                             '"request_time": "$request_time", '
                             '"status": "$status", '
                             '"host": "$host", '
                             '"request": "$request", '
                             '"request_method": "$request_method", '
                             '"uri": "$uri", '
                             '"http_referrer": "$http_referer", '
                             '"body_bytes_sent":"$body_bytes_sent", '
                             '"http_x_forwarded_for": "$http_x_forwarded_for", '
                             '"http_user_agent": "$http_user_agent" '
                            '}';

在Kibana中配置索引

在索引管理面板,可以看见在 filebeat 中配置的两个日志:

如下步骤创建索引模式:

创建好之后可以在 Discover 面板查看:

评论

想说点什么?