ELK是一个开源的数据分析和可视化平台,它由 Elasticsearch、Logstash 和 Kibana 三部分组成。其中,Elasticsearch 用于存储和查询日志数据,Logstash 用于收集、过滤和转换数据,而 Kibana 则是一个数据可视化和分析工具。ELK 的主要应用场景是日志管理,如系统日志、应用程序日志、网络设备日志等,可以实现快速、实时地分析和查询大规模的日志数据,为运维工作提供有力的支持。
在CentOS7环境下,安装ELK可以分为五个步骤:安装Java、安装Elasticsearch、安装Logstash、安装Kibana、安装Filebeat和Kafka。以下是详细的安装步骤:
- 安装Java
ELK是基于Java开发的,因此需要先安装Java运行环境。可以使用以下命令安装:
sudo yum install java-1.8.0-openjdk-devel
- 安装Elasticsearch
Elasticsearch是ELK的核心组件,用于存储和查询日志数据。可以使用以下命令安装:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo vi /etc/yum.repos.d/elasticsearch.repo
在文件中添加以下内容:
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
然后执行以下命令安装:
sudo yum install elasticsearch
安装完成后,打开Elasticsearch配置文件/etc/elasticsearch/elasticsearch.yml并进行以下配置:
cluster.name: elk-cluster
node.name: node-1
network.host: 0.0.0.0
最后启动Elasticsearch并设置开机启动:
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
- 安装Logstash
Logstash用于收集、过滤和转换数据。可以使用以下命令安装:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo vi /etc/yum.repos.d/logstash.repo
在文件中添加以下内容:
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
然后执行以下命令安装:
sudo yum install logstash
安装完成后,打开Logstash配置文件/etc/logstash/conf.d/logstash.conf并进行以下配置:
input {
kafka {
bootstrap_servers => "localhost:9092"
topics => ["test"]
codec => multiline {
pattern => "^\["
negate => true
what => "previous"
}
}
}
filter {
grok {
match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] %{LOGLEVEL:level} \[%{DATA:logger}\] %{GREEDYDATA:message}" }
}
date {
match => [ "timestamp", "ISO8601" ]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
}
以上配置使用Logstash从Kafka中收集数据,如果数据为多行,则使用codec插件合并为一行。接着使用grok插件进行格式化,最后通过elasticsearch插件将数据存储到Elasticsearch中。需要注意的是,如果使用其他数据源,则需要针对具体的数据源进行相应的配置。
最后启动Logstash并设置开机启动:
sudo systemctl start logstash
sudo systemctl enable logstash
- 安装Kibana
Kibana是一个数据可视化和分析工具。可以使用以下命令安装:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo vi /etc/yum.repos.d/kibana.repo
在文件中添加以下内容:
[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
然后执行以下命令安装:
sudo yum install kibana
安装完成后,打开Kibana配置文件/etc/kibana/kibana.yml并进行以下配置:
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
最后启动Kibana并设置开机启动:
sudo systemctl start kibana
sudo systemctl enable kibana
- 安装Filebeat和Kafka
Filebeat是一个轻量级的日志收集器,可以将日志数据发送到Kafka或者直接发送到Logstash。Kafka则是一个高性能分布式消息系统,用于处理大规模的消息数据。可以使用以下命令安装:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo vi /etc/yum.repos.d/elastic.repo
在文件中添加以下内容:
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
然后执行以下命令安装:
sudo yum install filebeat kafka
安装完成后,打开Filebeat配置文件/etc/filebeat/filebeat.yml并进行以下配置:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/messages
multiline.pattern: '^[[:space:]]'
multiline.negate: false
multiline.match: after
output.kafka:
enabled: true
hosts: ["localhost:9092"]
topic: "test"
以上配置使用Filebeat从/var/log/messages中收集日志数据,并将数据发送到Kafka的test主题中。如果需要将数据直接发送到Logstash,则可以修改为以下配置:
output.logstash:
hosts: ["localhost:5044"]
需要注意的是,如果源文件中的数据为多行,则需使用multiline插件进行配置。以上配置中的multiline.pattern为正则表达式,用于匹配多行的起始行。multiline.negate为true表示匹配非起始行,而multiline.match为after表示将多行合并到后面的一行中。
最后启动Filebeat并设置开机启动:
sudo systemctl start filebeat
sudo systemctl enable filebeat
至此,ELK的安装和配置已经完成。在实际使用中,还需要根据具体的场景进行相应的优化和配置,如增加Elasticsearch的节点、调整Logstash的过滤规则、优化Kibana的查询性能等。