ELK分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
三者之间互相配合使用,完美衔接,高效的满足了很多场合的应用。是目前主流的一种日志系统。
本文示例使用的是docker镜像构建的虚拟环境。此镜像已安装全部所需依赖,使用此镜像无需安装ELK,直接启动运行即可。
镜像详细信息访问点击此处
# 镜像拉取: docker pull henghengg/lnmp:ELK
示例中收集的日志所属项目
ELK下载地址 密码:wen5
安装之后需要先安装java
$ yum install java $ java -version openjdk version "1.8.0_332" OpenJDK Runtime Environment (build 1.8.0_332-b09) OpenJDK 64-Bit Server VM (build 25.332-b09, mixed mode)
解压下载好的压缩包进行安装
$ cd /usr/local/gz_elastic $ tar -zxvf elasticsearch-8.0.0-linux-x86_64.tar.gz $ mv elasticsearch-8.0.0 /usr/local/elk/
注意:不要在root下运行elasticsearch
新建用户赋权限
$ useradd es $ chown -R es /usr/local/elk/
切换用户运行
$ su es $ cd /usr/local/elk/elasticsearch
修改配置文件
vi config/elasticsearch.yml # network.host 改为 0.0.0.0 # http.port 改为 9200 # xpack.security.enabled 改为 false # xpack.security.http.ssl: enabled 改为 false
修改后启动即可无安全限制访问
./bin/elasticsearch
打开浏览器输入http://127.0.0.1:9200/
{ name: "d0d206d4ad9d", cluster_name: "elasticsearch", cluster_uuid: "WUoWDYqlSL23xXSxEIMFYA", version: { number: "8.0.0", build_flavor: "default", build_type: "tar", build_hash: "1b6a7ece17463df5ff54a3e1302d825889aa1161", build_date: "2022-02-03T16:47:57.507843096Z", build_snapshot: false, lucene_version: "9.0.0", minimum_wire_compatibility_version: "7.17.0", minimum_index_compatibility_version: "7.0.0" }, tagline: "You Know, for Search" }
解压下载好的压缩包进行安装
$ cd /usr/local/gz_elastic $ tar -zxvf kibana-8.0.0-linux-x86_64.tar.gz $ mv kibana-8.0.0 /usr/local/elk/ $ cd /usr/local/elk/kibana-8.0.0
修改配置文件
$ vi config/kibana.yml # 修改项如下 server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://127.0.0.1:9200"] i18n.locale: "zh-CN"
启动
同样在es用户下启动,而且必须确定elasticsearch已经启动
./bin/kibana
打开浏览器输入地址:http://192.168.1.3:5601/
解压下载好的压缩包进行安装
$ cd /usr/local/gz_elastic $ tar -zxvf logstash-8.0.0-linux-x86_64.tar.gz $ mv logstash-8.0.0 /usr/local/elk/ $ cd /usr/local/elk/logstash-8.0.0
日志收集配置
$ vi config/logstash.conf # input output可以有多个 input { file { #需要输入的log文件的路径 path => "/www/hyperf/runtime/logs/" start_position => "beginning" #具体的业务需要的名字即可 #type => "" } } filter { grok { match => { "message" => '%{DATESTAMP:time}\s*%{WORD:logName}\s*\[%{USERNAME:faint}\]\s*%{LOGLEVEL:level}\s*%{USERNAME:magenta}\s*%{USER:a}\s*%{GREEDYDATA:data}' } } date { match => [ "time", "yyyy-MM-dd HH:mm:ss.SSS" ] } } output { elasticsearch { hosts => "http://127.0.0.1:9200" index => "hyperf-%{+YYYY.MM.dd}" #document_id => "%{id}" #user => "elastic" #password => "123456" } stdout { codec => rubydebug } }
启动
示例中收集的是/www下一个hyperf项目的日志信息,启动logstash前,可以先启动项目运行,然后启动logstash收集日志
$ ./bin/logstash -f config/logstash.conf --config.reload.automatic
启动成功如下:
日志信息收集:
访问: http://192.168.1.3:5601/app/home#/
找到索引管理->索引模板,然后创建模板,信息如下:
然后在下面kibana选择数据视图,创建视图,输入和logstash.conf中index一样的名称,会自动匹配出已存在的索引,点击创建视图即可。
最后查看
选择对应的视图后,右侧会自动显示索引命中的日志信息。