ELFK介绍
ELK 是 elastic 公司旗下三款产品ElasticSearch、Logstash、Kibana的首字母组合,也即Elastic Stack包含ElasticSearch、Logstash、Kibana、Beats。ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志系统。
ElasticSearch 一个基于 JSON 的分布式的搜索和分析引擎,作为 ELK 的核心,它集中存储数据,
用来搜索、分析、存储日志。它是分布式的,可以横向扩容,可以自动发现,索引自动分片
Logstash 一个动态数据收集管道,支持以 TCP/UDP/HTTP 多种方式收集数据(也可以接受 Beats 传输来的数据),
并对数据做进一步丰富或提取字段处理。用来采集日志,把日志解析为json格式交给ElasticSearch
Kibana 一个数据可视化组件,将收集的数据进行可视化展示(各种报表、图形化数据),并提供配置、管理 ELK 的界面
Beats 一个轻量型日志采集器,单一用途的数据传输平台,可以将多台机器的数据发送到 Logstash 或 ElasticSearch
X-Pack 一个对Elastic Stack提供了安全、警报、监控、报表、图表于一身的扩展包,不过收费
官网:https://www.elastic.co/cn/ ,中文文档:https://elkguide.elasticsearch.cn/
下载elk各组件的旧版本:
https://www.elastic.co/downloads/past-releases
grok正则表达式参考:
https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
当前最新版本:7.10.1
环境准备
环境准备工作请在所有节点上完成。
- 角色划分:
es主节点/es数据节点/kibana/head 192.168.100.132
es主节点/es数据节点/logstash 192.168.100.133
es主节点/es数据节点/filebeat 192.168.100.134
- 关闭防火墙和selinux:
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config && setenforce 0
- 配置系统:
cat >> /etc/security/limits.conf << EOF
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
EOF
[ `grep 'vm.max_map_count' /etc/sysctl.conf |wc -l` -eq 0 ] && echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
sysctl -p
- 安装Java:
mkdir /software && cd /software #将jdk安装包放到 /software 下
tar xf jdk-11.0.9_linux-x64_bin.tar.gz && mv jdk-11.0.9 /usr/local/jdk
vim /etc/profile
JAVA_HOME=/usr/local/jdk
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib
export JAVA_HOME PATH CLASSPATH
source !$
java -version
elastic-head
elastic-head 部署工作请在 head 节点上完成。
- 安装docker:
curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo
yum makecache fast
yum install -y docker-ce
systemctl enable docker && systemctl start docker
- 安装elastic-head:
docker pull mobz/elasticsearch-head:5
docker run -d --name head -p 9100:9100 mobz/elasticsearch-head:5
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0ecb506aeb4 mobz/elasticsearch-head:5 "/bin/sh -c 'grunt s…" 3 seconds ago Up 2 seconds 0.0.0.0:9100->9100/tcp head
访问ip:9100
,
elasticsearch
elasticsearch 集群部署工作请在 es 节点上完成。
- 安装elasticsearch:
rpm -ivh https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-x86_64.rpm
- 修改配置:
vim /etc/elasticsearch/elasticsearch.yml
192.168.30.132
cluster.name: elk #集群名,同一集群必须相同
node.name: elk-132 #指定节点主机名
node.master: true #允许成为主节点
node.data: true #数据节点
path.data: /var/lib/elasticsearch #数据存放路径
path.logs: /var/log/elasticsearch #日志路径
bootstrap.memory_lock: false #关闭锁定内存,设置为true会报错
network.host: 192.168.30.132 #监听ip
http.port: 9200 #http端口
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.30.132", "192.168.30.133", "192.168.30.134"] #master资格节点列表
cluster.initial_master_nodes: ["elk-132", "elk-133", "elk-134"] #集群初始节点列表
discovery.zen.minimum_master_nodes: 2
gateway.recover_after_nodes: 3
http.cors.enabled: true #允许head插件访问es