编辑推荐: |
本文主要对ELK的组件和组件关系图进行介绍,其次对基础环境安装配置再到测试以及数据化得展示,希望对您的学习有所帮助。
本文来自于CSDN,由火龙果软件Alice编辑、推荐。 |
|
一、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) |
安装gcc和wget
yum install gcc-c++
perl-devel pcre-devel openssl-devel zlib-devel
wget |
安装jdk
# 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
解压nginx
tar -zxvf nginx-1.11.1.tar.gz |
安装nginx到指定路径
./configure --prefix=/usr/local/nginx |
编译安装
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端口) |
到nginx安装目录启动nginx
[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集群的服务开启
启动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数据可视化展示
添加视图
添加仪表盘
|