文章目录
ELKB简介
ELKB(Elasticsearch、Logstash、Kibana、Beat的组合)是一套开源的分布式日志管理方案。凭借其闭环的日志处理流程、高效的检索性能、线性的扩展能力、较低的运维成本等特点,ELKB在最近几年迅速崛起,成为实时日志处理开源领域的首要选择。(https://cloud.tencent.com/developer/article/1143430)
详细资料可参考官网https://www.elastic.co/cn/start,本文不再赘述。
ELKB架构
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
Beats是ELK 协议栈的新成员,一个轻量级开源数据搜集器架构,基于 Logstash-Forwarder 源代码开发,是对它的替代。beats 就能读取数据,迅速发送到 Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储和分析。
ELKB安装
准备工作
Linux机器安装好JAVA 1.8,Node.js
下载安装包
# 安装ELKB7.6.2
cd /opt/soft
# 下载es
wget https://mirrors.huaweicloud.com/elasticsearch/7.6.2/elasticsearch-7.6.2-linux-x86_64.tar.gz
# 下载logstash
wget https://mirrors.huaweicloud.com/logstash/7.6.2/logstash-7.6.2.tar.gz
# 下载kibana
wget https://mirrors.huaweicloud.com/kibana/7.6.2/kibana-7.6.2-linux-x86_64.tar.gz
# 下载filebeat
wget https://mirrors.huaweicloud.com/filebeat/7.6.2/filebeat-7.6.2-linux-x86_64.tar.gz
解压至/usr/local/elk
mkdir -p /usr/local/elk/
cd /opt/soft
# 解压es
tar -zxvf elasticsearch-7.6.2-linux-x86_64.tar.gz -C /usr/local/elk/
# 解压logstash
tar -zxvf logstash-7.6.2.tar.gz -C /usr/local/elk/
# 解压kibana
tar -zxvf kibana-7.6.2-linux-x86_64.tar.gz -C /usr/local/elk/
# 解压filebeat
tar zxvf filebeat-7.6.2-linux-x86_64.tar.gz -C /usr/local/elk/
设置访问用户
由于不能使用root用户运行,在root登录状态下新建elk用户
groupadd elk
useradd elk -g elk
passwd elkb
cd /usr/local/elk/
chown -R elk:elk elasticsearch-7.6.2
chown -R elk:elk kibana-7.6.2-linux-x86_64
chown -R elk:elk logstash-7.6.2
# 这里filebeat没有变更用户,不太需要
ELKB配置及启动
安装完成后就可以先启动Elasticsearch
Elasticsearch
现在elasticsearch-7.6.2下建立data文件夹并修改权限,再进行相应配置就可以启动了,这里以单机为例,集群配置请自行查阅。
cd /usr/local/elk/elasticsearch-7.6.2
mkdir data
chown -R elk:elk data
配置
cd config
vim elasticsearch.yml
修改elasticsearch.yml为下面内容:
cluster.name: elasticsearch
node.name: es-node0
path.data: /usr/local/elk/elasticsearch-7.6.2/data
path.logs: /usr/local/elk/elasticsearch-7.6.2/logs
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["es-node0"]
修改jvm.options文件,其他配置不变,查看-Xms和-Xmx配置,这里默认是1g,我修改为2g。(之前调整过128m,马上会把ES内存撑爆…)
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms2g
-Xmx2g
...
启动
这里注意切换到elk用户才可以启动
su - elk
cd /usr/local/elk/elasticsearch-7.6.2/
./bin/elasticsearch
第一次启动可能会报错
vi /etc/security/limits.conf
# 添加如下设置
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
# centos 7 为 20-nproc.conf centos 6 为 90-nproc.conf
vi /etc/security/limits.d/20-nproc.conf
#修改为
* soft nproc 4096
vi /etc/sysctl.conf
# 添加下面配置:
vm.max_map_count=655360
# 让内核参数生效
sysctl -p
重新启动即可。
./bin/elasticsearch
查看Elasticsearch健康状态,再新建一个终端窗口运行
curl http://localhost:9200/_cluster/health?pretty
我的status是yellow,因为测试时里面有很多空索引。详细信息可参考ElasticSearch 索引查询使用指南——详细版。
其他elasticsearch-head插件用法等可自行查阅,不是本文重点。
时间久了,日志文件过多占用空间,需要清理,命令如下:
清理2018年4月12号的日志
curl -XDELETE ‘http://192.168.10.8:9200/nginx-log-2018.04.12’
清理2018年4月的日志
curl -XDELETE ‘http://192.168.10.8:9200/nginx-log-2018.04.*’
清除所有索引日志
curl -XDELETE ‘http://192.168.10.8:9200/*’
如果清理了所有的索引日志,kibana里面没有了索引,无法查看日志,重启logstash服务即可自动生成当天的日志索引。
Kibana
配置
配置config下的kibana.yml
# kibana.yml
server.port: 5601
server.host: "192.168.x.x"
elasticsearch.hosts: ["http://192.168.x.x:9200"]
kibana.index: ".kibana"
启动
启动前提是启动了Elasticsearch
前台终端启动(用于测试)
./bin/kibana
这个启动要点时间,需要等一分钟。启动后浏览器访问:
http://192.168.50.109:5601
后续配置了logstash就可以查看日志了。
后台启动
nohup ./bin/kibana &
点击Console,这里有个工具推荐Grok Debugger,可以用来调试Grok Pattern,用于后续Logstash解析日志。
报错
Error: [no_shard_available_action_exception] No shard available for [get [.kibana][_doc][config:7.6.
elasticsearch 报错 NoShardAvailableActionException: No shard available for routing [null]]
https://blog.csdn.net/zhangzc12409/article/details/114292727
参考资料
ELKB 7.X 日志系统搭建
Kibana(一张图片胜过千万行日志)
ES系列十八、FileBeat发送日志到logstash、ES、多个output过滤配置
Logstash常用配置和日志解析
Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台
filebeat收集日志传输到Redis集群,logstash从Redis集群中拉取数据
使用filebeat收集不同用应用的日志传输到redis,并加以区分
elkb+redis建立日志收集分析系统
Nginx module
Filebeat7.6.1安装使用总结
elk+filebeat的安装并分析nginx日志
Filebeat——grok字段(解析自定义的nginx日志)
ELK7.4+filebeat+Redis分析nginx服务访问日志
日志分析平台ELKB建设的3个演进架构
一篇文章搞懂filebeat(ELK)
ELK架构
Logstash使用grok过滤nginx日志(二)
Grok解析 centos 的 nginx 原生格式日志