ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch
、Logstash
和 Kibana
。
Elasticsearch
是一个搜索和分析引擎。
Logstash
是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch
等“存储库”中。
Kibana
则可以让用户在 Elasticsearch
中使用图形和图表对数据进行可视化。
Elastic Stack 是 ELK Stack 的更新换代产品。
Elasticsearch 是一个开源的分布式、具有 RESTful 风格的搜索和数据分析引擎,基于 JSON 开发而来。能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。它使用简单,可缩放规模,十分灵活,因此受到用户的热烈好评。
Elasticsearch 的核心是搜索引擎,所以用户开始将其用于日志用例,并希望能够轻松地对日志进行采集和可视化。有鉴于此,我们引入了强大的采集管道 Logstash 和灵活的可视化工具 Kibana。
“我只想对某个文件进行 tail
操作,”用户表示。我们用心倾听。在 2015 年,我们向 ELK Stack 中加入了一系列轻量型的单一功能数据采集器,并把它们叫做 Beats
。
用于监控、收集网络流量信息,Packetbeat嗅探服务器之间的流量,解析应用层协议,并关联到消息的处理,其支 持ICMP (v4 and v6)、DNS、HTTP、Mysql、PostgreSQL、Redis、MongoDB、Memcache等协议。
用于监控、收集服务器日志文件,其已取代 logstash forwarder。
可定期获取外部系统的监控指标信息,其可以监控、收集 Apache、HAProxy、MongoDB、MySQL、Nginx、PostgreSQL、Redis、System、Zookeeper等服务。
用于监控、收集Windows系统的日志信息。
用于健康检查
Elasticsearch 是一个基于Lucene实现的开源的搜索引擎。具有分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等特点。
待更
待更
下载安装包
官方下载
创建用户、赋予指定文件夹所有权限(不支持root用户运行)
useradd elasticsearch
mkdir -p /opt/elasticsearch
chown -R elasticsearch:elasticsearch /opt/elasticsearch
切到用户elasticsearch
su -elasticsearch
解压安装包
tar zxvf xxxx.tar.gz -C /opt/elasticsearch
配置elasticsearch
# vim elasticsearch.yml
network.host: 0.0.0.0 #设置ip地址,任意网络均可访问
修改jvm启动参数
#vim conf/jvm.options
-Xms128m #根据自己机器情况修改
-Xmx128m
配置一个进程在VMAs(虚拟内存区域)创建内存映射最大数量
#vim /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p #配置生效
启动与停止
./bin/
vim /etc/yum.repos.d/elasticsearch.repo
加入如下内容
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
yum install --enablerepo=elasticsearch elasticsearch
获取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.8.1
启动
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.8.1
单机版安装
docker-compose.yml
version: '3.2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.8.1
container_name: elasticsearch
restart: always
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- 9200:9200
- 9300:9300
volumes:
- /opt/elastic/config/elasticsearch.yml:/usr/share/elastic/config/elasticsearch.yml
elasticsearch.yml
node.name: node001
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.type: single-node
集群安装
#docker-compose.yml
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.8.1
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.8.1
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.8.1
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
docker-compose.yaml
version: '3.2'
services:
elasticsearch-head:
image: mobz/elasticsearch-head:5 #官方稍有些问题
container_name: elasticsearch-head
restart: always
ports:
- 9100:9100
建议采用我重新制作的镜像