基于弹性堆栈(ELK堆栈)的日志分析存储及展示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于弹性堆栈(ELK堆栈)的日志分析存储及展示相关的知识,希望对你有一定的参考价值。
ELK简介
“ELK”是三个开源项目的首字母缩写:Elasticsearch,Logstash和Kibana。Elasticsearch是一个搜索和分析引擎。Logstash是一个服务器端数据处理管道,它同时从多个源中提取数据,对其进行转换,然后将其发送到像Elasticsearch这样的“存储”。Kibana允许用户使用Elasticsearch中的图表和图形可视化数据。
ELK原理
在所有需要收集日志的服务上部署logstash,作为logstashagent用于监控并过滤所手机的日志,将过滤后的内容整合在一起,最终全部交给elasticsearch检索引擎;可以用elasticsearch进行自定义搜索,再通过Kibana结合自定义搜索内容生成图标,进行日志展示。
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
ELK基本模型
日志分析存在的困境
- 开发人员不能登录线上服务器查看日志
- 各个系统都有日志,日志分散难以查找
- 日志数据量大,查找慢,数据不够实时
环境准备
关闭防火墙及selinux
虚拟机分配
主机名 | IP地址 | 所用软件 |
---|---|---|
node-1 | 172.16.10.21 | Elasticsearch、logstash、kibana |
node-1 | 172.16.10.29 | Elasticsearch、logstash、kibana |
ES群集的搭建
es群集需要两台虚拟机,一台作为主,一台作为从。两台服务器的软件安装方式都相同,不同之处在于软件的配置文件的修改,但是也是区别不大。
安装es软件
加载gpg验证密钥
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
创建yum仓库
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
安装软件包
yum install elasticsearch -y
yum install java -y
配置es群集
修改配置文件(两台服务器不同的地方会注明)
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: chen //自定义,两台服务器保持一致
node.name: linux-node1 //节点名称两台服务器各不相同
path.data: /data/es-data //自定义,需手动创建,若不创建服务会启动失败
path.logs: /var/log/elasticsearch/ //默认路径,不可更改
bootstrap.memory_lock: true //开启防止交换分区,避免数据丢失
network.host: 0.0.0.0 //允许任意地址监听
http.port: 9200 //开启服务器端口
discovery.zen.ping.unicast.hosts: ["172.16.10.21", "172.16.10.29"]
//识别形式选用单播,host1为本地地址,host2为对方地址,在两一台服务器上地址书写顺序相反
创建文件夹并赋予权限
mkdir -p /data/es-data
chown -R elasticsearch:elasticsearch /data/es-data/ //用户在安装软件时自动创建
系统优化
vim /etc/security/limits.conf //以下内容文件末尾插入即可
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited //普通用户内存解锁
* soft nofile 65535
* hard nofile 65535 //文件限制
启动服务
systemctl start elasticsearch.service
netstat -ntap | grep 9200
加载es插件
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
数据的存储,展示
访问网页
访问网页即可查看到两个服务器,此时两个服务器已经完成了选举,指定了主从服务器
存储数据
使用json格式在网页中添加数据
查询数据
数据删除
数据索引分片
数据的索引会自动创建5个分片,单击概览即可看到
配置logstash
数据通常以多种格式分散在许多系统中。Logstash支持各种输入,这些输入同时从众多公共源中提取事件。通过连续的流媒体方式轻松从日志,指标,Web应用程序,数据存储和各种AWS服务中提取数据。实验中并不是两台服务器都需要安装该软件,当你需要分析某个服务器中的日志文件时,即可安装。
配置yum源
vim /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
安装软件
yum install logstash -y
收集系统日志
创建配置文件
vim file.conf //文件位置自定义,演示是在/目录下创建
input {
file {
path => "/var/log/messages" //路径为系统日志存放路径
type => "system" //类型自定义
start_position => "beginning" //从头开始获取
}
}
output {
elasticsearch {
hosts => ["172.16.10.21:9200"]
index => "system-%{+YYYY.MM.dd}" //年月日固定格式
}
}
开启收集
ln -s /opt/logstash/bin/logstash /usr/bin/
logstash -f /root/file.conf
网页查看数据
部署kibana
软件安装
wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
tar zxvf kibana-4.3.1-linux-x64.tar.gz -C /opt/
mv /opt/kibana-4.3.1-linux-x64/ /usr/local/kibana
配置文件修改
vim /usr/local/kibana/config/kibana.yml
server.port: 5601 //开启端口
server.host: "0.0.0.0"
elasticsearch.url: "http://172.16.10.21:9200" //此处为es地址
kibana.index: ".kibana"
启动监听
screen //启用分屏,若是没有该命令,则使用yum安装
/usr/local/kibana/bin/kibana //启用监听
ctrl+a+d //放入后台执行
访问网站、创建索引
查看数据
以上是关于基于弹性堆栈(ELK堆栈)的日志分析存储及展示的主要内容,如果未能解决你的问题,请参考以下文章
ini 使用ELK堆栈(Elasticsearch + Logstash + Kibana)进行脱机SSHD日志分析
在 Kubernetes 中运行 ELK 堆栈的 Filebeat 不会在日志中捕获 pod 名称