skywalking 我们使用 elasticsearch 作为日志存储 版本如下
名称 | 版本 |
---|---|
skywalking | 9.4 |
agent | 8.14 |
elasticsearch | 8.7 |
H2 | 1.14.0(安装els 过程中可能会用到) |
安装环境 | window10/11 |
1.安装elasticsearch8.7
先安装els
1.1 下载
- 下载地址:选择需要的版本,如【Elasticsearch 8.7.0】选择windows版本点击下载即可
- 解压: 直接解压即可,路径中尽量不要有中路和空格
1.2 修改JVM配置(必须否则卡死)
修改 elasticsearch-8.7.0\config 中 jvm.options 文件,否则会导致系统卡死
1.3 启动并修改配置
-
进入到bin 文件夹下执行 elasticsearch.bat
-
如上图,表示启动成功,还有可能提示你没有h2.jar 那么就按照提示下载然后放到指定文件夹下 然后在来执行即可。(可以到logs文件下查看具体日志)
-
浏览器中输入ip:9200来查看是否成功,我这里是本地所以使用 http://127.0.0.1:9200
-
关闭els,然后修改配置,修改config/elasticsearch.yml 文件
默认 ES 监听 9200 与 9300 端口,其中 9200 是 ES 对外提供服务的端口;9300 是 ES 进行集群间通信与数据传输的端口,请确保这两个端口没有被占用
如果需要修改,在下面的配置中进行修改
network.host: 0.0.0.0
http.port: 9200
http.host: 0.0.0.0
transport.host: 0.0.0.0
# 需要开启跨域才能给elasticsearch-head,kibana等连接
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
5. 然后重启
1.4 重置密码
- 自动重置密码
#bin 目录下
.\elasticsearch-reset-password -u elastic
此命令会自动重置一个新的密码
- 手动输入密码
#bin 目录下
.\elasticsearch-reset-password -u elastic -i
手动输入密码
- 然后重启els
到这里els8.7就安装完成了
2. 安装skywalking
再次强调安装环境为windows10/11
2.1 下载
- 下载地址:选择skywalking APM 如下图所示
- 解压:直接用解压工具解压即可(7zip 等解压工具都可以),解压后文件内容如下
2.2 修改配置文件
默认监听 11800(gRPC)与 12800(HTTP) 端口。
上面解压后的文件内容包含 collector 与UI 2部分,
collector:负责收集日志等信息,此部分配置文件在config文件夹下 application.yml 及日志配置 log4j2.xml
UI:用于数据展示 ,此部分配置文件在 webapp 文件夹下 application.yml 及日志配置 log4j2.xml
-
修改collector 配置文件
- 修改application.yml
# 其他不用修改 只修改storage 下的配置 上面安装的elasticsearch 就是这里 要用到 storage: selector: ${SW_STORAGE:elasticsearch} # 这里默认是h2 改为 下面的 elasticsearch elasticsearch: namespace: ${SW_NAMESPACE:"elasticsearch"} #这里的名称要改为 elasticsearch 中的cluster_name,使用http://els的IP地址:9200 这个访问地址即可显示 clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:127.0.0.1:9200} # 这里要修改为 http://els的IP地址:9200(如果改过els的端口,要修改填写后的) protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000} socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000} responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000} numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0} user: ${SW_ES_USER:"elastic"} #这里填写用户名称,一般没做修改就是elastic password: ${SW_ES_PASSWORD:"elastic"} # 这里是密码,上面讲过了修改密码的方法,没修改就把默认给的换上,我这里改成了 elastic # 如果需要修改端口 core: selector: ${SW_CORE:default} default: restHost: ${SW_CORE_REST_HOST:0.0.0.0} restPort: ${SW_CORE_REST_PORT:12800} # 这里是HTTP对外接口 gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} gRPCPort: ${SW_CORE_GRPC_PORT:11800} # 这个是grpc接口用于日志收集
- 修改 log4j2.xml
<!-- 便于测试,这里的level 都改成debug --> <Configuration status="DEBUG"> <Properties> <Property name="log-path">D:/skywalking/logs</Property> <!-- 这里的路劲改为 全路径 便于查找 --> </Properties> <Appenders> <RollingFile name="RollingFile" fileName="${log-path}/skywalking-webapp.log" filePattern="${log-path}/skywalking-webapp-%d{yyyy-MM-dd}-%i.log"> <PatternLayout> <pattern>%d - %c - %L [%t] %-5p %x - %m%n</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="102400KB"/> </Policies> <DefaultRolloverStrategy max="30"/> </RollingFile> </Appenders> <Loggers> <logger name="org.apache.zookeeper" level="DEBUG"/> <logger name="io.grpc.netty" level="DEBUG"/> <Root level="debug"> <AppenderRef ref="RollingFile"/> </Root> </Loggers> </Configuration>
-
修改UI配置
- 修改application.yml 文件
serverPort: ${SW_SERVER_PORT:-18182} #这里模式8080,可修改,这里修改为18182 oapServices: ${SW_OAP_ADDRESS:-http://localhost:12800} #collector的http 接口,没修改端口的无需修改 zipkinServices: ${SW_ZIPKIN_ADDRESS:-http://localhost:9412} #这里是zipkin接口,没配置无需修改
- 修改日志log4j2.xml文件
<!-- 便于测试,这里的level 都改成debug --> <Configuration status="DEBUG"> <Properties> <Property name="log-path">D:/skywalking/logs</Property> <!-- 这里的路劲改为 全路径 便于查找 --> </Properties> <Appenders> <RollingFile name="RollingFile" fileName="${log-path}/skywalking-webapp.log" filePattern="${log-path}/skywalking-webapp-%d{yyyy-MM-dd}-%i.log"> <PatternLayout> <pattern>%d - %c - %L [%t] %-5p %x - %m%n</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="102400KB"/> </Policies> <DefaultRolloverStrategy max="30"/> </RollingFile> </Appenders> <Loggers> <logger name="org.apache.zookeeper" level="DEBUG"/> <logger name="io.grpc.netty" level="DEBUG"/> <Root level="debug"> <AppenderRef ref="RollingFile"/> </Root> </Loggers> </Configuration>
2.3 修改启动文件(bat文件)
这里需要修改启动文件,保险起见,如果skywaling路径或者jdk路径有空格、中文都会导致闪退
文件路径 在bin 目录下
下面的文件请使用文本编辑器打开 如 notepad++ 等
- 修改collector的启动文件 oapService.bat
@echo off
setlocal
set OAP_PROCESS_TITLE=Skywalking-Collector
@REM set OAP_HOME=%~dp0%.. #注释此行
set OAP_HOME=D:\skywalking # 然后指定全路径(修改为你的全路径) 此路径不可有空格
set OAP_OPTS="-Xms256M -Xmx512M -Doap.logDir=%OAP_HOME%\logs"
set CLASSPATH=%OAP_HOME%\config;.;
set CLASSPATH=%OAP_HOME%\oap-libs\*;%CLASSPATH%
set SW_JAVA_HOME=C:\jdk11\jdk-11.0.10 #指定jdk 使用11 此路径不可有空格
# 下面所有的JAVA_HOME 改为 SW_JAVA_HOME
if defined SW_JAVA_HOME (
set _EXECJAVA="%SW_JAVA_HOME%\bin\java"
)
if not defined SW_JAVA_HOME (
echo "SW_JAVA_HOME not set."
set _EXECJAVA=java
)
start "%OAP_PROCESS_TITLE%" %_EXECJAVA% "%OAP_OPTS%" -cp "%CLASSPATH%" org.apache.skywalking.oap.server.starter.OAPServerStartUp
endlocal
- 修改uI的启动文件 webappService.bat
@echo off
setlocal
set WEBAPP_PROCESS_TITLE=Skywalking-Webapp
@REM set WEBAPP_HOME=%~dp0%.. #注释此行
set WEBAPP_HOME=D:\skywalking # 然后指定全路径(修改为你的全路径) 此路径不可有空格
set JARPATH=%WEBAPP_HOME%\webapp
set WEBAPP_LOG_DIR=%WEBAPP_HOME%\logs
if not exist "%WEBAPP_LOG_DIR%" (
mkdir "%WEBAPP_LOG_DIR%"
)
set SW_JAVA_HOME=C:\jdk11\jdk-11.0.10 #指定jdk 使用11 此路径不可有空格
# 下面所有的JAVA_HOME 改为 SW_JAVA_HOME
if defined SW_JAVA_HOME (
set _EXECJAVA="%SW_JAVA_HOME%\bin\java"
)
if not defined SW_JAVA_HOME (
echo "SW_JAVA_HOME not set."
set _EXECJAVA=java
)
start "%WEBAPP_PROCESS_TITLE%" %_EXECJAVA% -Dwebapp.logDir=%WEBAPP_LOG_DIR% -cp %JARPATH%/skywalking-webapp.jar;%JARPATH% org.apache.skywalking.oap.server.webapp.ApplicationStartUp
endlocal
2.4 启动
- 修改完毕后。bin目录下执行 startup.bat
.\startup.bat
-
如图所示:
-
打开浏览器输入 http://skyingwalking安装机器的ip:18182 (uI的端口,上面介绍了)
到这里 skingwalking 的安装就算完成了,下面就是如何使用了
3.安装skywalking-agent
要配合agent 来使用skywalking 进行链路追踪和日志收集
3.1 下载
-
下载地址:选择agents 版本8.14.0
-
解压:使用7zip等解压缩工具,完整目录
-
然后将解压缩后的文件夹 放到 skywalking 目录,便于管理
3.2 使用方法
3.2.1 查看配置文件
配置文件路径:skywalking-agent/config/agent.config
分析其中的配置 便于下面使用
# 这个是使用项目的名称 我们配置时 skywalking.agent.service_name
gent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
# 探针的命名空间,如果在一个微服务链路中配置的不一致那么 就会追踪不到后面的,所以这里我们不配置
agent.namespace=${SW_AGENT_NAMESPACE:}
# 集群,使用的是单机模式
agent.cluster=${SW_AGENT_CLUSTER:}
# 如果配置了权限,使用时需要添加此参数
agent.authentication=${SW_AGENT_AUTHENTICATION:}
# 不统计的请求类型,如需要其他的类型,自行添加
agent.ignore_suffix=${SW_AGENT_IGNORE_SUFFIX:.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg,span}
# 这个指的是一个项目中的各个微服务的名称,如果不配置默认使用uuid 来代替,会无法识别哪个微服务
agent.instance_name=${SW_AGENT_INSTANCE_NAME:}
# 这里是skywalking收集的地址 默认是127.0.0.1:11800 我这里就是这个默认地址,可以不配置的
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
# 日志级别 默认不修改
logging.level=${SW_LOGGING_LEVEL:INFO}
# 指定日志文件名称 默认不修改
logging.file_name=${SW_LOGGING_FILE_NAME:skywalking-api.log}
# 日志输入类型 默认不修改
logging.output=${SW_LOGGING_OUTPUT:FILE}
# 日志路径 默认不修改
logging.dir=${SW_LOGGING_DIR:}
# 暂时就简单介绍这么多配置,其他配置有需要可查询官网 或者自己测试
3.2.2 将联合微服务项目进行实际使用
介绍主流的3种
-
jar 包
- 使用命令时添加指定参数:
java -javaagent:D:\skywalking\skywalking-agent\skywalking-agent.jar -Dskywalking.agent.service_name=appName -Dskywalking.agent.instance_name=serive-name -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dskywalking.logging.file_name=app-agent.log -jar app.jar
# javaagent: 后面跟skywalking-agent.jar(agent项目中那个jar文件)
# appName: 项目名称
# serive-name:微服务名称
# 127.0.0.1:11800 :自己开启的skywalking 收集地址+端口
# app-agent.log :指定的文件名称
-
war 包
- 在tomcat 中的启动文件 catalina.sh 或者 catalina.bat 的文件 头部添加
CATALINA_OPTS="$CATALINA_OPTS D:\skywalking\skywalking-agent\skywalking-agent.jar -Dskywalking.agent.service_name=appName -Dskywalking.agent.instance_name=serive-name -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dskywalking.logging.file_name=app-agent.log"; export CATALINA_OPTS
# javaagent: 后面跟skywalking-agent.jar(agent项目中那个jar文件)
# appName: 项目名称
# serive-name:微服务名称
# 127.0.0.1:11800 :自己开启的skywalking 收集地址+端口
# app-agent.log :指定的文件名称
-
开发工具IDEA
- 打开项目的启动配置窗口 添加vmOptions
-javaagent:D:\skywalking\skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=appName
-Dskywalking.agent.instance_name=1-server
-Dskywalking.collector.backend_service=127.0.0.1:11800
-Dskywalking.logging.file_name=1-agent.log
上面3种是常用的3种使用方式
4.测试链路追踪
使用IDEA的方式来测试
-
发送请求
-
skywalking的UI界面
文章来源:https://www.toymoban.com/news/detail-496127.html
文章来源地址https://www.toymoban.com/news/detail-496127.html
5.配置日志格式,完成skywalking日志收集
- 在每个微服务中新建logback.xml 并配置如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds" packagingData="true">
<!-- 引入springboot 默认的打印日志模板 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<!-- 在原模板中添加 [%red(%tid)] %red() 指定红色可不添加 -->
<property name="CONSOLE_LOG_PATTERN_SW" value="${CONSOLE_LOG_PATTERN_SW:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} [%red(%tid)] %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>${CONSOLE_LOG_PATTERN_SW}</Pattern>
</layout>
</encoder>
</appender>
<!-- 此处配置grpc 推送给skywalking的日志 -->
<appender name="grpc" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="stdout"/>
<appender-ref ref="grpc"/>
</root>
</configuration>
- 然后中重启每个服务,发起请求,然后再去查询log 就有日志了
到了这里,关于skywalking9.4 使用elasticsearch8.7 做存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!