一、什么是ELK
ELK=Elasticsearch+Logstash+Kibana
E:数据的存储和搜索、L:日志数据的过滤和收集、K:web方式的前端展现。
ElasticSearch(简称ES),是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结 构化搜索以及分析。
Logstash,是一个数据收集引擎,主要用于进行数据收集、解析,并将数据发送给ES。支持的数据源包括本地文件、ElasticSearch、MySQL、Kafka等等。
Kibana,为 Elasticsearch 提供了分析和 Web 可视化界面,并生成各种维度表格、图形。
二、ELk搭建
环境依赖:CentOS7.5,JDK11,ElasticSearch7.9.3,Logstash 7.9.3,Kibana7.9.3。
es7后需要jdk11
2.1 安装ElasticSearch,选择要下载产品
网址:https://www.elastic.co/cn/downloads/past-releases
下载后,解压tar -zxvf命令解压。tar -zxvf elasticsearch-7.9.3-linux-x86_64.tar.gz,找到
config目录下的elasticsearch.yml,修改配置如下:
cluster.name: es-application
node.name: node-1
#对所有IP开放
network.host: 0.0.0.0
#HTTP端口号
http.port: 9200
#elasticsearch数据文件存放目录
path.data: /usr/elasticsearch-7.9.3/data
#elasticsearch日志文件存放目录
path.logs: /usr/elasticsearch-7.9.3/logs
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]单节点或者多个节点
配置完之后,因为ElasticSearch使用非root用户启动,所以创建一个用户。
# 创建用户
useradd esroot
# 设置密码
passwd 12345678
# 赋予用户权限
chown -R esroot:esroot /usr/local/elasticsearch-7.9.3/
然后进入ElasticSearch,安装目录bin下,切换用户,su esroot,启动ElasticSearch,d表示后台启动
./elasticsearch -d
启动es前,需要设置/etc/sysctl.conf,vm.max_map_count = 655360的最大值,否则会提示 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
使用命令netstat -nltp查看端口号:
访问http://116.62.200.41:9200/可以看到如下信息,表示安装成功。
2.2 安装Logstash,首先在官网下载安装包
然后解压,找到/config目录下的logstash-sample.conf文件,复制一份命名为my-logstash.conf修改配置:
input {
file {
#收集日志路径
path => "/usr/local/logstash-7.9.3/*.log"
#文件
start_position => "beginning"
#服务名称
type =>"application-webui-log"
}
}
output {
elasticsearch {
hosts => ["http://116.62.200.41:9200"]
index => "springboot-test-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
input表示输入源,output表示输出,还可以配置filter过滤,结构如下:
input {
file {
#监听文件的路径
path => ["/usr/local/logstash-7.9.3/data/*","F:/test.txt"]
#排除不想监听的文件
exclude => "1.log"
#添加自定义的字段
add_field => {"test"=>"test"}
#增加标签
tags => "tag1"
#设置新事件的标志
delimiter => "\n"
#设置多长时间扫描目录,发现新文件
discover_interval => 15
#设置多长时间检测文件是否修改
stat_interval => 1
#监听文件的起始位置,默认是end
start_position => beginning
#监听文件读取信息记录的位置
sincedb_path => "/usr/local/logstash-7.9.3/test.txt"
#设置多长时间会写入读取的位置信息
sincedb_write_interval => 15
}
}
filter {
}
output {
stdout {}
}
2.3 安装Kibana,还是到官网下载压缩包
然后解压,找到/config目录下的kibana.yml文件,修改配置:
server.port: 5601
server.host: "192.168.0.111"
elasticsearch.hosts: ["http://116.62.200.41:9200"]
和elasticSearch一样,不能使用root用户启动,需要创建一个用户:
# 创建用户
useradd kibana
# 设置密码
passwd kibana
# 赋予用户权限
chown -R kibana:kibana /usr/local/kibana-7.9.3-linux-x86_64/
然后使用命令启动:
#切换用户
su kibana
#非后台启动,关闭shell窗口即退出
./bin/kibana
#后台启动
nohup ./bin/kibana &
kibana启动时报错“No Living Connections”
启动后在浏览器打开http://116.62.200.41:5601,可以看到kibana的web交互界面:
点击“Index Management”可以看到,有一个springboot-test-2022.08.18
的索引。
点击Index Patterns
菜单栏,然后创建,命名为springboot-*-*。
然后,就可以到Discover栏进行选择,根据springboot-*-*的Index Pattern,然后搜索关键字,就找到相关的日志了!