本教程介绍如何在Windows与Linux系统中搭建及配置ELK(Elasticsearch, Logstash, Kibana)日志分析平台,涵盖环境准备、软件安装到实际应用案例。
### ELK日志框架在Windows和Linux下的部署详解
#### 一、ELK日志框架简介
ELK栈由Elasticsearch、Logstash和Kibana组成,在日志处理流程中广泛使用,涵盖收集、存储、分析及可视化展示等环节。具体如下:
- **Elasticsearch**:分布式搜索与分析引擎,适用于所有类型的数据,特别是文本数据。
- **Logstash**:负责数据的采集、解析以及转换,并将这些信息发送到Elasticsearch中。
- **Kibana**:提供用户友好的Web界面进行数据分析和可视化展示。
#### 二、Windows环境下的部署步骤
##### 1. 下载安装包
从官方网站下载适用于Windows的Elasticsearch、Logstash及Kibana版本。推荐使用5.4.0版,确保各组件间兼容性良好。
##### 2. 注册服务
为了便于管理和监控ELK组件,在Windows系统中利用NSSM(Non-Sucking Service Manager)将这些组件注册为Windows服务。
- **下载并安装NSSM**:从相关网站获取最新版本的NSSM,并将其复制到Elasticsearch、Logstash和Kibana相应的bin目录下。
- **配置及启动各服务**
- Elasticsearch: 在CMD窗口执行`nssm install elasticsearch`,设置path指向`elasticsearch.bat`文件所在位置并完成安装。
- Logstash:创建一个名为logstash.conf的配置文件,并在其中定义输入、过滤和输出规则。示例如下:
```plaintext
input {
file {
path => [D:logstestweb.log]
}
}
output {
elasticsearch {
hosts => [localhost:9200]
}
}
```
- 创建`run.bat`文件,内容为启动命令:`logstash.bat -f logstash.conf`
- 执行`nssm install logstash`, 设置path指向创建的run.bat,并设置依赖项Elasticsearch服务名。
- Kibana: 同样执行 `nssm install kibana`,指定路径为Kibana bin目录中的kibana.bat文件并设定其依赖关系。
##### 3. 启动ELK组件
启动各服务后,在浏览器中访问localhost:5601来检查是否成功部署了Kibana。
#### 三、Logstash配置详解
下面提供一个示例,说明如何使用Logstash从不同路径读取日志文件,并对其进行过滤和处理:
```plaintext
input {
file {
path => [D:/logstest/web.log]
type => web
}
file {
path => [D:/logstest/gateway.log]
type => gateway
}
}
filter {
if (Exception in [message]) or (error in [message]) {
mutate { add_field => {[@metadata][exception] => true} }
}
}
output {
if web == [type] {
elasticsearch {
hosts => [10.0.6.79:9200]
index => %{type}-%{+YYYY.MM.dd}
}
}
else if gateway == [type] {
elasticsearch {
hosts => [10.0.6.79:9200]
index => %{type}-%{+YYYY.MM.dd}
}
}
if [@metadata][exception] == true {
email {
port => 25
address => 192.1.90.99
username => stillone_admin
password => 1234abc!
authentication => login
use_tls => false
from => stillone_admin@cccbmc.com
subject => Warning: you have an error!
to => admin@example.com
}
}
}
```
此配置中,Logstash从两个路径读取日志文件,并根据关键字判断是否包含异常信息。如果存在,则在元数据字段`exception`中标记为true,并发送邮件通知。
#### 四、Linux环境下的部署步骤
尽管本段落主要介绍Windows部署方法,在实际应用中ELK栈更常用于Linux系统。
1. **安装依赖库**:确保已安装JDK,使用yum或apt-get命令安装必要的软件包如Curl等。
2. **下载并解压组件**:从官方网站下载所需文件,并通过tar命令在指定目录下解压缩。
3. **配置服务**
- 对每个ELK组件创建systemd服务文件,并设置启动参数。
4. **启动服务**
使用`systemctl start`和`systemctl status`来管理并检查各个服务的状态。
####