日志收集系统ELK搭建
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⽇志收集系统ELK搭建
⼀、ELK简介
在传统项⽬中,如果在⽣产环境中,有多台不同的服务器集群,如果⽣产环境需要通过⽇志定位项⽬的Bug的话,需要在每台节点上使⽤传统的命令⽅式查询,这样效率⾮常低下。
因此我们需要集中化的管理⽇志,ELK则应运⽽⽣。
ELK=ElasticSeach+Logstash+Kibana,⽇志收集原理如下所⽰。
1、每台服务器集群节点安装Logstash⽇志收集系统插件
2、每台服务器节点将⽇志输⼊到Logstash中
3、Logstash将该⽇志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中
4、浏览器使⽤安装Kibana查询⽇志信息
⼆、Elastic Search
2.1 简介
ElasticSearch是⼀个分布式搜索服务,提供的是⼀组Restful API,底层基于Lucene,采⽤多shard(分⽚)的⽅式保证数据安全,并且提供⾃动resharding的功能。
是⽬前全⽂搜索引擎的⾸选,可以快速的存储、搜索和分析海量数据。
2.2 安装
2.解压:# tar zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz
3. # cd elasticsearch-7.
4.2,配置config⾥的elasticsearch.yml⽂件,配置如下。
: es-application
: es-node-1
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["192.168.1.169"]
cluster.initial_master_nodes: ["es-node-1"]
path.data: /var/data/es
path.logs: /var/log/es
4.常见问题
(1)can not run elasticsearch as root
解决思路:为了安全不允许使⽤root⽤户启动,需要新建⼀个es的账户,如下所⽰。
# adduser es
# passwd es
# chown -R es elasticsearch-7.4.2
# su elasticsearch
启动ES:
# ./bin/elasticsearch
(2)max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决思路:切换到root⽤户修改 # vim /etc/security/limits.conf,在最后⾯追加下⾯内容,其中es 是启动ES的⽤户,不是root。
es hard nofile 65536
es soft nofile 65536
(3)max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决思路:切换到root⽤户修改配置sysctl.conf
#vi /etc/sysctl.conf
添加下⾯配置:
vm.max_map_count=655360
并执⾏命令:
sysctl -p
2.3 启动
后台启动:./elasticsearch -d
停⽌命令:./elasticsearch -stop
2.4 验证
访问 ip:9200,成功显⽰如下json信息
2.5 ES Head
推荐安装chrome插件,也可以下载安装包进⾏安装。
三、Logstash
3.1 简介
Logstash 是⼀个完全开源的⼯具,它可以对你的⽇志进⾏收集、过滤、分析,⽀持⼤量的数据获取⽅法,并将其存储供以后使⽤(如搜索)。
3.2 安装与配置
1.解压logstash-7.4.2,修改logstash-7.4.2/config的logstash.conf⽂件;
2.logstash.conf⽂件配置如下:
input {
tcp {
mode => "server"
host => "192.168.1.169"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "192.168.1.169:9200"
index => "springboot-logstash-%{+YYYY.MM.dd}"
}
}
3.执⾏命令:# ../bin/logstash -f logstash.conf
3.3 Spring boot集成Logstash
1.pom⽂件⾥引⼊jar包
<!--logstash-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.2</version>
</dependency>
2.修改logback-spring.xml
<!--logstash地址-->
<springProperty scope="context" name="LOGSTASH_ADDRESS" source="logstash.address"/>
<!--输出到logstash的appender-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--可以访问的logstash⽇志收集端⼝-->
<destination>${LOGSTASH_ADDRESS}</destination>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"app": "java-study",
"level": "%-5level",
"thread": "%thread",
"logger": "%logger{50} %M %L ",
"message": "%msg"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="LOGSTASH"/>
</root>
3.yml添加配置
logstash:
address: 192.168.1.169:4560
四、Kibana
4.1 简介
Kibana 是⼀个基于浏览器页⾯的Elasticsearch前端展⽰⼯具,也是⼀个开源和免费的⼯具,Kibana可以为 Logstash 和 ElasticSearch 提供的⽇志分析友好的 Web 界⾯,可以帮助您汇总、分析和搜索重要数据⽇志。
4.2 安装与配置
1.解压kibana-7.4.2-linux-x86_64.tar.gz,并修改配置⽂件kibana.yml
server.port: 5601
server.host: "192.168.1.169"
: "kibana"
elasticsearch.hosts: ["http://192.168.1.169:9200"]
xpack.reporting.encryptionKey: "a_random_string"
xpack.security.encryptionKey: "something_at_least_32_characters"
2.执⾏命令 # ./kibana --allow-root
3.配置⽇期格式
4.create index pattern
5.保存⾃定义筛选字段,供后续筛选。