ElasticSearch,Logstash和Kiabana 部署 ELK nginx log

1 篇文章 0 订阅
1 篇文章 0 订阅

ELK由ElasticSearch,Logstash和Kiabana三个开源工具组成。

一,ELK概述

1 ,ELK 简介

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

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

Kibana:也是一个开源和免费的工具, Kibana可以为Logstash 

和  ElasticSearch提供的日志分析友好的Web界面,可以帮助汇总,分析和搜索重要数据日志。

2 ,ELK 协议栈及体系结构

 

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

在需要收集日志的所有服务上部署logstash,Logstash收集应用服务器产生的日志,将日志收集在一起交给全文搜索服务ElasticSearch,而Kibana则从ES集群中查询数据生成图表,再返回给客户端浏览器。

二,ElasticSearch

2.1 ElasticSearch概述

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎,用于设计云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

Elasticsearch是一个实时分布式搜索和分析引擎与数据库对比来说:。现在大部分数据库在提取可用知识方面显得异常无能的确,它们能够通过时间戳或者精确匹配做过滤查询,但是它们不能够进行全文搜索,不能处理同义词,以及根据相关性给文档打分。而Elasticsearch能根据同一份数据生成分析和聚合的结果,最重要的是,它们在没有大量工作进程(线程)的情况下能做到对数据的实时处理。

2.2 ElasticSearch应用场景

互联网的时代,建立一个网站或应用程序,要添加搜索功能,实现站内搜索和站外搜索,但是想要完成搜索工作并保证运行的功能和性能是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台应用,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题以及可能出现的更多其它问题。

关于ElasticSearch,Kibana的部署参考之前二篇文章:

https://blog.csdn.net/lchmyhua88/article/details/88928311

https://blog.csdn.net/lchmyhua88/article/details/103183862

在本文中,主要是讲ELK的使用以及 Logstash的搭建。

先搭建ElasticSearch,Kibana,我这里 用的是:

kibana-7.6.2-linux-x86_64;elasticsearch-7.6.2;elasticsearch-analysis-ik-7.6.2;logstash-7.6.2;

elasticsearch安装ik分词(前面发的2篇文章已经讲过这里不再赘述)。

先看看Logstash的搭建,直接取官网下载7.6.2的tar包,解压后配置即可:

我们把nginxf访问的日志写入到elasticsearch:

nginx.conf 设置访问日志格式:

log_format main '$remote_addr - $remote_user [$time_local] '

                     'fwf[$http_x_forwarded_for] tip[$http_true_client_ip] '

                     '$upstream_addr $upstream_response_time $request_time '

                     '$geoip_country_code '

                     '$http_host $request '

                     '"$status" $body_bytes_sent "$http_referer" '

                     '"$http_accept_language" "$http_user_agent" ';

vhost里面的lch.demo.com.conf配置里面把access_log打开:

接着我们在logstash-7.6.2的目录下面建立一个logstash.conf文件,内容如下:

input {
        file {
                path => "/var/log/nginx/lch.demo.com-error.log"
                type => "system-log"
                start_position => "beginning"
        }
}
output {
        elasticsearch {
                hosts => "127.0.0.1:9200"
                index => "system_log-%{+YYYY.MM.dd}"
        }
}

接着我们要启动logstash:

./bin/logstash -f /htdocs/share/logstash-7.6.2/logstash.conf

可以看到日志已经计入elasticsearch,我们可以查看:

curl -X GET HTTP://127.0.0.1:9200/_cat/indices?v

接着登录Kibana后台,设置刚才的索引:

 

 点下一步设置过滤字段名:选择"@timestamp"

 保存,回到首页打开搜索system_log*可以看到刚才nginx日志的内容,可以搜索日志中的关键字:

可以看到日志已经输出 到 elasticsearch里面了。你还可以将程序写入的各种日志写入redis,然后在写入elasticsearch。

在启动elasticsearch或者logstash的时候,可能会报出下面的错误,内存不足。这个时候需要修改elasticsearch或者logstash的默认jvm.options配置,默认是1G,可以改小一些,当然了,如果电脑配置高就不用。

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 174456832, 0) failed; error='Cannot allocate memory' (errno=12) # # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (mmap) failed to map 174456832 bytes for committing reserved memory.

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值