ELK日志系统搭建教程
ELK日志系统搭建教程
ELK(Elasticsearch、Logstash、Kibana)是一套强大的开源日志分析解决方案。本教程将详细介绍如何搭建完整的ELK日志系统。
### 环境要求
- 操作系统:Ubuntu 20.04 LTS(CentOS/RHEL可适当调整)
- 硬件:至少4GB RAM,2核CPU
- 已安装Java 8或更高版本(推荐OpenJDK 11)
### 步骤一:安装Java环境
```bash
# 更新系统包
sudo apt update
# 安装OpenJDK 11
sudo apt install openjdk-11-jdk -y
# 验证Java安装
java -version
```
### 步骤二:安装Elasticsearch
1. 添加Elasticsearch仓库密钥:
```bash
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
```
2. 添加Elasticsearch仓库:
```bash
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
```
3. 安装Elasticsearch:
```bash
sudo apt install elasticsearch -y
```
4. 配置Elasticsearch:
```bash
sudo nano /etc/elasticsearch/elasticsearch.yml
```
修改以下配置:
```yaml
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
```
5. 启动并启用Elasticsearch:
```bash
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
```
### 步骤三:安装Logstash
1. 安装Logstash:
```bash
sudo apt install logstash -y
```
2. 创建基本配置文件:
```bash
sudo nano /etc/logstash/conf.d/01-syslog.conf
```
3. 添加以下配置(收集系统日志):
```conf
input {
file {
path => "/var/log/syslog"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "syslog-%{+YYYY.MM.dd}"
}
}
```
4. 启动并启用Logstash:
```bash
sudo systemctl start logstash
sudo systemctl enable logstash
```
### 步骤四:安装Kibana
1. 安装Kibana:
```bash
sudo apt install kibana -y
```
2. 配置Kibana:
```bash
sudo nano /etc/kibana/kibana.yml
```
修改以下配置:
```yaml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
```
3. 启动并启用Kibana:
```bash
sudo systemctl start kibana
sudo systemctl enable kibana
```
### 步骤五:验证安装
1. 检查Elasticsearch:
```bash
curl -X GET "localhost:9200/_cat/nodes?v&pretty"
```
2. 检查Logstash:
```bash
sudo systemctl status logstash
```
3. 检查Kibana:
访问 `http://your_server_ip:5601`(替换为你的服务器IP)
### 步骤六:配置日志收集(示例Nginx日志)
1. 创建Nginx日志配置:
```bash
sudo nano /etc/logstash/conf.d/02-nginx.conf
```
2. 添加以下配置:
```conf
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
geoip {
source => "clientip"
}
useragent {
source => "agent"
target => "user_agent"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "nginx-logs-%{+YYYY.MM.dd}"
}
}
```
3. 重启Logstash:
```bash
sudo systemctl restart logstash
```
### 步骤七:在Kibana中查看日志
1. 访问Kibana界面:`http://your_server_ip:5601`
2. 创建索引模式:
- 导航到 Management > Stack Management > Index Patterns
- 创建模式:`syslog-*` 或 `nginx-logs-*`
- 选择时间字段:`@timestamp`
3. 查看日志:
- 导航到 Analytics > Discover
- 选择创建的索引模式
- 查看和分析日志数据
### 常见问题解决
1. Elasticsearch启动失败:
```bash
sudo journalctl -u elasticsearch -b
```
检查Java版本和内存设置(`/etc/elasticsearch/jvm.options`)
2. Logstash不收集日志:
```bash
sudo /usr/share/logstash/bin/logstash --config.test_and_exit -f /etc/logstash/conf.d/
```
测试配置文件语法
3. Kibana无法连接Elasticsearch:
```bash
sudo nano /etc/kibana/kibana.yml
```
确认`elasticsearch.hosts`配置正确
总结
本教程详细介绍了ELK日志系统的完整搭建过程,包括Elasticsearch、Logstash和Kibana的安装配置。通过本教程,您已成功搭建一个基础的日志收集和分析平台,能够收集系统日志(如syslog)和应用日志(如Nginx访问日志),并通过Kibana界面进行可视化分析。后续可以根据实际需求扩展系统功能,例如:
- 添加Beats组件实现轻量级日志收集
- 配置Elasticsearch集群提高高可用性
- 设置告警规则实现日志异常检测
- 集成X-Pack提供安全、监控等企业级功能
建议在生产环境中配置适当的访问控制和数据备份策略,确保系统安全可靠运行。





