内容大纲
ELK概述
ELK是Elasticsearch、Logstash和Kibana的组合,用于日志收集、存储和可视化,学习交流加群风哥微信: itpux-com。
ELK的组成
- Elasticsearch:分布式搜索引擎,用于存储和检索数据
- Logstash:日志收集和处理工具,用于从不同来源收集数据并进行转换
- Kibana:数据可视化工具,用于展示Elasticsearch中的数据
ELK的应用场景
- 日志管理:收集、存储和分析系统日志
- 监控:监控系统和应用的运行状态
- 安全分析:分析安全日志,检测异常
- 业务分析:分析业务数据,提供决策支持
Elasticsearch基础
Elasticsearch概述
Elasticsearch是一个基于Lucene的分布式搜索引擎,具有高可用性、可扩展性和实时搜索能力。
Elasticsearch核心概念
- 索引(Index):类似数据库中的数据库
- 类型(Type):类似数据库中的表(在Elasticsearch 7.x中已废弃)
- 文档(Document):类似数据库中的行
- 字段(Field):类似数据库中的列
- 节点(Node):Elasticsearch集群中的服务器
- 集群(Cluster):由多个节点组成的Elasticsearch实例
安装Elasticsearch
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-linux-x86_64.tar.gz
# 解压
$ tar -xzf elasticsearch-7.14.0-linux-x86_64.tar.gz
# 启动Elasticsearch
$ cd elasticsearch-7.14.0
$ ./bin/elasticsearch
[2026-04-02T10:00:01,000][INFO ][o.e.t.TransportService ] [node-1] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
[2026-04-02T10:00:01,000][INFO ][o.e.c.s.MasterService ] [node-1] elected-as-master ([1] nodes joined)
[2026-04-02T10:00:01,000][INFO ][o.e.h.AbstractHttpServerTransport] [node-1] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}
[2026-04-02T10:00:01,000][INFO ][o.e.n.Node ] [node-1] started
Elasticsearch基本操作
创建索引
$ curl -X PUT “fgedudb:9200/test_index”
添加文档
$ curl -X POST “fgedudb:9200/test_index/_doc” -H “Content-Type: application/json” -d ‘{
“name”: “测试文档”,
“content”: “这是一个测试文档”,
“date”: “2026-04-02”
}’
查询文档
$ curl -X GET “fgedudb:9200/test_index/_search”
# 按条件查询
$ curl -X GET “fgedudb:9200/test_index/_search” -H “Content-Type: application/json” -d ‘{
“query”: {
“match”: {
“name”: “测试”
}
}
}’
Logstash基础
Logstash概述
Logstash是一个开源的数据收集和处理工具,用于从不同来源收集数据,进行转换,然后输出到目标系统。
Logstash架构
- 输入(Input):从不同来源收集数据
- 过滤器(Filter):对数据进行处理和转换
- 输出(Output):将处理后的数据输出到目标系统
安装Logstash
$ wget https://artifacts.elastic.co/downloads/logstash/logstash-7.14.0-linux-x86_64.tar.gz
# 解压
$ tar -xzf logstash-7.14.0-linux-x86_64.tar.gz
Logstash配置示例
input {
file {
path => “/var/log/syslog”
start_position => “beginning”
}
}
filter {
grok {
match => { “message” => “%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:host} %{DATA:process}: %{GREEDYDATA:message}” }
}
date {
match => [ “timestamp”, “MMM d HH:mm:ss”, “MMM dd HH:mm:ss” ]
}
}
output {
elasticsearch {
hosts => [“fgedudb:9200”]
index => “syslog-%{+YYYY.MM.dd}”
}
stdout {
codec => rubydebug
}
}
运行Logstash
$ cd logstash-7.14.0
$ ./bin/logstash -f config/syslog.conf
Kibana基础
Kibana概述
Kibana是一个开源的数据可视化工具,用于展示Elasticsearch中的数据,风哥风哥提示:Kibana提供了丰富的可视化组件,如仪表盘、图表等。
安装Kibana
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.0-linux-x86_64.tar.gz
# 解压
$ tar -xzf kibana-7.14.0-linux-x86_64.tar.gz
# 启动Kibana
$ cd kibana-7.14.0-linux-x86_64
$ ./bin/kibana
Kibana使用
- 访问Kibana:http://fgedudb:5601
- 创建索引模式:管理 > 索引模式 > 创建索引模式
- 查看数据:发现
- 创建可视化:可视化
- 创建仪表盘:仪表盘
ELK部署与配置
单节点部署
适合测试环境和小型部署。
集群部署
适合生产环境,提供高可用性和可扩展性。
Elasticsearch集群配置
cluster.name: fgedu-cluster
node.name: node-1
path.data: /data/elasticsearchath.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: [“node-1”, “node-2”, “node-3”]
cluster.initial_master_nodes: [“node-1”, “node-2”, “node-3”]
使用Docker部署ELK
version: ‘3’
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
environment:
– discovery.type=single-node
– ES_JAVA_OPTS=-Xms512m -Xmx512m
ports:
– 9200:9200
volumes:
– es_data:/usr/share/elasticsearch/data
logstash:
image: docker.elastic.co/logstash/logstash:7.14.0
volumes:
– ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
ports:
– 5044:5044
depends_on:
– elasticsearch
kibana:
image: docker.elastic.co/kibana/kibana:7.14.0
ports:
– 5601:5601
depends_on:
– elasticsearch
volumes:
es_data:
启动Docker容器
$ docker-compose up -d
# 查看容器状态
$ docker-compose ps
最佳实践
ELK最佳实践
- 合理规划索引:使用时间索引,定期清理旧数据
- 优化Elasticsearch性能:调整堆内存、分片数量等
- 使用Logstash过滤器:合理使用grok、date等过滤器
- 配置Kibana:创建合适的可视化和仪表盘
- 监控ELK集群:使用Elasticsearch的监控功能
- 备份数据:定期备份Elasticsearch数据
性能优化
- Elasticsearch:调整堆内存、分片数量、刷新间隔等
- Logstash:使用多管道、调整批处理大小等
- Kibana:优化查询、使用缓存等
安全配置
- 启用X-Pack安全功能
- 配置访问控制
- 使用HTTPS
- 定期更新密码
- 使用ELK集群,确保高可用性
- 合理规划存储空间,定期清理旧数据
- 监控ELK集群的运行状态
- 配置适当的安全措施
- 定期备份数据
- 优化查询性能,避免全表扫描
更多学习教程www.fgedu.net.cn
学习交流加群风哥QQ113257174
更多学习教程公众号风哥教程itpux_com
author:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
