ELK入门 恶补

ELK是Elasticsearch、Logstash、Kiban

市面上也被成为Elastic Stack (这三个加在一块)

日志分析架构技术栈总称

  1. Elasticsearch

Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。

像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,

简称Elasticsearch为es

  1. Logstash

Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)

  1. Kibana

Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。

  • 流程

通过Logstash去收集每台服务器日志文件,

然后按定义的正则模板过滤后传输到Kafka或redis,

然后由另一个Logstash从KafKa或redis读取日志存储到elasticsearch中创建索引,

最后通过Kibana展示给开发者或运维人员进行分析。

Logstash 收集各种日志,过滤传输到——> Elasticsearch (ES)——>后交给Kinana 分析展示

过滤环节是很耗时间和资源的,过滤完成后才传输到ES中

优化过的流程:

Nginx——>收集——>Logstash——>Kafka

<——消费——>logstash过滤(所有的数据都用这个logstash过滤),传输到——>ES——>展示,分析 ——> Kibana

优化后Kafka作为缓冲存储作用,

运行在数据源的Logstash采集器收集到数据后作为生产者直接传输到Kafka

Kafka它的读写性能是非常高的

我们需要独立部署一个专门消费的Logstash,

这个Logstash负责过滤,并将过滤好的数据传输到ES,

后面依然由Kibana读取ES数据进行展示

这个架构不但性能好,而且耦合低,并且可以针对不同环节进行平行扩展

  • 在新的架构上平行扩展可能演变的架构图:

Nginx——>收集——>Logstash——>Kafka

<——消费——>logstash过滤。

另外一条线也是这样,最后各自logstash过滤过的,传给ES

而:ES,和 kibana,也可以有更多的节点。

小白都会超详细–ELK日志管理平台搭建教程

https://blog.csdn.net/li123128/article/details/81052374

一、介绍

二、安装JDK

三、安装Elasticsearch

四、安装Logstash

五、安装Kibana

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用

kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

  1. 四大组件
    Logstash: logstash server端用来搜集日志;
    Elasticsearch: 存储各类日志;
    Kibana: web化接口用作查寻和可视化日志;
    Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server;

  2. 工作流程

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,

将过滤后的内容发送到Redis,

然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,

可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。

Logstash-forwarder(多个)——》logstash——》elasticsearch——》kibana——》nginx

一、 Elasticsearch安装

配置阿里源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
Logstash的运行依赖于Java运行环境,Elasticsearch 要求至少 Java 7。
[root@controller ~]# yum install java-1.8.0-openjdk -y
[root@controller ~]# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
1、关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2、关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

4)添加自启动
chkconfig --add elasticsearch
5)启动命令
systemctl daemon-reload
systemctl enable elasticsearch.service

防火墙: 关闭
Sellinux: 关闭
JDK 1.8(备注至少是1.8版本的JDK)

https://www.elastic.co/downloads/elasticsearch

sudo chown -R luna elasticsearch-6.1.0/
或者
创建elsearch用户组 及elsearch用户
groupadd elsearch
rch -p elasticsearch

更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch

cd /opt
chown -R elsearch:elsearch  elasticsearch

su elsearch cd elasticsearch/bin
./elasticsearch

1、下载

https://www.elastic.co/downloads/elasticsearch 最新版的在下面找就行

[elk@localhost elasticsearch]$ pwd
/usr/local/src/elasticsearch
[elk@localhost elasticsearch]$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.tar.gz

tar -zxvf elasticsearch-6.4.2.tar.gz

在config目录下的elasticsearch.yml文件中你可以设置es服务的端口号以及网络ip等

network.host:0.0.0.0

切换到bin目录下

./elasticsearch

别用root启动,见上面的

问题一:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方案:
切换到root用户
编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p

问题二:ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]
解决:切换到root用户,编辑limits.conf 添加类似如下内容
vi /etc/security/limits.conf

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

问题三:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
解决:切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf

 soft nproc 1024   修改为:soft nproc 2048

验证:

curl localhost:9200

二、 Logstash的安装

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.2.tar.gz

https://artifacts.elastic.co/downloads/logstash 同理,最新版的在下面找就行

尽量迅雷下载

 tar -zxvf logstash-6.4.2.tar.gz

在config目录下的logstash.yml我这里也都采用的是默认的,大家可以根据自己的需求自行设

 vim logstash.yml

设置tomcat的serer.xml

http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.34/bin/

默认的:

pattern="%h %l %u %t “%r” %s %b"

[elk@localhost conf]$ pwd
/usr/local/src/tomcat/apache-tomcat-8.5.34/conf
[elk@localhost conf]$ vim server.xml

改成:

pattern="%h %l %u %t &quot;%r&quot; %s %b %D &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot;"

创建root-tomcat.conf文件

[elk@localhost logstash-6.4.2]$ pwd
/usr/local/src/elasticsearch/logstash-6.4.2
[elk@localhost logstash-6.4.2]$ vim root-tomcat.conf
input {
    file {  
        path => "/usr/local/src/tomcat/apache-tomcat-8.5.34/logs/localhost_access_log*.txt"  
        sincedb_path => "/usr/local/src/elasticsearch/logstash-6.4.2/config/sincedb_apache_access_log.txt"
        type => "apache_access_log"
        add_field => {"tomcatip" => "192.168.1.23改成localhost"}
    }
}
filter{
    if [type] == "apache_access_log" {
        grok{
            match => { "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{URIPATHPARAM:request}(?: HTTP/%{NUMBER:httpversion})?|-)\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{NUMBER:responsetime} \"(?:%{URI:referrer}|-)\" %{QS:agent}" }
        }
        ruby {
            code => "event.timestamp.time.localtime"
        }
        date{
            match => [ "timestamp", "dd/MM/yyyy:HH:mm:ss Z" ]
            target => ["writetime"]
        }
        mutate {
            convert => { 
                "response" => "integer" 
                "bytes" => "integer" 
                "responsetime" => "integer" 
            }
        }
    }
    
}
output {
    if [type] == "apache_access_log" {
        elasticsearch {
            hosts => ["192.168.1.23改成localhost:9200"]
            index => "logstash-apacheaccesslog-%{+YYYY.MM.dd}"
        }
    }
}

启动:

[elk@localhost logstash-6.4.2]$ ./bin/logstash -f root-tomcat.conf

三、 安装kibana

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.2-linux-x86_64.tar.gz
tar -zxvf kibana-6.4.2-linux-x86_64.tar.gz
cd config/
vim kibana.yml
server.host: "0.0.0.0" 自动检查ip地址,会检查到localhost
 ./bin/kibana
 

http://localhost:5601

https://www.jianshu.com/p/3a1f5ea2ce8d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值