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提供安全、监控等企业级功能

建议在生产环境中配置适当的访问控制和数据备份策略,确保系统安全可靠运行。

发表回复

后才能评论