一、ELK概述
ELK 是三个开源软件的缩写,分别表示: Elasticsearch , Logstash , Kibana 。
ELK 通常用来构建日志分析平台、数据分析搜索平台等
官方文档
https://www.elastic.co/cn/products
组件介绍
Elasticsearch 是个开源分布式全文检索和数据分析平台。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,负载均衡等特点。
Kibana 是一个针对Elasticsearch的开源数据分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
Logstash 是一款基于插件的数据收集和处理引擎。Logstash 配有大量的插件,以便人们能够轻松进行配置以在多种不同的架构中收集、处理并转发数据。
Beats 轻量级的数据收集处理工具(Agent),具有占用资源少的优点,适合于在各个服务器上采集数据后传输给Logstash,官方也推荐此工具。Beats有多多种类型,比较常用的是 FileBeats
组件关系图

二、Logstash详解
架构图

- 处理过程可分为一个或多个管道。在每个管道中,会有一个或多个输入插件接收或收集数据,然后这些数据会加入内部队列。默认情况下,这些数据很少并且会存储于内存中,但是为了提高可靠性和弹性,也可进行配置以扩大规模并长期存储在磁盘上。
- 处理线程会以小批量的形式从队列中读取数据,并通过任何配置的过滤插件按顺序进行处理。Logstash 自带大量的插件,能够满足特定类型的操作需要,也就是解析、处理并丰富数据的过程。处理完数据之后,处理线程会将数据发送到对应的输出插件,这些输出插件负责对数据进行格式化并进一步发送数据(例如发送到 Elasticsearch)。
三、基础环境安装
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#修改为开机自动分配网卡
ONBOOT=YES
#或者修改为静态ip
BOOYPROTO=static
ONBOOT=yes
#添加
IPADDR=192.168.47.152(ip地址)
NETMASK=255.255.255.0
GATEWAY=192.168.47.2(虚拟机网段)
DNS1=119.29.29.29
DNS2=182.254.116.116
systemctl restart network
systemctl stop firewalld (centos6 : service iptables stop)
systemctl disable firewalld (centos6 : chkconfig iptables off)
yum install gcc-c++ perl-devel pcre-devel openssl-devel zlib-devel wget
# rpm -ivh jdk-8u181-linux-x64.rpm
配置环境变量(可不用)
# vi /etc/profile
export JAVA_HOME=/usr/java/latest
export CLASSPATH=.
export PATH=$PATH:$JAVA_HOME/bin
更新资源
# source /etc/profile
一台服务器安装nginx
tar -zxvf nginx-1.11.1.tar.gz
./configure --prefix=/usr/local/nginx
make && make install
Filebeat环境搭建 (和nginx 安装在同一台服务器上)
[root@localhost ~]# tar -zxvf filebeat-6.4.0-linux-x86_64.tar.gz -C /usr
[root@localhost ~]# mkdir logs
[root@localhost ~]# vim /usr/filebeat-6.4.0-linux-x86_64/filebeat.yml
让beat取读取nginx的日志文件并且输出给logstash取处理
# Change to true to enable this input configuration.
enabled: true(打开)
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /usr/local/nginx/logs/access*.log(日志文件)
# output.elasticsearch:(关闭)
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
output.logstash:(打开)
# The Logstash hosts
hosts: ["192.168.23.143:5044"](logstash的ip号默认5044端口)
[root@localhost nginx-1.11.1]# cd /usr/local/nginx/
[root@localhost nginx]# sbin/nginx -c conf/nginx.con
上传测试数据(访问nginx生成日志文件)
另一台服务器安装logstash
注意:任何 Logstash 配置都必须至少包括一个输入插件和一个输出插件。过滤插件是可选项。
[root@localhost ~]# tar -zxvf logstash-6.4.0.tar.gz -C /usr
[root@localhost logstash-6.4.0]# cd /usr/logstash-6.4.0/
[root@localhost logstash-6.4.0]# vim config/simple.conf
-
配置文件中利用Grok表达式来转换日志文件为json串
input { beats { port => "5044" } } # 数据过滤 解析 filter { grok { match =>{ "message" => "%{IPORHOST:client_ip} - %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:% {WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:http_referer} %{QS:http_user_agent}" } } geoip { source => "client_ip" } date { match => [ "time" , "dd/MMM/YYYY:HH:mm:ss Z" ] } } # 输出到本机的 ES output { elasticsearch { hosts => [ "192.168.23.143:9200" ] index => "logs-%{+YYYY.MM.dd}" } }
启动测试
保证es集群的服务开启
**保证es集群的服务开启**
启动logstash
[root@localhost logstash-6.4.0]# bin/logstash -r -f config/elk.conf
启动filebeat
[root@localhost filebeat-6.4.0-linux-x86_64]# ./filebeat
数据采集
打开kibana取查看生成的索引

Kibana数据可视化展示



添加视图


添加仪表盘

本文提供了一个ELK(Elasticsearch, Logstash, Kibana)堆栈的快速入门指南。首先介绍了ELK各组件的概览和关系,接着详细讲述了如何在两台服务器上安装和配置Logstash、Filebeat以及Nginx。Logstash处理数据的流程被详细解释,包括输入、过滤和输出插件的工作方式。最后,展示了如何启动服务并使用Kibana进行数据可视化,包括创建视图和仪表板。"
126463479,7520589,Python字典操作详解:查看、修改、添加与删除,"['Python', '数据结构', '字典操作']

3854

被折叠的 条评论
为什么被折叠?



