框架 | 简介 | 作用 |
---|---|---|
Elasticsearch | 开源分布式搜索引擎,提供存储、分析、搜索功能。特点:分布式、基于reasful风格、支持海量高并发的准实时搜索场景、稳定、可靠、快速、使用方便等。 | 接收搜集的海量结构化日志数据,并提供给kibana查询分析 |
Kibana | 开源日志报表系统,对elasticsearch以及logstash有良好的web页面支持 | 对elasticsearch提供的数据进行分析展示 |
Logstash | 开源日志搜集、分析、过滤框架,支持多种数据输入输出方式。 | 用于收集日志,对日志进行过滤形成结构化数据,并转发到elasticsearch中 |
ELK经典应用如下
由于Logstash消耗资源大,而服务器资源相当宝贵,所以引进另一个轻量级日志采集框架Beats
传统web项目中,经常使用log4j以及logback(性能更高)等成熟日志插件进行日志的记录
日志采集新增Logback直接发送日志到Logstash的形式。如果采用此方式,web服务可减少部分生成log文件配置,提高实时性和日志推送效率
高并发场景
由于logstash消耗性能,所以高并发场景容易遇到流量上的瓶颈,及时使用logstash集群也是如此,所以可以添加中间件进行日志缓存处理。由于logstash数据源具有多种方式,所有中间件也可以很多选择,常见的有kafka,redis
-
logback出现的业务数据可以通过写入redis或者kafka等中间件进行缓存,再通过合理限制流量阀值输送至logstash进行过滤
-
beats 如果是filebeat其日志若无实时性要求,可以通过控制log文件更新速度限制Beats传输日志流量
一. Elasticsearch
Elasticsearch不能使用root用户来启动,必须使用普通用户来安装启动 【可修改配置允许root操作 -不建议】
# 使用root用户在服务器执行以下命令
1.创建 elasticsearch 用户组
groupadd elasticsearch
2.创建用户 aaa并设置密码
useradd aaa
passwd aaa
输入密码
3.创建目录
mkdir /opt/soft/elasticsearch
4.修改文件所属人
usermod ‐G elasticsearch aaa
chown -R aaa /opt/soft/elasticsearch/elasticsearch‐111111
5.设置sudo权限
#为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的
操作
visudo
#在root ALL=(ALL) ALL 一行下面添加
aaaa ALL=(ALL) ALL
su aaaa
6.解压
tar ‐zvxf elasticsearch‐111111‐linux‐x86_64.tar.gz ‐C /opt/soft/elasticsearch/
7.修改elasticsearch.yml
cd /opt/soft/elasticsearch/elasticsearch‐111111/config
mkdir /opt/soft/elasticsearch/elasticsearch‐111111/log
mkdir /opt/soft/elasticsearch/elasticsearch‐111111/data
vim elasticsearch.yml
cluster.name: aaa‐es node.name: node1 path.data: /opt/soft/elasticsearch/elasticsearch‐111111/data path.logs: /opt/soft/elasticsearch/elasticsearch‐111111/log network.host: 0.0.0.0 http.port: 9200 discovery.seed_hosts: ["服务器IP"] cluster.initial_master_nodes: ["节点名"] bootstrap.system_call_filter: false bootstrap.memory_lock: false http.cors.enabled: true 是否支持跨域,默认为false http.cors.allow‐origin: "*"当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/ |
vim jvm.options
‐Xms2g
‐Xmx2g
问题错误信息描述:
max file descriptors [4096] for elasticsearch process likely too low,
increase to at least [65536]
ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除
linux系统当中打开文件最大数目的限制,不然ES启动就会抛错
sudo vi /etc/security/limits.conf
添加如下内容: 注意*不要去掉了
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
修改系统配置文件
vi /etc/sysctl.conf
行末加上vm.max_map_count = 655360
保存后,执行:sysctl ‐p
启动
cd /opt/soft/elasticsearch/elasticsearch‐111111/bin
切换为 csindex用户
nohup /opt/soft/elasticsearch/elasticsearch‐7.6.1/bin/elasticsearch 2>&1 &
验证
浏览器 ip+端口 100.10.0.60:9200
二、客户端Kibana
tar -zxvf kibana-X.X.X-linux-x86_64.tar.gz -C /opt/soft/elasticsearch
进入 /opt/soft/elasticsearch/kibana-X.X.X-linux-x86_64/config目录
vi kibana.yml
server.port: 5601
server.host: 0.0.0.0
elasticsearch.hosts: ["http://IP:9200"] #这里是elasticsearch的访问地址
server.publicBaseUrl: "http://100.10.10.60:5601" 外部访问kibana的地址
启动Kibana
nohup /opt/soft/elasticsearch/kibana-X.X.X-linux-x86_64/bin/kibana 2>&1 &
访问Kibana
左边 discover 查看
三.Logstash
tar -zxvf logstash-X.X.X-linux-x86_64.tar.gz -C /opt/soft/elasticsearch
vi /opt/soft/elasticsearch/logstash-x.x.x/config/logback-es.conf
input {
tcp {
port => 9601
codec => json_lines
}
file{
path => "/tmp/*_log"
start_position => "beginning"
}
beats { port => 5044 #要监听的端口 }
}
filter {
mutate { rename => { "[host][name]" => "host" } }##数据处理
}
output {##output 数据输出配置
elasticsearch {##使用elasticsearch接收
hosts => "localhost:9200"##集群地址 多个用,隔开
}
}
启动
/opt/soft/elasticsearch/logstash-x.x.x/bin/logstash -f /opt/soft/elasticsearch/logstash-x.x.x/config/logback-es.conf 2>&1 &
filebeat
tar -zxvf filebeat-xx.x-linux-x86_64.tar.gz
进入到config目录下 修改filebeat.yml
type: filestream 下的
enabled: false 改为true
paths: 下面的路径改为 日志路径 前面的 - 不要删掉
output.logstash: 下的
host:["1.10.1.0:5044"] 地址改为 logstash 安装机器的 地址
启动
nohup /opt/soft/filebeat-7.15/filebeat -e -c filebeat.yml 2>&1 &
错误参考
Filebeat自动关闭问题解决_Joseph9499的博客-CSDN博客_filebeat 自动关闭
参考:
ELK日志系统浅析与部署_Mars-CSDN博客_elk日志系统
搭建ELK日志分析系统_菲宇运维-CSDN博客_elk日志分析系统
从Filebeat到Logstash再到Elasticsearch,如何搭建ELK 日志平台_alva_xu的博客-CSDN博客