ES学习(四)项目集成

四、SpringBoot集成ES

这个没啥好说的,直接上代码

zhangcheng/es

五、ELK+Skywalking

5.1 SkyWalking安装及springboot整合

链路追踪是微服务查问题的一个神器,目前主要的产品有skywalking(sw)、zipkin、cat、sleuth,我这边感觉sw用的最爽就讲讲他的使用。

5.1.1 下载解压

下载地址:Downloads | Apache SkyWalking

选择最新的es7版本,下载比较慢,下载完成后解压

ES学习(四)项目集成_第1张图片

ES学习(四)项目集成_第2张图片

如上图,skywalking使用还是比较简单的,我们先了解下其工作方式及目录结构

skywalking通过探针javaagent的方式监控服务,并传到后台处理,在客户端(webapp)提供查询等功能,后台支持多种数据库如mysql、es,默认使用h2,我们当然是使用es啦。

 5.1.2 修改配置并启动

修改后端配置文件:config/application.yml 

选择默认的单机模式,这个配置很好懂的,就是从下面选一个,如果想搞集群selector可以选择并配置对应的注册中心ES学习(四)项目集成_第3张图片

数据库由h2改成elasticsearch7ES学习(四)项目集成_第4张图片

找到下面的elasticsearch7,修改连接地址为本机ip:192.168.42.101:9200,用户名密码为我们之前设置的elastic/123456ES学习(四)项目集成_第5张图片

修改前端配置文件:webapp/webapp.yml

修改默认的8080端口号为8070ES学习(四)项目集成_第6张图片

 启动服务:到bin目录启动服务 ./startup.sh ES学习(四)项目集成_第7张图片

 到logs目录使用tail -f skywalking-oap-server.log查看启动日志,只要不报错一般就是成功了。ES学习(四)项目集成_第8张图片

查看es,会发现生成了一堆sw索引。然后我的es内存溢出了^_^heap out of memory,我之前搞的比较小,启动命令里设置的才128m,可以搞大一点。ES学习(四)项目集成_第9张图片

  5.1.3  skywalking整合springboot

前面说过sw使用的javaagent,所以要把目录最上面的agent复制到和springboot项目同一台机器上,我因为是本地运行的,所以干脆就贴到项目里了ES学习(四)项目集成_第10张图片

ES学习(四)项目集成_第11张图片

点击项目的edit configurations,在vm options里添加如下jvm配置,然后启动项目

-javaagent:D:\studyspace\es\src\main\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=es
-Dskywalking.collector.backend_service=192.168.42.101:11800

ES学习(四)项目集成_第12张图片

第一行就是javaagent指向那个skywalking-agent.jar的地址。
第二行是当前服务在sw中的名字。
第三行是连接sw的地址,这个如果在同一台机器就不用填了。配置地址如下图:

ES学习(四)项目集成_第13张图片config/application.yml ES学习(四)项目集成_第14张图片

此时使用刚才配置的前端8070端口访问sw,可以看到我们的es服务。如果存在多台服务的并且有调用关系的话,使用sw可以很方便的查看,这个我就不搞了ES学习(四)项目集成_第15张图片

5.2 日志链路追踪

没弄得出来,先记个笔记

## elk 安装 官网版
https://www.elastic.co/guide/en/elasticsearch/reference/7.16/getting-started.html

### 配置
#### es配置 新建文件/root/docker/es/config/elasticsearch.yml[data/plugins]
network.host: 0.0.0.0
xpack.security.enabled: true
discovery.type: single-node

#### kibana配置 新建文件/root/docker/kibana/config/kibana.yml
server.host: "0.0.0.0"
elasticsearch.username: "kibana_system"
elasticsearch.password: "123456"

### es
docker network create elastic
docker run --name es --net elastic -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms256m -Xmx1024m" \
-v /root/docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /root/docker/es/data:/usr/share/elasticsearch/data \
-v /root/docker/es/plugins:/usr/share/elasticsearch/plugins \
-d docker.elastic.co/elasticsearch/elasticsearch:7.16.0

#### es启动初始化密码
docker exec -it es /bin/bash
./bin/elasticsearch-setup-passwords interactive

### kibana
docker pull docker.elastic.co/kibana/kibana:7.16.0
docker run --name kibana --net elastic -p 5601:5601 \
-e "ELASTICSEARCH_HOSTS=http://es:9200" \
-v /root/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-d docker.elastic.co/kibana/kibana:7.16.0

### logstash
下载:https://www.elastic.co/cn/downloads/logstash
docker下载:https://www.elastic.co/guide/en/logstash/current/docker.html
./logstash -e "input {stdin {}} output {stdout{}}"
./logstash -e "input {stdin {}} output {stdout{codec => plain}}" //plain/line
./logstash -f ../config/std_es.conf //指定配置文件启动
input { stdin { } }output { elasticsearch { hosts => ["http://192.168.42.101:9200"] index => "mystdin" user => "elastic" password => "123456" } }

#### 日志整合 需要结合logback和sw的grpcLog
./logstash -f ../config/es.conf [-t]
es.conf: input { file { path => "/root/logs/es/info.log" start_position => "beginning" codec => multiline { pattern => "^\[" negate => true what => "previous" } } }filter{ grok { match => { message => "\[%{TIMESTAMP_ISO8601:time}\]\[%{LOGLEVEL:level}%{SPACE}\]\[%{NOT SPACE:loggerclass}%{SPACE}\]%{SPACE}\[%{DATA:nodename}\]%{SPACE} %{GREEDYDATA:msg}" } } } output { elasticsearch { hosts => ["http://192.168.42.101:9200"] user => "elastic" password => "123456" index => "es-log-text-%{+YYYY.MM.dd}" template_name => "es_template*" template => "/root/logstash/logstash-7.16.3/config" }stdout{} }
es_template.json: {"template":"es-log-text-%{+YYYY.MM.DD}","settings":{"index.refresh_interval":"1s"},"mappings":{"properties":{"time":{"type":"date"},"level":{"type":"keyword"},"loggerclass":{"type":"keyword"},"nodename":{"type":"keyword"},"msg":{"type":"text"},"message":{"type":"text"}}}}
//读取指定位置的log文件进入es,需要logback指定日志文件位置,还有sw日志的整合[traceId],搞定这个就可以了,上面模板是匹配日志文件格式的

### 错误提示 IPv4 forwarding is disabled. Networking will not work
vim /etc/sysctl.conf         //修改文件
net.ipv4.ip_forward=1        //修改成1,若没有则添加
systemctl restart network    //重启网络服务让配置生效

你可能感兴趣的:(es,linux,数据库,elasticsearch,大数据,big,data)