当前位置:   article > 正文

ELK基础(1) -- 安装与配置_elkjs

elkjs

简介

什么是ELK?

ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,ElasticsearchLogstashKibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为ELK协议栈

  • Elasticsearch:是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene基础上的搜索引擎,使用Java语言编写
  • Logstash:是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写。其作者是世界著名的运维工程师乔丹西塞 (JordanSissel)
  • Kibana:是一款基于 Apache开源协议,使用 JavaScript语言编写,为 Elasticsearch提供分析和可视化的 Web 平台。它可以在Elasticsearch的索引中查找,交互数据,并生成各种维度的表图

简单来说,Logstash用来收集数据,Elasticsearch用来查数据,Kibana用来展示数据
顺便说一下,由于Logstash消耗的资源太多了并且以来Java环境,实际场景中已经很少把Logstash部署到所有边缘级用来收集数据了,而是使用Beats的软件来收集实时数据后传给Logstash做数据再处理,如下图:
在这里插入图片描述
其中,Beats 是Elastic公司开发的轻量型数据采集器 ,相比约LogstashBeats在运行过程中几乎不消耗资源。Beats不是一个数据采集器,而是一个系列的采集器,包含:

FileBeat:日志文件(收集文件数据)
AuditBeat:审计数据(收集审计日志)
PacketBeats:网络数据(收集网络流量数据)
HeartBeat:运行时间监控(收集系统运行时的数据)
WinlogBeat:windows事件日志(收集Windows事件日志数据)
MetricBeat:指标(收集系统、进程和文件系统级别的CPU和内存使用情况等数据)
FunctionBeat:面向云端数据的无服务器采集器(部署在云服务提供商的功能即服务 (FaaS) 平台上后,收集、传送并监测云服务的相关数据)
【官网:https://www.elastic.co/cn/beats/

一、安装

注明:以下操作都是基于Centos8系统环境

官网下载地址
	kafka:http://kafka.apache.org/downloads
	kibana:https://www.elastic.co/cn/downloads/past-releases#kibana
	filebeat:https://www.elastic.co/cn/downloads/past-releases#filebeat
	logstash:https://www.elastic.co/cn/downloads/past-releases#logstash
	elasticsearch:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
	jdk1.8:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

安装JDK

下载解压
tar xzvf jdk-8u271-linux-x64.tar.gz -C /usr/local/
配置环境变量
vim /etc/profile
    export JAVA_HOME=/usr/local/jdk1.8
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
刷新配置立即生效
source /etc/profile
查看版本
java -version
    java version "1.8.0_271"
    Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
    Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

安装ELK组件

安装Filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.9.3-linux-x86_64.tar.gz
tar xzvf filebeat-7.9.3-linux-x86_64.tar.gz
mv filebeat-7.9.3-linux-x86_64.tar.gz/ /usr/local/filebeat

安装Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.9.3.tar.gz
tar xzvf logstash-7.9.3.tar.gz
mv logstash-7.9.3.tar.gz/ /usr/local/logstash

安装ElasticSearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-linux-x86_64.tar.gz
tar xzvf elasticsearch-7.9.3-linux-x86_64.tar.gz
mv elasticsearch-7.9.3-linux-x86_64.tar.gz/ /usr/local/elasticsearch

安装Kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.9.3-linux-x86_64.tar.gz
tar xzvf kibana-7.9.3-linux-x86_64.tar.gz
mv kibana-7.9.3-linux-x86_64.tar.gz/ /usr/local/kibana

安装Kafka
wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.6.0/kafka_2.13-2.6.0.tgz
tar xzvf kafka_2.13-2.6.0.tgz
mv kafka_2.13-2.6.0.tgz/ /usr/local/kafka
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

二、配置

创建用户并设置权限(ELK组件不能在root用户下运行,必须新建用户)
以下配置操作都在elk用户下进行

groupadd elk
useradd elk -g elk
chown -R elk:elk /usr/local/elasticsearch/
chown -R elk:elk /usr/local/kibana/
chown -R elk:elk /usr/local/logstash/
chown -R elk:elk /usr/local/kafka/
chown -R elk:elk /usr/local/filebeat/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

1) ES配置

修改ES配置文件(/usr/local/elasticsearch/config/elasticsearch.yml)

