ELK指的是Elasticsearch、Logstash、Kibana,这三者是核心套件,但并非全部。
- Logstash : 是一个用来搜集、分析、过滤日志的工具。 它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。 它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
- Elasticsearch: 是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能; 是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。 它构建于Apache Lucene搜索引擎库之上。
- Kibana: 一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。 它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。
- Beats :
轻量型采集器的平台,从边缘机器向 Logstash 和 Elasticsearch 发送数据。(本次未使用)
filebeat是Beats中的一员。是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。
Input:输入,输出数据可以是Stdin、File、TCP、Redis、Syslog等。
Filter:过滤,将日志格式化。有丰富的过滤插件:Grok正则捕获、Date时间处理、Json编解码、Mutate数据修改等。
Output:输出,输出目标可以是Stdout、File、TCP、Redis、ES等。
- ogstash 和 beats的关系
好多人都觉得beats出来是用来替代logstash的。实际上并不是,beats只是用来优化logstash的,因为logstash消耗的性能比较多。如果只是单纯的为了收集日志,使用logstash就有点大材小用了,另外有点浪费资源。而beats是轻量级的用来收集日志的。
而logstash更加专注一件事,那就是数据转换,格式化,等处理工作。比方说,日志数据是一行一行的非格式化的数据,想要存在elasticsearch就要有一定的结构。logstash就可以做这件事。
beats是可以直接对接elasticsearch的,只不过数据不能适配,只能做一些简单的处理
logstash对接es,也可以对接其它的
比较完整的就是:beats 对logstash 进行数据适配,然后推到es 做检索。
基本概念
Node:运行单个ES实例的服务器 Cluster:一个或多个节点构成集群 Index:索引是多个文档的集合 Document:Index里每条记录称为Document,若干文档构建一个Index Type:一个Index可以定义一种或多种类型,将Document逻辑分组 Field:ES存储的最小单元 Shards:ES将Index分为若干份,每一份就是一个分片 Replicas:Index的一份或多份副本 ES 关系型数据库(比如Mysql)
ES |
关系型数据库(比如Mysql) |
---|---|
Index |
Database |
Type |
Table |
Document |
Row |
Field |
Column |
准备环境
本次只是搭建了个单体环境,非集群。
需要安装:elasticsearch、logstash、Kibana、java
- 安装java
我相信你已经安装好了java,而且现在都会内置java,可以手动指定。
elasticsearch与Kibana下载地址:https://www.elastic.co/cn/start
logstash下载地址:https://www.elastic.co/cn/downloads/logstash
下载下来之后解压出来
linux用tar -zxvf解压出来,然后修改参数
Elasticsearch的安装使用
elasticsearch不能用root用户启动,所以新建一个用户
useradd -d /home/elk -m elk
切换至elk用户
su - elk
修改elasticsearch配置文件elasticsearch-7.16.2/config/elasticsearch.yml
配置并设置节点名称
node.name: node-1
修改data存放的路径
path.data: /usr/elk/data
修改log存放的路径
path.logs: /usr/elk/logs
监听的网络地址
network.host: 192.168.80.241
监听的端口
http.port: 9200
列出首次选举中符合主机资格的节点 单机就自己
cluster.initial_master_nodes: ["node-1"]
创建存放log与data的目录
mkdir /usr/elk/data
mkdir /usr/elk/logs
授予权限
chown -R elk:elk /usr/elk/data
然后就可以启动试试看了
启动bin目录下的脚本elasticsearch
./elasticsearch -d
访问下服务看看启动成功了没有
curl http://192.168.80.241:9200/
这样就算启动成功了
LogStash的安装使用
在/usr/local/logstash-7.16.2/config下添加elk.conf文件
配置文件官方指南
https://www.elastic.co/guide/en/logstash/current/configuration.html
配置文件的结构为
input { ... } filter { ... } output { ... }
input、filter、output插件的配置可以参考官方:
Input Plugins 、 Output Plugins 、 Filter Plugins
这里也可以配置filebeat,但是我不配。
最终我的配置文件为
input {
file {
path => "/usr/local/apache-tomcat-8.5.63/logs/*.log"
type => "tomcat"
start_position => "beginning"
}
file {
path => "/usr/local/apache-tomcat-8.5.63/logs/datamaintenance-log/*.log"
type => "datamaintenance"
start_position => "beginning"
}
file {
path => "/usr/local/apache-tomcat-8.5.63/logs/cloud/*.log"
type => "cloud"
start_position => "beginning"
}
file {
path => "/usr/local/apache-tomcat-8.5.63/logs/feedback-cloud/*.log"
type => "cloud"
start_position => "beginning"
}
}
output {
if [type] == "tomcat" {
elasticsearch {
hosts => ["192.168.80.241:9200"]
index => "nagios-tomcat-%{+YYYY.MM.dd}"
}
}
if [type] == "datamaintenance" {
elasticsearch {
hosts => ["192.168.80.241:9200"]
index => "nagios-datamaintenance-%{+YYYY.MM.dd}"
}
}
if [type] == "cloud" {
elasticsearch {
hosts => ["192.168.80.241:9200"]
index => "nagios-cloud-%{+YYYY.MM.dd}"
}
}
if [type] == "feedback-cloud" {
elasticsearch {
hosts => ["192.168.80.241:9200"]
index => "nagios-feedback-cloud-%{+YYYY.MM.dd}"
}
}
}
配置没问题了就可以启动了,以后台的方式启动,日志输出到nohup.log中
nohup ./logstash -f ../config/elk.conf -w 8 -b 1000 > /usr/local/logstash-7.16.2/bin/nohup.log 2>&1 &
Kibana的安装及使用
在/usr/local/kibana-7.16.2-linux-x86_64/config下修改配置文件kibana.yml
server.port: 5601
server.host: "192.168.80.241"
elasticsearch.hosts: ["http://192.168.80.241:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"
之后启动
nohup ./kibana &
等待一会儿后查看服务是否正常
直接在浏览器里访问
http://192.168.80.241:5601
至此,搭建就算完成了。
Comments | 1 条评论
博主 Chihiro
那你为啥不配[f=youling]