对于一个系统,app,等等,线上排查信息是一件非常头疼的事,尤其在服务端极为凸显,研发人员面对线上问题,首先定位日志,这个只能去服务器下检索日志,输入各种命令行,但是为了服务器的安全,一般不允许研发人员接触服务器,会有运维人员去操作日志,极大的影响效率!如果有可视化操作,检索日志的界面就好了!
ELK是啥?长啥样?
ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和
Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为ELK协议栈
Kibana
Kibana是一款基于 Apache开源协议,使用 Javascript语言编写,为 Elasticsearch提供分析和可视化的 Web
平台。它可以在Elasticsearch的索引中查找,交互数据,并生成各种维度的表图.
Logstash 作为日志搜集器
这种架构是对上面架构的扩展,把一个 Logstash 数据搜集节点扩展到多个,分布于多台机器,将解析好的数据发送到
Elasticsearch server 进行存储,最后在 Kibana 查询、生成日志报表等
Elasticsearch
es详解点击获取
官方地址
安装Docker compose 需要提前安装docker1、进入官网【选则需要的版本 “这里选择的是 linux”】 2、下载命令
curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose3、授权
sudo chmod +x /usr/local/bin/docker-compose4、验证是否成功
docker-compose versionelk部署 需要下载的Docker镜像
docker pull elasticsearch:6.4.0 docker pull logstash:6.4.0 docker pull kibana:6.4.01、创建一个存放logstash配置的目录并上传配置文件 logstash-springboot.conf文件内容
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "es:9200"
index => "springboot-logstash-%{+YYYY.MM.dd}"
}
}
2、创建配置文件存放目录并上传配置文件到该目录
mkdir /mydata/logstash3、docker-compose.yml内容
version: '3'
services:
elasticsearch:
image: elasticsearch:6.4.0
container_name: elasticsearch
environment:
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- "discovery.type=single-node" #以单一节点模式启动
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
volumes:
- /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
- /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
ports:
- 9200:9200
- 9300:9300
kibana:
image: kibana:6.4.0
container_name: kibana
links:
- elasticsearch:es #可以用es这个域名访问elasticsearch服务
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
environment:
- "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
ports:
- 5601:5601
logstash:
image: logstash:6.4.0
container_name: logstash
volumes:
- /mydata/logstash/logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
links:
- elasticsearch:es #可以用es这个域名访问elasticsearch服务
ports:
- 4560:4560
上传到linux服务器并使用docker-compose命令运行
docker-compose up -d
重点【因为elasticsearch不能以root用户启动 挂载理linux权限是不够的,执行一下命令**】**
chmod 777 /mydata/elasticsearch/data1、在logstash中安装json_lines插件
# 进入logstash容器 docker exec -it logstash /bin/bash # 进入bin目录 cd /bin/ # 安装插件 logstash-plugin install logstash-codec-json_lines # 退出容器 exit # 重启logstash服务 docker restart logstash2、关闭防火墙
systemctl stop firewalld
访问地址:http://192.168.56.10:5601
添加配置文件logback-spring.xml让logback的日志输出到logstashnet.logstash.logback logstash-logback-encoder 5.3
**注意appender节点下的destination需要改成你自己的logstash服务地址,比如我的是:192.168.56.10:4560 **
在kibana中查看日志信息 创建index pattern${APP_NAME} ${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log 30 ${FILE_LOG_PATTERN} 192.168.3.101:4560



