ELK Stack 是一组开源的日志管理工具,包括 Elasticsearch、Logstash 和 Kibana。Elasticsearch 用于存储和搜索日志数据,Logstash 用于收集和处理日志数据,而 Kibana 提供了一个强大的可视化界面来分析和监控这些数据。以下是 ELK Stack 的基础语法学习资料。
1. 安装和配置
1.1 安装 Java
Elasticsearch 和 Logstash 都需要 Java 运行时环境(JRE)或 Java 开发工具包(JDK)。建议使用 OpenJDK 11 或更高版本。
-
在 Ubuntu 上安装 OpenJDK 11
bash
sudo apt-get update
sudo apt-get install openjdk-11-jdk
- 验证安装:
bash
java -version
1.2 安装 Elasticsearch
-
下载并安装 Elasticsearch
bash
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elasticsearch.list'
sudo apt-get update && sudo apt-get install elasticsearch
- 启动 Elasticsearch
bash
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
- 验证安装
bash
curl -X GET "localhost:9200/"
1.3 安装 Logstash
-
下载并安装 Logstash
bash
sudo systemctl start logstash
sudo systemctl enable logstash
1.4 安装 Kibana
-
下载并安装 Kibana
bash
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/kibana.list'
sudo apt-get update && sudo apt-get install kibana
- 启动 Kibana
bash
sudo systemctl start kibana
sudo systemctl enable kibana
-
访问 Kibana 界面:打开浏览器,访问
http://<your_server_ip>:5601
。
2. 基本概念和配置
2.1 Elasticsearch
2.1.1 创建索引
bash
curl -X PUT "localhost:9200/my_index"
2.1.2 插入文档
bash
curl -X POST "localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d'
{"name": "John Doe","age": 30,"email": "john.doe@example.com"
}'
2.1.3 搜索文档
bash
curl -X GET "localhost:9200/my_index/_search?q=name:John"
2.1.4 删除索引
bash
curl -X DELETE "localhost:9200/my_index"
2.2 Logstash
2.2.1 配置文件示例
创建一个基本的 Logstash 配置文件 logstash.conf
:
conf
input {file {path => "/path/to/your/logfile.log"start_position => "beginning"}
}filter {grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}date {match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]}
}output {elasticsearch {hosts => ["localhost:9200"]index => "apache_logs-%{+YYYY.MM.dd}"}stdout { codec => rubydebug }
}
2.2.2 启动 Logstash
bash
sudo /usr/share/logstash/bin/logstash -f /path/to/logstash.conf
2.3 Kibana
2.3.1 配置索引模式
- 打开 Kibana 界面。
- 导航到
Management
->Index Patterns
。 - 输入
apache_logs-*
并点击Next step
。 - 选择时间字段
@timestamp
并点击Create index pattern
。
2.3.2 查看数据
导航到 Discover
页面,你可以看到从 Logstash 收集的数据。
2.3.3 创建仪表板
- 导航到
Visualize
页面。 - 创建新的可视化图表(例如饼图、折线图等)。
- 将这些可视化图表添加到一个新的仪表板中。
3. 示例:完整的 ELK 流程
3.1 准备日志文件
假设你有一个 Apache 日志文件 /var/log/apache2/access.log
,内容如下:
127.0.0.1 - - [20/Jun/2023:13:55:36 +0800] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
127.0.0.1 - - [20/Jun/2023:13:55:37 +0800] "GET /about HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
3.2 创建 Logstash 配置文件
conf
# logstash-apache.conf
input {file {path => "/var/log/apache2/access.log"start_position => "beginning"}
}filter {grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}date {match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]}
}output {elasticsearch {hosts => ["localhost:9200"]index => "apache_logs-%{+YYYY.MM.dd}"}stdout { codec => rubydebug }
}
3.3 启动 Logstash
bash
sudo /usr/share/logstash/bin/logstash -f /path/to/logstash-apache.conf
3.4 在 Kibana 中查看数据
- 打开 Kibana 界面。
- 导航到
Management
->Index Patterns
。 - 输入
apache_logs-*
并点击Next step
。 - 选择时间字段
@timestamp
并点击Create index pattern
。 - 导航到
Discover
页面,查看解析后的日志数据。 - 导航到
Visualize
页面,创建图表并将它们添加到仪表板中。
通过以上步骤,你已经完成了从日志收集、处理到可视化的整个流程。希望这些内容能帮助你更好地理解和掌握 ELK Stack 的基础语法和功能!