裸机使用 filebeat 采集裸机上的日志文件,并发到 elasticsearch

部署 elasticsearch 和 kibana

因为是 demo 性质的使用,所以就用 docker-compose 简单跑一下

version: "3"
services:
  elk-elasticsearch:
    container_name: elk-elasticsearch
    image: elasticsearch:7.17.1
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g" # 限制 es 的内存大小,不然会吃掉 10GB+ 的 RAM


  elk-kibana:
    container_name: elk-kibana
    image: kibana:7.17.1
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://192.168.31.245:9200
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml # kibana 其实是支持中文的,只要在 /usr/share/kibana/config/kibana.yml 加一行 i18n.locale: "zh-CN"

elasticsearch 和 kibana 的版本要一致。同样的,后面的 filebeat 也要版本一致!

这次我们都用 7.17.1

如果需要用 dbeaver 之类的工具连接 elasticsearch 遇到 current license is non-compliant for [jdbc],可以参考:current license is non-compliant for jdbc 解决!

创建索引

一开始,我参考了这个教程:EFK 搭建简单的日志分析系统

不得不说这个教程写的非常的烂,缺斤短两,但即便如此,这已经还是谷歌搜索出来排名靠前


部署好了 elasticsearch 和 kibana 之后,我们需要去 elasticsearch 创建索引

为什么需要创建索引(index)?
index 这个概念在 elasticsearch 中就相当于 mysql 中的 table(elasticsearch 没有 db 这个概念)。主要注意的是,elasticsearch 的 index,创建的时候,只给一个 index name 就可以,不需要定义 schema

怎么创建索引?方法有很多,比如:

  • 通过 dbeaver,连接到 elasticsearch,然后在 dbeaver 为 elasticsearch 创建索引
  • 使用 kibana 连接到 elasticsearch,然后在 kibana 为 elasticsearch 创建索引
  • 使用 python、java 等编程语言提供的 elasticsearch client sdk 直接连接到 elasticsearch 创建索引

我选择 python,因为我对这个最熟悉

python 的 elasticsearch client sdk 版本也要版本保持一致!

pip install elasticsearch==7.17.1

关于如何使用 elasticsearch client sdk 操作 elasticsearch,可以参考这篇文章: Elasticsearch 基本介绍及其与 Python 的对接实现 (这个文章中的 elasticsearch client sdk 比较老,所以一些 api 的参数名等等都发生了变化了 )

下面给几个参考代码:

创建 index

from elasticsearch import Elasticsearch


es = Elasticsearch("http://192.168.31.245:9200")
result = es.indices.create(index='nie')
print(result)
这里很简单,实际上,你还需要添加一些参数,比如指定 index 的『副本数』、『分片数』。比如你的 elasticsearch 集群有 3 个 node,那『分片数』就应该是 3 的倍数,这样才能更好的利用集群的资源!

裸机使用 filebeat 采集裸机上的日志文件,并发到 elasticsearch

你可能感兴趣的:(裸机使用 filebeat 采集裸机上的日志文件,并发到 elasticsearch)