1次订单量突增问题,导致了有几个数据没有录库,但是确有支付的记录,啥玩意,还能有这个操作,组内安排问题定位,解决,一看打出来的日志,只有支付有,生成订单这边没有,就相当于是俩眼一抹黑。 处理方案,销售确定有下订单后先按照支付的日志,把订单信息维护上。
搞在线日志和核心业务监控,这看linux的日志还是挺费事的。
如果我们是在springboot的每个服务下面都配置了
1. 不影响程序和不给程序更多的带宽消耗,就没有在xml中直接配置日志同步给es
采用的是本地服务生成日志后,通过FileBeat去监听指定log文件有变化,就同步数据到es中。
这里就要对所有服务提供log日志模板:
参考:
log.info("业务标识 | 业务操作 | 主要记录日志内容 : {}", 变化的参数)方式输出。
log.error("业务标识 | 业务操作 | 主要错误日志内容 : {}", 变化的参数)方式输出。
搭建 elasticsearch / filebeat / logstash/ kibana服务
先安装docker 和docker-compose
version: "2.2"
services:es:image: elasticsearch:7.8.0container_name: elasticsearch ports:- "9200:9200"- "9300:9300"environment:discovery.type: single-node##es的密码ELASTIC_PASSWORD: changemeES_JAVA_OPTS: "-Xmx512m -Xms256m"volumes:- /mydata/elasticsearch/:/usr/share/elasticsearch/data- /opt/elk/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /opt/elk/elasticsearch/plugins:/usr/share/elasticsearch/pluginsls:image: logstash:7.8.0container_name: logstashports:- "5000:5000/tcp"- "5000:5000/udp"- "9600:9600"environment:discovery.type: single-nodeES_JAVA_OPTS: "-Xmx512m -Xms256m"volumes:- /opt/elk/logstach/pipeline:/usr/share/logstash/pipeline- /opt/elk/logstach/logstash.yml:/usr/share/logstash/config/logstash.yml- /opt/elk/logstach/jars:/usr/share/logstash/logstash-core/lib/jars/depends_on:- eskb:image: kibana:7.8.0container_name: kibanaports:- "5601:5601"volumes:- /opt/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.ymldepends_on:- es
在运行docker-compose.yml
然后就是elasticsearch的配置 elasticsearch.yml
## Default Elasticsearch configuration from Elasticsearch base image.
cluster.name: "docker-cluster"
network.host: 0.0.0.0
xpack.license.self_generated.type: trial
xpack.security.enabled: true
xpack.monitoring.collection.enabled: true
logstash.yml 文件配置
## Default Logstash configuration from Logstash base image.
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://ip:9200" ]
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: 账号
xpack.monitoring.elasticsearch.password: 密码
filebeat.yml 文件配置
filebeat.inputs:
- type: logenabled: truepaths: - /home/log-info.log # 文件位置
setup.ilm.enabled: false
setup.template.settings:index.number_of_shards: 1output.elasticsearch:hosts: 'ip:9200'username: "账号"password: "密码"indices:- index: 'springboot-%{+yyyy.MM.dd}' # 对应的索引
kibana.yml文件
##Default kibana configuration from Kibana base image.
server.name: kibana
server.host: 0.0.0.0
i18n.locale: "zh-CN"
server.basePath: "/kibana"
elasticsearch.hosts: [ "http://ip:9200" ]
xpack.security.enabled: true
monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: 账号
elasticsearch.password: 密码
登入kibana ,可以查看索引数据,查看日志,功能比较强大,需要点时间研究。
搭建好:
我要加一个服务到在线日志系统 流程
以A 服务为例子
原来看log-info TAIL -F LOG-INO.LOG
_index : a-log-error-* 查看所有a服务error日志
_index : a-* 查看所有a服务info日志
在配置完filebeat.yml都要重新执行filebeat容器
docker run -d --name=filebeat --restart=always
-v对应文件映射
elastic/filebeat:7.8.0
最终实现现在看,根据时间查看
后面可以配置告警功能,优化日志展示格式。