目录
架构选型
ELK
“ELK” 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。
- Elasticsearch 是一个搜索和分析引擎。
- Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到Elasticsearch、kafka等。
- Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
一套日志采集系统需要具备以下5个功能:
- 收集 :能够采集多个来源的日志数据。
- 传输 :能够稳定的把日志数据传输到日志服务。
- 存储 :能够存储海量的日志数据。
- 查询 :能够灵活且高效的查询日志数据,并提供一定的分析能力。
- 告警 :能够提供提供告警功能,通知开发和运维等等
Elastic官网:https://www.elastic.co/cn/what-is/elk-stack
EFLK
在采集日志数据时,我们需要在服务器上安装一个 Logstash。不过 Logstash 是基于 JVM 的重量级的采集器,对系统的 CPU、内存、IO 等等资源占用非常高,这样可能影响服务器上的其它服务的运行。所以,Elastic NV 推出 Beats ,基于 Go 的轻量级采集器,对系统的 CPU、内存、IO 等等资源的占用基本可以忽略不计。因此,本文的示例就变成了 ELFK 。其中,Beats 负责采集数据,并通过网路传输给 Logstash。即整体架构:
Beats 是一个全品类采集器的系列,包含多个:(使用 Filebeat,采集日志文件)
- Filebeat :轻量型日志采集器。√
- Metricbeat :轻量型指标采集器。
- Packetbeat :轻量型网络数据采集器。
- Winlogbeat :轻量型 Windows 事件日志采集器。
- Auditbeat :轻量型审计日志采集器。
- Heartbeat :面向运行状态监测的轻量型采集器。
- Functionbeat :面向云端数据的无服务器采集器。
Elasticsearch
ES集群搭建
参考:Elasticsearch7.x - 集群部署 - lihewei - 博客园 (cnblogs.com)
常用命令
启动 Elasticsearch 服务:
# 使用命令行启动 Elasticsearch 服务
elasticsearch
# 或者使用 systemd(根据您的操作系统)
sudo systemctl start elasticsearch
停止 Elasticsearch 服务:
# 使用命令行停止 Elasticsearch 服务
Ctrl+C
# 或者使用 systemd(根据您的操作系统)
sudo systemctl stop elasticsearch
检查 Elasticsearch 集群健康状态:
# 使用 curl 命令检查集群健康状态
curl -X GET "http://localhost:9200/_cat/health?v"
查看节点信息:
shellCopy code
# 使用 curl 命令查看节点信息
curl -X GET "http://localhost:9200/_cat/nodes?v"
创建索引:
# 使用 curl 命令创建一个名为 "my_index" 的索引
curl -X PUT "http://localhost:9200/my_index"
删除索引:
# 使用 curl 命令删除名为 "my_index" 的索引
curl -X DELETE "http://localhost:9200/my_index"
索引文档:
# 使用 curl 命令索引一篇文档到 "my_index" 索引中
curl -X POST "http://localhost:9200/my_index/_doc" -d '{
"field1": "value1",
"field2": "value2"
}'
搜索文档:
# 使用 curl 命令执行搜索查询
curl -X GET "http://localhost:9200/my_index/_search?q=field1:value1"
查看索引的映射(Mapping):
# 使用 curl 命令查看索引 "my_index" 的映射
curl -X GET "http://localhost:9200/my_index/_mapping"
查看索引的统计信息:
# 使用 curl 命令查看索引 "my_index" 的统计信息
curl -X GET "http://localhost:9200/my_index/_stats"
查看索引中的文档数量:
# 使用 curl 命令查看索引 "my_index" 中的文档数量
curl -X GET "http://localhost:9200/my_index/_count"
聚合数据:
# 使用 curl 命令执行聚合操作
curl -X POST "http://localhost:9200/my_index/_search" -d '{
"size": 0,
"aggs": {
"avg_field2": {
"avg": {
"field": "field2"
}
}
}
}'
更新文档:
# 使用 curl 命令更新文档
curl -X POST "http://localhost:9200/my_index/_update/1" -d '{
"doc": {
"field1": "new_value"
}
}'
删除文档:
# 使用 curl 命令删除文档
curl -X DELETE "http://localhost:9200/my_index/_doc/1"
Filebeat
功能介绍
Filebeat是一个轻量型日志采集器,负责采集数据,并通过网路传输给 Logstash。
安装步骤
1)官网下载:https://www.elastic.co/cn/downloads/beats/filebeat
2)解压:tar -zxvf filebeat-7.5.1-darwin-x86_64.tar.gz
3)修改配置:
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/crbt/logs/crbtRingSync/wrapper.log
fields:
log_source: vrbt-rd1-hbbj
log_topic: crbt-web-log
output.kafka:
hosts: ["10.1.61.121:9092"]
topic: '%{[fields.log_topic]}'
Filebeat配置详解
filebeat.inputs
配置项,设置 Filebeat 读取的日志来源。该配置项是数组类型,可以将 Nginx、MySQL、Spring Boot 每一类,作为数组中的一个元素。output.elasticsearch
配置项,设置 Filebeat 直接写入数据到 Elasticsearch 中。虽然说 Filebeat5.0
版本以来,也提供了 Filter 功能,但是相比 Logstash 提供的 Filter 会弱一些。所以在一般情况下,Filebeat 并不直接写入到 Elasticsearch 中output.logstash
配置项,设置 Filebeat 写入数据到 Logstash 中output.kafka
配置项,设置Filebeat 写入数据到 kafka 中
filebeat常用命令
# 启动filebeat
nohup ./filebeat -e &
# -e 参数表示以前台模式运行 -c 指定配置文件
./filebeat -e -c /home/crbt/lihewei/filebeat-7.5.1-linux-x86_64/filebeat.yml
./filebeat -e -c filebeat.yml
# 查看filebeat是否正常启动
curl http://localhost:5066/
ps -ef | grep filebeat
Logstash
功能介绍
Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到喜欢的“存储库”中。通过定义了一个 Logstash 管道(Logstash Pipeline),来读取、过滤、输出数据。一个 Logstash Pipeline 包含三部分:
- 【必选】输入(Input): 数据(包含但不限于日志)往往都是以不同的形式、格式存储在不同的系统中,而 Logstash 支持从多种数据源中收集数据(File、Syslog、MySQL、消息中间件等等)
- 【可选】过滤器(Filter) :实时解析和转换数据,识别已命名的字段以构建结构,并将它们转换成通用格式。
- 【必选】输出(Output) :Elasticsearch 并非存储的唯一选择,Logstash 提供很多输出选择。
安装步骤
1)下载: https://www.elastic.co/cn/products/logstash
2)解压:unzip logstash-7.5.1.zip
3)修改配置文件
在 config
目录下,提供了 Logstash 的配置文件,其中,logstash-sample.conf
配置文件,是 Logstash 提供的 Pipeline 配置的示例
crbt@node2:/home/crbt/lihw/logstash-7.5.1/config>ll
total 40
-rw-r--r-- 1 crbt crbt 2019 Dec 17 2019 jvm.options
-rw-r--r-- 1 crbt crbt 7482 Dec 17 2019 log4j2.properties
-rw-rw-r-- 1 crbt crbt 843 Sep 15 19:07 logstash.conf
-rw-r--r-- 1 crbt crbt 342 Dec 17 2019 logstash-sample.conf
-rw-r--r-- 1 crbt crbt 8372 Sep 15 10:53 logstash.yml
-rw-r--r-- 1 crbt crbt 3146 Dec 17 2019 pipelines.yml
-rw-r--r-- 1 crbt crbt 1696 Dec 17 2019 startup.options
crbt@node2:/home/crbt/lihw/logstash-7.5.1/config>cat logstash-sample.conf
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
#日志消息从哪里来(这里使用filebeat进行日志收集)
input {
beats {
port => 5044
}
}
#日志信息输出到哪里去(这里写入es数据库)
output {
elasticsearch {
hosts => ["http://10.1.61.121:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
4)指定配置文件并启动logstash:W
# 启动logstash服务(指定自定义的配置文件logstash.conf)
./logstash -f ../config/logstash.conf
# 后台启动logstash服务
标签:ELK,插件,QuickStart,index,crbt,Logstash,field,日志,curl
From: https://www.cnblogs.com/lihw/p/17717982.html