裸机使用|裸机使用 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+ 的 RAMelk-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 的参数名等等都发生了变化了 )
下面给几个参考代码:
【裸机使用|裸机使用 filebeat 采集裸机上的日志文件,并发到 elasticsearch】创建 index
from elasticsearch import Elasticsearches = Elasticsearch("http://192.168.31.245:9200") result = es.indices.create(index='nie') print(result)

这里很简单,实际上,你还需要添加一些参数,比如指定 index 的『副本数』、『分片数』。比如你的 elasticsearch 集群有 3 个 node,那『分片数』就应该是 3 的倍数,这样才能更好的利用集群的资源!
裸机使用 filebeat 采集裸机上的日志文件,并发到 elasticsearch

    推荐阅读