ELK在日志分析行业的优缺点是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK在日志分析行业的优缺点是啥?相关的知识,希望对你有一定的参考价值。
日志分析领域有关ELK产品的探讨、争议也是非常多的。zd|先说ELK在日志分析的优:
1. 强大的搜索功能,elasticsearch可以以分布式搜索的方式快速检索,而且支持DSL的语法来进行搜索,简单的说,就是通过类似配置的语言,快速筛选数据。
2. 完美的展示功能,可以展示非常详细的图表信息,而且可以定制展示内容,将数据可视化发挥的淋漓尽致。
3. 分布式功能,能够解决大型集群运维工作很多问题,包括监控、预警、日志收集解析等。
再说说缺点:
尽管研究一段时间,可以实现部署、测试。但对于中大型企业来说,功能点:告警、权限管理、关联分析等还是差之千里。团队支出需要多少成本,技术人才、时间的投入。
ELK产品需要部署多个产品。ELK指的是多个产品。
推荐一下日志分析领域日志易——可视化的海量日志(实时)搜索分析引擎。目前已经服务上百家大型企业,产品的优点呢是:实时、海量、智能运维、关联分析、权限管理、告警等;可以集群化部署!
缺点也有:收费 ,提供SaaS版的免费体验500MB/天 参考技术A 分布式采集分析可以减轻服务器压力,对于大型机房每天海量的日志信息来说分布式部署可以更高效的对日志进行采集分析,你百度一下 《logsys日志管理系统》,这是一款免费的日志管理工具,安装简单,下一步下一步就行了。可以装一个虚拟机试试。注意装的时候可选择集中部署和分布式部署!
Linux运维番外篇 高效且清晰的日志分析系统--ELK日志系统
文章目录
一、ELK日志分析系统的概念
组成
elk系统由三部分组成
Elasticsearch:提供了一个分布式多用户能力的全文搜索引擎
Logstash:一款强大的数据处理工具
Kibana:针对Elasticsearch的开源分析及可视化平台
优缺点
优点
提高安全性
集中化管理
缺点
日志分析困难
日志的处理过程
将日志进行集中化管理(beats)其中包含四个服务
Packetbeat(搜集网络流量数据)
Topbeat(搜集系统、进程和文件系统级别的CPU和内存使用情况等数据)
Filebeat(搜集文件数据)
Winlogbeat(搜集Windows事件日志数据)
将日志格式化(Logstash)并输出到Elasticsearch
对格式化后的数据进行索引和存储(Elasticsearch)
前端数据的展示(Kibana)
二、ELK组件和各自的特性
1.Elasticsearch五个特性
接近实时
Elasticsearch在文件搜索上速度接近实时 用索引来搜索一个文件大约只有1秒的延迟 类似于一个数据库
集群
集群由一个或者多个节点组成 所有从beast收集数据都汇总在这里 并提供索引和搜索功能
有一个主节点 通过选取产生 可以跨节点来联合搜索和索引
集群名是一个唯一的标识符 默认是Elasticsearch,节点通过不同的主机名加入集群 不同的环境要使用不同的集群名
在集群中每个节点有不同的主机民 通过不同的主机名来区分 不可以有相同的主机名 主机名在集群中为节点的唯一身份标识
节点
单台服务器组成一个节点 用来存储数据并提供索引的检索 节点也是通过主机名来进行标识 不可以重复,默认是在节点启动时随机分配的字符名。也可自己定义 名字对应节点
节点通过指定集群名来加入集群 如果集群名为默认的 在几个节点搭建成后 可以发现对方的时候 可以自行搭建集群
索引
用来检索数据 一个索引可以找到若干个数据
索引名由小写字母组成 在对一个特定的数据进行索引时需要用这个索引来搜索
文档
存储数据的基本单位 可以被索引检索到
在一个index和type中 可以创建任意个文档来存数据 位置位于一个索引的物理位置上 要分配一个类型 这样才可以被索引
分片和副本
实际情况下,索引存储的数据可能超过单个节点的硬件限制。为了解决这个问题,Elasticsearch提供将索引分成多个分片的功能。当在创建索引时,可以定义想要的分片数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。
分片的主要原因:
水平分割扩展,增大存储量
分布式并跨越分片操作,提高性能和吞吐量
分布式分片机制和搜索请求的文档如何火鬃完全是由Elasticsearch控制的,这些对用户是完全透明的。
为了健壮性,建议有一个故障切换机制,为此,Elasticsearch让我们将索引分片复制一份或多份,称之为分片副本
分片副本的原因:
高可用性,以应对分片或者节点故障。处于这个原因,分片副本要在不同的节点上
增大吞吐量,搜索可以并行在所有副本上执行
总之,每个索引可以被分成多个分片。一个索引可以被复制0次或者多次。一旦复制了,每个索引就有了主分片 (作为复制源的原来的分片)和复制分片(主分片的拷贝)之别。分片和副本的数量可以在索引创建的时候指定。在索引创建之后,你可以在指定任何时候动态的改变副本的数量,但是你事后不能改变分片的数量。
默认情况下,Elasticsearch中的每个索引被分片5个主分片和1个副本,这意味着,如果你的集群中至少有两个节点,你的索引将会有5个主分片和另外的5个副本分片(一个完全拷贝),这样的话每个索引总共有10个分片。
和数据库的类似概念
Elasticsearch和数据库中的一些概念有些类似
2 Logstash
Logstash由JRuby语言编写,基于meassage-based架构,运行在jvm虚拟机上,Logstash可配置单一的代理端与其他开源软件结合,以实现不同的功能。
插件
input:收集源数据(访问日志、错误日志等)
Filter Plugin:用于过滤日志和格式处理
Output:输出日志
主要组件
Shipper(日志收集):负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可
Indexer(日志存储):负责接收日志并写入到本地文件
Broker(日志Hub):负责连接多个Shipper和多个Indexer
Search and Storage:允许对事件进行搜索和存储
Web Interface:基于Web的展示界面
主机分类
代理主机是将从beats收集的数据发送至中心服务器处理 只需要运行代理程序
中心主机可运行包括中间转发器(Broker)、索引器(Indexer)、搜索和存储器(Search and Storage)、Web界面端(Web Interface)在内的各个组件,以实现对日志数据的接收、处理和存储
3 kibana
一款可以将Elasticsearch数据进行可视化操作的工具 用浏览器进行查看软件
主要特点
与Elasticsearch无缝衔接
整合数据
对复杂的数据进行分析
可以让各个成员得到数据
api灵活 可以进行分享
配置简单
对数据进行可视化操作
数据的导出和导入
三 部署ELK系统
架构图
2台节点都要执行以下操作
systemctl stop firewalld 关闭防火墙
setenforce 0
#修改各个节点的主机名
hostnamectl set-hostname node1
su -
hostnamectl set-hostname node2
su -
hostnamectl set-hostname web
su -
#安装jdk环境
yum -y install java-1.8.0-openjdk*
#映射主机地址
echo '192.168.30.6 node1' >> /etc/hosts
echo '192.168.30.20 node2' >> /etc/hosts
#安装elasticsearch包
rpm -ivh elasticsearch-5.5.0.rpm
systemctl daemon-reload
systemctl enable elasticsearch.service
#配置
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml 修改配置文件
grep -v "^#" /etc/elasticsearch/elasticsearch.yml 查看已经修改的项
mkdir -p /data/elk_data 递归创建文件夹
chown elasticsearch:elasticsearch /data/elk_data/ 修改文件属主和属组
systemctl start elasticsearch 开启服务
netstat -antp |grep 9200 检测端口 要等20秒左右
检查节点
浏览器检查节点 检查节点状态和健康状态
192.168.30.6:9200
192.168.30.20:9200
http://192.168.30.6:9200/_cluster/health?pretty
http://192.168.30.20:9200/_cluster/health?pretty
http://192.168.30.6:9200/_cluster/state?pretty
http://192.168.30.20:9200/_cluster/state?pretty
安装 elasticsearch-head 插件
yum -y install gcc gcc-c++ make
cd /opt/elk
tar xzvf node-v8.2.1.tar.gz -C /opt
cd /opt/node-v8.2.1/
./configure
make -j3 && make install
cd /usr/local/src/
tar xzvf elasticsearch-head.tar.gz
cd elasticsearch-head/
npm install
vi /etc/elasticsearch/elasticsearch.yml
==末行插入==
http.cors.enabled: true #开启跨域访问支持,默认false
http.cors.allow-origin: "*" #跨域访问允许的域名地址
systemctl restart elasticsearch
cd /usr/local/src/elasticsearch-head/
npm run start & #切换到后台运行
netstat -lnupt |grep 9100
netstat -lnupt |grep 9200
#windows验证
http://192.168.184.10:9100
http://192.168.184.20:9100
群集为绿色
#node1建立索引,类型为test
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"ljm","mesg":"If you want to succeed, depend on yourself"}'
安装 logstash (提供web服务那台)
将日志输入到elasticsearch中去
cd /opt
#将软件包传至本目录下
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service
systemctl enable logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
#建立软连接,方便系统识别
#做对接测试 logstash(Apache)与 elasticsearch(node)功能是否正常
Logstash [选项] [对象]
-f:通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
-e:后面跟着字符串 该字符串可以被当做logstash的配置(如果是" ",则默认使用stdin作为输入、stdout作为输出)
-t:测试配置文件是否正确,然后退出
输入采用标准输入,输出采用标准输出
logstash -e 'input { stdin{} } output { stdout{} }'
www.baidu.com #输入内容
www.sina.com。cn #输入内容
#使用 rubydebug 显示详细输出,codec 为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
www.baidu.com #输入内容
www.sina.com.cn #输入内容
#使用logstash将信息写入elasticsearch输入,输出 对接
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.0.10:9200"] } }'
使用宿主机浏览 http://192.168.0.10:9100/ ,查看索引信息
使用宿主机浏览 http://192.168.0.20:9100/ ,查看索引信息
和kibana对接api
chmod o+r /var/log/messages
ll /var/log/messages
配置文件中定义的是收集系统日志(system)
vim /etc/logstash/conf.d/system.conf
input {
file{
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.30.6:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
systemctl restart logstash.service
测试登录192.168.0.10:9100,连接192.168.0.10:9200 查看是否有system的索引
安装kibana
cd /usr/local/src/
#将软件包传至本目录下
rpm -ivh kibana-5.5.1-x86_64.rpm
cd /etc/kibana/
cp kibana.yml kibana.yml.bak
vim kibana.yml
//2行 server.port: 5601 #kibana打开的端口
//7行 server.host: "0.0.0.0" #kibana侦听的地址
//21行 elasticsearch.url: "http://192.168.30.6:9200" #和elasticsearch建立联系
//30行 kibana.index: ".kibana" #在elasticsearch中添加.kibana索引
systemctl start kibana.service
systemctl enable kibana.service
对接HTTP日志
Apache(192.168.0.30):
cd /etc/logstash/conf.d/
touch apache_log.conf
vim apache_log.conf
input {
file{
path => "/etc/httpd/logs/access_log"
type => "access"
start_position => "beginning"
}
file{
path => "/etc/httpd/logs/error_log"
type => "error"
start_position => "beginning"
}
}
output {
if [type] == "access" {
elasticsearch {
hosts => ["192.168.30.6:9200"]
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.0.10:9200"]
index => "apache_error-%{+YYYY.MM.dd}"
}
}
}
# 指定文件测试
/usr/share/logstash/bin/logstash -f apache_log.conf
以上是关于ELK在日志分析行业的优缺点是啥?的主要内容,如果未能解决你的问题,请参考以下文章