背景
ELK由Elasticsearch、Logstash和Kibana三部分组件组成;
-
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
-
Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用
-
kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
搭建环境
ELK+Kafka 执行原理图
搭建步骤
- Kafka以及zookpeer的安装
- elk的安装
- 使用springboot发送消息到kafka并使用kibana查看日志
Kafka+zookeeper单机安装配置
http://kafka.apache.org/quickstart
Kafka+zookeeper集群可以分开搭建,也可以使用Kafka自带的zookeeper 本次安装采用kafka自带的zookeeper
解压
# 解压 kafka_2.13-2.5.1.tgz
tar -xzvf kafka_2.13-2.5.1.tgz
# 为 kafka 创建软链接
ln -sv kafka_2.13-2.5.1 ../kafka
# 进入kafka
cd kafka
启动zookeeper
启动zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties &
启动kafka
启动kafka
bin/kafka-server-start.sh config/server.properties &
创建topic quickstart-events
bin/kafka-topics.sh --create --topic logger-channel --bootstrap-server 20.26.99.21:8092
查看已经创建的topic
bin/kafka-topics.sh --list --zookeeper localhost:2181
生产者发送消息
$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
>This is my first event
>This is my second event
消费者接受消息
$ bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event
logstash
解压
tar -xzvf logstash-7.9.1.tar.gz
# 进入文件夹
cd logstash-7.9.1
修改配置文件
logstash-sample.conf的配置文件拷贝到根目录下重新命名为core.conf
cp config/logstash-sample.conf ./core.conf
编辑文件
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
kafka {
id => "my_plugin_id"
bootstrap_servers => "20.26.99.21:8092"
topics => ["logger-channel"]
auto_offset_reset => "latest"
decorate_events => true #在输出消息的时候回输出自身的信息,包括:消费消息的大小、topic来源以及consumer的group信息。
type => "statistic"
}
}
#filter {
# grok {
# patterns_dir => ["./patterns"]
# match => { "message" => "%{WORD:module} \| %{LOGBACKTIME:timestamp} \| %{LOGLEVEL:level} \| %{JAVACLASS:class} - %{JAVALOGMESSAGE:logmessage}" }
# }
#}
output {
#stdout { codec => rubydebug }
elasticsearch {
hosts =>["localhost:8200"]
index => "kafka"
}
}
启动
bin/logstash -f core.conf --config.reload.automatic &
安装ES
解压
tar -xzvf elasticsearch-7.9.1-linux-x86_64.tar.gz
# 进入文件夹
cd elasticsearch-7.9.1
修改配置文件
修改端口号为8200
vi config/elasticsearch.yml
http.port: 9200
http.host: 0.0.0.0
由于es 不能root 账号启动,需要新建账号cloud
新建账号
root添加用户名
useradd cloud
passwd cloud
输入两次密码 字母+数字
给账号赋权
chown -R cloud /app/cloud/
切到新账号上
su cloud
启动
./bin/elasticsearch &
查看所有索引数
http://20.26.99.21:8200/_cat/indices?v
安装kibana
解压
tar -xzvf kibana-7.9.1-linux-x86_64.tar.gz
# 进入文件夹
cd kibana-7.9.1
修改端口号
vi config/kibana.yml
server.port: 8601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:8200/"]
#elasticsearch.url: "http://20.26.99.21:8200"
kibana.index: ".kibana"
启动
./bin/kibana --allow-root &
创建索引 kafka
创建索引
访问地址
http://20.26.99.21:8601/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))&_a=(columns:!(_source),filters:!(),index:fe9b9250-f95b-11ea-9b5c-2bc75f19f1b3,interval:auto,query:(language:kuery,query:’’),sort:!())