ElasticSearch第7天 ELK环境的搭建

今日目标

ELK环境的搭建,特别说明一下,我并不是为了学习而学习,而是旨在通过学习某种技术解决某些问题,所以我搭建ELK环境并不会像传统的那样按部就班,而是想要借助 ELK技术和理念 搭建一个自己项目所能用到的日志系统。
今日要完成的目标是可以在laravel项目中使用到ELK日志系统,完成日志的搜集以及分析

ELK搭建

要完成日志系统,需要有以下几个步骤
1.收集日志
2.存储日志
3.日志可视化

1.收集日志

在这一步我们需要完成日志的收集和发送
收集时可以用框架自带的日志记录工具,然后使用Filebeat 采集 Laravel 的本地日志
也可以用第三方比如monolog完成数据的采集和发送
甚至可以让 Laravel 直接将日志写入 Elasticsearch

.env环境变量配置

# 批改日志存在通道
LOG_CHANNEL=elasticsearch
# 增加 elasticsearch 日志存储配置
ELASTIC_HOST=127.0.0.1:9200    # elasticsearch 服务地址
ELASTIC_LOGS_INDEX=shopem-store-es-logs    # elasticsearch 日志存储索引名

增加日志通道

在config/logging.php 文件里的 channels 里增加如下配置

'elasticsearch' => [
            'driver' => 'monolog',
            'level' => 'debug',
            'handler' => \Monolog\Handler\ElasticsearchHandler::class,
            'formatter' => \Monolog\Formatter\ElasticsearchFormatter::class,
            'formatter_with' => [
                'index' => env('ELASTIC_LOGS_INDEX'),
                'type' => '_doc',
            ],
            'handler_with' => [
                'client' => \Elasticsearch\ClientBuilder::create()->setHosts([env('ELASTIC_HOST')])->build(),
            ],
        ],

遇到的问题

按照如上配置,会抛出异常
RuntimeException: Error sending messages to Elasticsearch in file D:\phpstudy_pro\WWW\elasticsearch-php\vendor\monolog\monolog\src\Monolog\Handler\ElasticsearchHandler.php on line 156

具体异常为
mapper_parsing_exception: failed to parse field [context] of type [text] in document with id 'ytJ8v....
应该是插入某些值到es中时类型不匹配,暂时不懂如何处理
所以就先屏蔽了ElasticsearchHandler.php 中的异常抛出

在ES-HEAD中查看

因为还没有安装kibaba,所以先在es-head中查看,可以看到已经存储进去一些日志了


image.png

2.安装kibaba

  • 下载地址 在官网上可以下载到最新版本 https://www.elastic.co
    https://artifacts.elastic.co/downloads/kibana/kibana-7.15.1-windows-x86_64.zip

  • 运行kibaba
    同es一样,在bin目录下运行kibaba.bat即可

  • 访问
    http://localhost:5601/
    在猎豹浏览器下会出现报错,页面一直是 Loading Elastic,通过控制台报错查看应该是js问题

Refused to execute inline script because it violates the following Content Security Policy directive: 
"script-src 'unsafe-eval' 'self'". Either the 'unsafe-inline' keyword, a hash 
('sha256-P5polb1UreUSOe5V/Pv7tc+yeZuJXiOi/3fqhGsU7BE='), or a nonce ('nonce-...') is required to enable 
inline execution.

切换到谷歌浏览器后可以正常访问


image.png
  • 查看kibaba状态 http://localhost:5601/status

    image.png

  • 接下来要做的就是把自己的日志数据或者业务数据与kibaba建立联系,就可以图形化,近实时监控,可视化显示了

总结

这几天先是学习了ES的基本语法,尝试使用了ESapi的CURD,安装了ES-HEAD查看ES存储的内容,然后在项目中通过monolog收集了日志直接写入到ES,安装了kibaba,对ELK的技术架构有了一个简单的了解和认识,但还远远到不到商业使用,本期的简单学习就告一段落了,后期会在项目中尝试使用ES,并一步一步完善其架构

你可能感兴趣的:(ElasticSearch第7天 ELK环境的搭建)