# 集群名
cluster.name: elk
# 节点名
node.name: node-1
# 存储数据
path.data: /data/elk/data
# 存放日志
path.logs: /data/elk/logs
# 锁内存,尽量不使用交换内存
bootstrap.memory_lock: true
# 网络地址
network.host: 0.0.0.0
http.port: 9200
# 发现集群hosts
discovery.seed_hosts: ["host1", "host2"]
# 设置集群master节点,配置内容为master的node.name
cluster.initial_master_nodes: ["node-1"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

修改系统配置(/etc/sysctl.conf)

echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p

echo "* hard memlock unlimited" >> /etc/security/limits.conf
echo "* soft memlock unlimited" >> /etc/security/limits.conf
修改配置后退出当前用户重新进入才能生效
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

启动

/usr/local/elasticsearch/bin/elasticsearch -d # -d 后台运行

测试
$ curl "http://127.0.0.1:9200"
{
  "name" : "node-1",
  "cluster_name" : "cluster-1",
  "cluster_uuid" : "IUDI*********tRa6w",
  "version" : {
    "number" : "7.9.3",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "c2138*********06fe5c868",
    "build_date" : "2020-10-16T10:36:16.131335Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

ES官网配置说明

2) kibana配置

修改Kibana配置文件(/usr/local/kibana/config/kibana.yml)

vim /usr/local/elasticsearch/config/elasticsearch.yml

server.port: 5601  # port
server.host: 0.0.0.0 # 访问限制
elasticsearch.hosts: ["http://localhost:9200"] # elasticsearch 访问地址
i18n.locale: "zh-CN" # 中文
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

启动/停止

启动
./bin/kibana # 启动成功后尝试访问  http://192.168.18.128:5601

停止
kill -s 9 $pid # pid可以用 netstat -talnp | grep 5601 查找
  • 1
  • 2
  • 3
  • 4
  • 5

Kibana官网配置说明

3) Logstash配置

新增配置文件(/usr/local/logstash/first-pipelines.yml)

cat /usr/local/logstash/first-pipelines.yml

# The # character at the beginning of a line indicates a comment. Use
# comments to describe your configuration.
input {
    beats { # Logstash对filebeat开放,用来接受日志的端口
        port => "5044"
    }
}
# The filter part of this file is commented out to indicate that it is
# optional.
filter {
    grok {
    	# grok是Logstash内置的 基于正则表达式的 用于解析传入日志的插件,目前支持120+种解析方式,详见下面连接
    	# https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
        match => { "message" => "%{HTTPD_COMBINEDLOG }"} # HTTPD_COMBINEDLOG是内置解析web日志的捕获规则,详见 https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/httpd
    }
}

output {
    elasticsearch { 
        hosts => [ "localhost:9200" ] # 解析后日志传给ES
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

启动

cd /usr/local/logstash

测试配置
./bin/logstash -f first-pipelines.yml --config.test_and_exit
启动服务
./bin/logstash -f first-pipeline.conf --config.reload.automatic # 配置修改后自动加载
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Logstash官方配置说明

4) filebeat配置

和上面的几个软件不同的是,filebeat不是部署在中心,而是部署在需要收集日志的服务器上

vim /usr/local/filebeat/filebeat.yml

filebeat.inputs:  # 设置日志收集的对象
- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/access.log # 日志文件位置
    
output.logstash:
  hosts: ["$host:5044"] # $host替换成Logstash 服务器/集群 的 ip/域名
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

filebeat收集日志后不仅可以给Logstash还可以给kafka或ES
此外,filebeat在收集日志方面也内置了多个模块,详见/usr/local/filebeat/modules.d/目录
例如要收集nginx日志还可以这样配置

修改配置文件
vim /usr/local/filebeat/modules.d/nginx.yml.disabled 

- module: nginx
  access:
    enabled: true
    var.paths:
        - /tmp/access.log

去掉disabled后缀,让filebeat能读到这个配置
mv /usr/local/filebeat/modules.d/nginx.yml.disabled /usr/local/filebeat/modules.d/nginx.yml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

启动

/usr/local/filebeat/filebeat -e -c filebeat.yml

另:data/registry/是filebeat传输记录点,删除该文件后重启filebeat会重新传输日志
rm /usr/local/filebeat/data/registry/ -rf 
  • 1
  • 2
  • 3
  • 4

filebeat官网说明

三、运行结果

上面部署成功之后,登录Kibana查看上传的数据,http://127.0.0.1:5601/app/management/data/index_management/indices
在这里插入图片描述
最后
这是个人第一次学习ELK时的学习记录,因此没有太多原理和高级配置,只求跑通整个流程
另外
如果你是外网的服务器想访问内网的虚拟机或本地服务,可以试试 ngrok 这个软件

参考:
https://zhuanlan.zhihu.com/p/121099453

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/321244
推荐阅读
相关标签
  

闽ICP备14008679号