elk日志搭建
项目结构 springboot + logback + filebeat + elk
1.安装es,最好集群,搭建参考es集群搭建,傻瓜式安装,当然单机也是可以的,es国外镜像很慢建议华为云或其他的国内镜像
2.安装logstash,同样华为云下载,版本尽量选es一致的
cd logstash-7.3.0/config/
vim logstash-sample.conf
内容:input {
beats {
port => 5044
}
tcp {
port => 4569
codec => "json"
}
}
output {
if[appname] != "" {
elasticsearch {
hosts => ["http://192.168.0.146:9200"]
index => "%{appname}-%{+YYYY.MM.dd}"
}
} else {
elasticsearch {
hosts => ["http://192.168.0.146:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
}
port => 5044 logstash 端口 port => 4569tcp端口 下面是es地址和index名称 appname是外部传进来的后面讲解
启动logstash
./bin/logstash -f config/logstash-sample.conf 当然文件名是可以改的
启动成功后会有日志打印
3.安装filebeat
同理也尽量安装版本一致 华为云下载
解压,修改配置 ,启动就是这么简单,修改filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/logs/info.log
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/logs/info-info.log
output.logstash:
hosts: ["10.10.10.10:5044"]
filebeat可以将多个路径下的文件收集到logstash,多配几个inputs就是 hosts 就是logstash地址
启动:
sudo chown root filebeat.yml
sudo ./filebeat -e >filebeat.log 2>&1 &
4.kibana安装
同理尽量选同版本,不要隔太远
下载解压后 修改kibana.yml 配置
# 端口
server.port: 5601
# 指定本机ip让外部能访问
server.host: "0.0.0.0"
# 请求数据指向的elasticsearch服务器
elasticsearch.url: "http://10.10.10.10:9200"
就是这么简单,复杂的没去研究
当然es可能你配了密码
# Elasticsearch用户名 这里其实就是我在服务器启动Elasticsearch的用户名
elasticsearch.username: "es"
# Elasticsearch鉴权密码 这里其实就是我在服务器启动Elasticsearch的密码
elasticsearch.password: "es"
启动nohup ./kibana & 或者 sh kibana &
这样所有软件就安装完成了
ps:在kibana创建
时,浏览器可能会报403权限问题导致创建不成功
解决方案:
扩大存储空间或者在kibana中-DevTool中执行代码即可。
PUT _settings
{
"index": {
"blocks": {
"read_only_allow_delete": "false"
}
}
}
如果需要通过nginx配置访问kibana,又不用二级域名的话要设置kibana的basePath;
在kibana.yml添加server.basePath: "/ki"
然后在nginx配置
location ^~/ki/ {
proxy_set_header Host xxx.xxx.cn;
proxy_pass http://10.10.10.10:5601/;
rewrite ^/ki/(.*)$ /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
}
5.在你的springboot项目里用logback配置,log4j也可以,没去试
引入maven依赖
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.2</version>
</dependency>
logback.xml配置
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<param name="Encoding" value="UTF-8"/>
<remoteHost>10.10.10.10</remoteHost>
<port>4569</port>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" >
<customFields>{"appname":"park-admin"}</customFields>
</encoder>
</appender>
<root level="info">
<appender-ref ref="logstash" />
</root>
这里就用到了上面logstash的配置 首先地址 ,端口注意是logstash tcp端口,appname就是传到logstash配置文件的名称
当然日志里也可自定义es的参数那些,没多去研究了
这样整个日志框架就完成了,打开kibana或者es的head就可以查看日志了
这是我的随笔,只是记录平时的笔记,仅供参考,有错的地方望指出。