skywalking 搭建
skywalking
安装
安装服务器: 172.16.118.101
JDK 信息
[root@localhost logs]# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
下载安装包: /home/kenny/Downloads/apache-skywalking-apm-8.9.1.tar.gz
安装位置:/usr/local/skywalking/apache-skywalking-apm-bin
cd /usr/local/skywalking/apache-skywalking-apm-bin/bin
启动日志收集服务:sh oapService.sh
启动不会有日志输出,需要到日志目录查看相关的日志输出情况
[root@localhost ~]# cd /usr/local/skywalking/apache-skywalking-apm-bin/logs/
[root@localhost logs]# ls
oap.log skywalking-oap-server.log webapp-console.log
启动UI服务: sh webappService.sh
默认端口比较容易和其他端口冲突,编辑 webapp.yml
修改端口
[root@localhost skywalking]# vim apache-skywalking-apm-bin/webapp/webapp.yml
server:
port: 12900
修改好文件后,停掉原来的服务,重新启动,访问 http://172.16.118.101:12900/
修改使用 es 存储数据
Agent
IDEA
VM options 添加代理参数
-javaagent:/Users/kenny/skywalking/skywalking-agent/skywalking-agent.jar
Environment variables
SW_AGENT_COLLECTOR_BACKEND_SERVICES=172.16.118.101:11800;SW_AGENT_NAME=redjujubetree
默认情况下,ThreadPool 是不会被代理,无法获取 traceId 的相关的信息,开启此功能需要将 bootstrap-plugins apm-jdk-threadpool-plugin.jar 拷贝到 plugins 目录下来开启此功能
logback
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 引入 Spring Boot 默认的 logback XML 配置文件 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 控制台 Appender -->
<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %tid %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<appender name="console" 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}</Pattern>
</layout>
</encoder>
</appender>
<!-- 从 Spring Boot 配置文件中,读取 spring.application.name 应用名 -->
<springProperty name="applicationName" scope="context" source="spring.application.name" />
<property name="FILE_LOG_PATTERN" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } %tid --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!-- 日志文件的路径 -->
<property name="LOG_FILE" value="/Users/kenny/IdeaProjects/example/logs/${applicationName}.log"/>
<!-- 日志文件 Appender -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE}</file>
<!--滚动策略,基于时间 + 大小的分包策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<maxHistory>7</maxHistory>
<maxFileSize>10MB</maxFileSize>
</rollingPolicy>
<!-- 日志的格式化 -->
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>${FILE_LOG_PATTERN}</Pattern>
</layout>
</encoder>
</appender>
<!-- 设置 Appender -->
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</root>
</configuration>
添加用户名和密码
为 skywalking 添加密码登录设置, skywalking 在后期的版本中没有不再支持直接在yaml 文件中配置明文的用户名称和密码,这里我们借助NGINX的验证能力进行操作
安装 htpasswd 工具
centos
sudo yum install httpd-tools
生成密码文件
htpasswd -c /etc/nginx/.htpasswd skywalking
若需要为已有文件添加新用户:
htpasswd /etc/nginx/.htpasswd another_user
修改 Nginx 配置
server {
listen 80;
server_name localhost;
#配置全局密码, 如果需要部分访问需要密码,可以将一下两个配置放在指定的location 映射之下
auth_basic "enter the username and password";
auth_basic_user_file /usr/local/nginx/password;
location / {
proxy_pass http://127.0.0.1:12900;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}