Linux 搭建ELK日志采集记录
架构
Logback ->Logstash ->elasticsearch -> kibana
分布式环境,通过logback发送日志到logstash,再由logstash将采集到的日志发送到Elasticsearch,使用kibana进行查询采集到的日志。
安装
安装选用版本为最新的7.14.0版本
elasticsearch安装
官网下载地址
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-linux-x86_64.tar.gz
1.解压
解压完成为上图文件夹,进入config文件夹,打开jvm.options文件,如果服务器内存不足,需要修改以下字段,修改成合适的值。
打开elasticsearch.yml文件,在文件末尾增加如下配置
# 节点配置
cluster.name: myelasticsearch
node.name: node-1
# data文件和日志文件路径 如果没有文件夹 手动创建文件夹
path.data: /usr/local/elk/elasticsearch-7.14.0/data
path.logs: /usr/local/elk/elasticsearch-7.14.0/logs
bootstrap.memory_lock: false
#ip 端口
network.host: 0.0.0.0
http.port: 9203
cluster.initial_master_nodes: ["node-1"]
由于elasticsearch不能用root用户启动, 创建elasticsearch用户。
# 添加elk组
groupadd elk
# 添加用户elasticsearch 密码为elasticsearch
useradd elasticsearch -g elk -p elasticsearch
# 将文件所有权修改为elasticsearch
chown -R elasticsearch:elk elasticsearch-7.14.0
# 切换用户 后台启动elasticsearch
su elasticsearch
nohup sh elasticsearch &
检验启动情况 因为本机9200端口冲突 故使用9203端口 如下启动成功
运行中可能出现内存不足的情况 max_map_count过小导致
# 执行命令:
sysctl -w vm.max_map_count=262144
# 查看结果:
sysctl -a|grep vm.max_map_count
# 显示:
vm.max_map_count = 262144
# /etc/sysctl.conf文件最后添加一行 永久生效
vm.max_map_count=262144
logstash安装配置 + logback配置
官网下载地址
https://artifacts.elastic.co/downloads/logstash/logstash-7.14.0-linux-x86_64.tar.gz
logback.xml配置
根据tcp协议传递到对应的端口, logstash监听对应端口, 接收日志信息。
<springProperty scope="context" name="serviceName" source="spring.application.name"/>
<springProperty scope="context" name="profileActive" source="spring.profiles.active"/>
<property name="SERVICE_NAME" value="${serviceName}" />
<property name="PROFILE_ACTIVE" value="${profileActive}" />
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- 发送到本机7777端口 -->
<destination>127.0.0.1:7777</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
<!--输出日志可自定义,可根据自己需要配置-->
{
<!--es索引名称 -->
"indexname":"${SERVICE_NAME} + %d{yyyy-MM-dd}",
<!--应用名称 -->
"appname":"${SERVICE_NAME}",
<!--服务器ip -->
<!-- "host": "%ip",-->
<!--应用端口 -->
<!-- "port": "${PORT}",-->
<!--打印时间 -->
"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
<!--线程名称 -->
"thread": "%thread",
<!--日志级别 -->
"level": "%level",
<!--日志名称 -->
"logger_name": "%logger",
<!--日志信息 -->
"message": "%msg",
<!--日志堆栈 -->
"stack_trace": "%exception",
<!-- ENV -->
"env": "${PROFILE_ACTIVE}"
}
</pattern>
</pattern>
</providers>
</encoder>
<keepAliveDuration>5 minutes</keepAliveDuration>
</appender>
logstash配置
进入config文件夹
修改logstash-sample.yml文件
input {
# 监听7777端口,json类型接收
tcp {
port => 7777
codec => "json"
}
}
output {
# 输出为elasticsearch 索引名称为appname + 时间年月日类型
elasticsearch {
action => "index"
hosts => ["http://localhost:9203"]
index => "%{[appname]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
进入bin文件夹, 启动logstash
nohup sh logstash -f ../config/logstash-sample.yml &
kibana下载地址
官网下载地址
https://artifacts.elastic.co/downloads/kibana/kibana-7.14.0-linux-x86_64.tar.gz
1.解压
2.进入config文件夹, 修改kibana.yml文件
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9203"]
kibana.index: ".kibana"
配置完成,启动kibana
nohup sh kibana &
访问5601端口即可看见kibana运行界面
选择左侧菜单栏->discover 进入筛选界面,通过添加添加filter进行搜索相应的值。
ana.index: “.kibana”
配置完成,启动kibana
```shell
nohup sh kibana &
访问5601端口即可看见kibana运行界面
选择左侧菜单栏->discover 进入筛选界面,通过添加添加filter进行搜索相应的值。