Skip to content

Commit

Permalink
Merge pull request #33 from this-is-spear/chore/pinpoint
Browse files Browse the repository at this point in the history
apm 툴로 pinpoint 환경을 구성한다.
  • Loading branch information
this-is-spear authored Jan 16, 2024
2 parents 2841ac9 + d2f730d commit 7a66b15
Show file tree
Hide file tree
Showing 132 changed files with 707 additions and 1,387 deletions.
176 changes: 176 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
PINPOINT_VERSION=latest
SPRING_PROFILES=release

# Used to make collector ip fixed for external microservices which uses pinpoint agent with collector ip.
PINPOINT_NETWORK_SUBNET=172.24.0.0/27
COLLECTOR_FIXED_IP=172.24.0.30

#zookeeper information required
PINPOINT_ZOOKEEPER_ADDRESS=zoo1

### Pinpoint-Hbase

PINPOINT_HBASE_NAME=pinpoint-hbase
AGENTINFO_TTL=31536000
AGENTSTATV2_TTL=5184000
APPSTATAGGRE_TTL=5184000
APPINDEX_TTL=31536000
AGENTLIFECYCLE_TTL=5184000
AGENTEVENT_TTL=5184000
STRINGMETADATA_TTL=15552000
APIMETADATA_TTL=31536000
SQLMETADATA_TTL=15552000
TRACEV2_TTL=5184000
APPTRACEINDEX_TTL=5184000
APPMAPSTATCALLERV2_TTL=5184000
APPMAPSTATCALLEV2_TTL=5184000
APPMAPSTATSELFV2_TTL=5184000
HOSTAPPMAPV2_TTL=5184000

### Pinpoint-mysql
MYSQL_ROOT_PASSWORD=root123
MYSQL_USER=admin
MYSQL_PASSWORD=admin
MYSQL_DATABASE=pinpoint

### Pinpoint-Web

PINPOINT_WEB_NAME=pinpoint-web

WEB_SERVER_PORT=8080

WEB_LOGGING_LEVEL_ROOT=INFO

CLUSTER_ENABLE=true

ADMIN_PASSWORD=admin

#analytics
CONFIG_SENDUSAGE=true

CONFIG_SHOW_APPLICATIONSTAT=true

#mysql information required if used
JDBC_DRIVERCLASSNAME=com.mysql.jdbc.Driver
SPRING_DATASOURCE_HIKARI_JDBCURL=jdbc:mysql://pinpoint-mysql:3306/pinpoint?characterEncoding=UTF-8
SPRING_DATASOURCE_HIKARI_USERNAME=admin
SPRING_DATASOURCE_HIKARI_PASSWORD=admin
SPRING_METADATASOURCE_HIKARI_JDBCURL=jdbc:mysql://pinpoint-mysql:3306/pinpoint?characterEncoding=UTF-8
SPRING_METADATASOURCE_HIKARI_USERNAME=admin
SPRING_METADATASOURCE_HIKARI_PASSWORD=admin

### Pinpoint-Collector

PINPOINT_COLLECTOR_NAME=pinpoint-collector

CLUSTER_ENABLE=true

COLLECTOR_LOGGING_LEVEL_ROOT=INFO

#grpc
COLLECTOR_RECEIVER_GRPC_AGENT_PORT=9991
COLLECTOR_RECEIVER_GRPC_STAT_PORT=9992
COLLECTOR_RECEIVER_GRPC_SPAN_PORT=9993

#thrift
COLLECTOR_RECEIVER_BASE_PORT=9994
COLLECTOR_RECEIVER_STAT_UDP_PORT=9995
COLLECTOR_RECEIVER_SPAN_UDP_PORT=9996

FLINK_CLUSTER_ENABLE=true
FLINK_CLUSTER_ZOOKEEPER_ADDRESS=zoo1

### Pinpoint-Batch

PINPOINT_BATCH_NAME=pinpoint-batch

BATCH_SERVER_PORT=8079

BATCH_LOGGING_LEVEL_ROOT=INFO

CLUSTER_ENABLE=true

ADMIN_PASSWORD=admin

#analytics
CONFIG_SENDUSAGE=true

#flink server information required if used
BATCH_FLINK_SERVER=pinpoint-flink-jobmanager

CONFIG_SHOW_APPLICATIONSTAT=true

#data source information required if used
SPRING_DATASOURCE_HIKARI_JDBCURL=jdbc:mysql://pinpoint-mysql:3306/pinpoint?characterEncoding=UTF-8
SPRING_DATASOURCE_HIKARI_USERNAME=admin
SPRING_DATASOURCE_HIKARI_PASSWORD=admin
SPRING_METADATASOURCE_HIKARI_JDBCURL=jdbc:mysql://pinpoint-mysql:3306/pinpoint?characterEncoding=UTF-8
SPRING_METADATASOURCE_HIKARI_USERNAME=admin
SPRING_METADATASOURCE_HIKARI_PASSWORD=admin

#mail server information required if used
ALARM_MAIL_SERVER_URL=smtp.gmail.com
ALARM_MAIL_SERVER_PORT=587
ALARM_MAIL_SERVER_USERNAME=username
ALARM_MAIL_SERVER_PASSWORD=password
ALARM_MAIL_SENDER_ADDRESS=[email protected]
ALARM_MAIL_TRANSPORT_PROTOCOL=smtp
ALARM_MAIL_SMTP_PORT=25
ALARM_MAIL_SMTP_AUTH=false
ALARM_MAIL_SMTP_STARTTLS_ENABLE=false
ALARM_MAIL_SMTP_STARTTLS_REQUIRED=false
ALARM_MAIL_DEBUG=false

### Pinpoint-Agent

PINPOINT_AGENT_NAME=pinpoint-agent

#network module(GRPC,THRIFT)
PROFILER_TRANSPORT_MODULE=GRPC

#collector information required
COLLECTOR_IP=pinpoint-collector
PROFILER_TRANSPORT_AGENT_COLLECTOR_PORT=9991
PROFILER_TRANSPORT_METADATA_COLLECTOR_PORT=9991
PROFILER_TRANSPORT_STAT_COLLECTOR_PORT=9992
PROFILER_TRANSPORT_SPAN_COLLECTOR_PORT=9993
COLLECTOR_TCP_PORT=9994
COLLECTOR_STAT_PORT=9995
COLLECTOR_SPAN_PORT=9996

# Sampling Configurations
PROFILER_SAMPLING_TYPE=COUNTING
PROFILER_SAMPLING_COUNTING_SAMPLING_RATE=1
PROFILER_SAMPLING_PERCENT_SAMPLING_RATE=100
PROFILER_SAMPLING_NEW_THROUGHPUT=0
PROFILER_SAMPLING_CONTINUE_THROUGHPUT=0

AGENT_ID=app-in-docker
APP_NAME=quickapp

AGENT_DEBUG_LEVEL=INFO


### Pinpoint-flink

PINPOINT_FLINK_NAME=pinpoint-flink
FLINK_WEB_PORT=8081


### Pinpoint-quickstart

APP_PORT=8085

### Pinpoint-pinot
SPRING_PINOTDATASOURCE_HIKARI_JDBCURL=jdbc:pinot://pinot-controller:9000
SPRING_PINOTDATASOURCE_HIKARI_USERNAME=admin
SPRING_PINOTDATASOURCE_HIKARI_PASSWORD=admin

### Pinpoint-kafka
PINPOINT_METRIC_KAFKA_BOOTSTRAP_SERVERS=pinpoint-kafka:9092

### Pinpoint redis
SPRING_DATA_REDIS_HOST=pinpoint-redis
SPRING_DATA_REDIS_PORT=6379
SPRING_DATA_REDIS_USERNAME=default
SPRING_DATA_REDIS_PASSWORD=
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "pinpoint"]
path = pinpoint
url = https://github.com/pinpoint-apm/pinpoint-docker
11 changes: 8 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
FROM openjdk:17-jdk
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

ARG PINPOINT_VERSION
ARG AGENT_ID
ARG APP_NAME
ENV JAVA_OPTS="-javaagent:/pinpoint-agent/pinpoint-bootstrap-${PINPOINT_VERSION}.jar -Dpinpoint.agentId=${AGENT_ID} -Dpinpoint.applicationName=${APP_NAME}"
COPY ./build/libs/*SNAPSHOT.jar app.jar

CMD echo 'sleep for initialze hbase' && sleep 30 && java -jar ${JAVA_OPTS} app.jar
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Numble Challenge - Banking API

- 테스트 할 API는 [API 문서](https://this-is-spear.github.io/hello-banking-api/src/main/resources/static/docs/index.html)에서 확인 할 수 있습니다.
- 서버는 `run.sh` 를 실행하면 됩니다.
-

### Development Environment

Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {
id "org.asciidoctor.jvm.convert" version "3.3.2"
}

group = 'numble'
group = 'bankingapi'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

Expand Down
146 changes: 121 additions & 25 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,134 @@
version: "3.8"
version: "3.6"

services:
database:
container_name: mysql_db
image: mysql/mysql-server:8.0-aarch64
money-transfer:
deploy:
replicas: 1
build:
context: ./
dockerfile: Dockerfile
args:
- PINPOINT_VERSION=2.5.3
- AGENT_ID=java-app-in-docker
- APP_NAME=money-transfer
- SPRING_PROFILES=local
volumes:
- data-volume:/pinpoint-agent
ports:
- "80:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://host.docker.internal:3307/money_transfer_service?characterEncoding=UTF-8&serverTimezone=Asia/Seoul
SPRING_DATASOURCE_USERNAME: 'root'
SPRING_DATASOURCE_PASSWORD: 'password!'
depends_on:
- pinpoint-web
- pinpoint-hbase
- pinpoint-agent
- pinpoint-collector
- money-transfer-database
networks:
- pinpoint

money-transfer-database:
image: mysql:8.0
environment:
MYSQL_DATABASE: money_transfer_service
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: password!
MYSQL_ROOT_PASSWORD: 'password!'
TZ: 'Asia/Seoul'
ports:
- "3306:3306"
volumes:
- ./mysql/conf.d:/etc/mysql/conf.d
- "3307:3306"
command:
- "mysqld"
- "--character-set-server=utf8mb4"
- "--collation-server=utf8mb4_unicode_ci"
- "--innodb_buffer_pool_size=256M"
networks:
- pinpoint

application:
container_name: money-transfer
deploy:
replicas: 1
restart: on-failure
build:
context: ./
dockerfile: Dockerfile
ports:
- "8080:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://host.docker.internal:3306/money_transfer_service?characterEncoding=UTF-8&serverTimezone=Asia/Seoul
SPRING_DATASOURCE_USERNAME: "root"
SPRING_DATASOURCE_PASSWORD: "password!"
depends_on:
database:
condition: service_healthy
pinpoint-hbase:
extends:
file: ./pinpoint/docker-compose.yml
service: pinpoint-hbase
networks:
- pinpoint

pinpoint-web:
extends:
file: ./pinpoint/docker-compose.yml
service: pinpoint-web
networks:
- pinpoint

pinpoint-collector:
extends:
file: ./pinpoint/docker-compose.yml
service: pinpoint-collector
networks:
- pinpoint

pinpoint-agent:
extends:
file: ./pinpoint/docker-compose.yml
service: pinpoint-agent
networks:
- pinpoint

zoo1:
extends:
file: ./pinpoint/docker-compose.yml
service: zoo1
networks:
- pinpoint

zoo2:
extends:
file: ./pinpoint/docker-compose.yml
service: zoo2
networks:
- pinpoint

zoo3:
extends:
file: ./pinpoint/docker-compose.yml
service: zoo3

jobmanager:
extends:
file: ./pinpoint/docker-compose.yml
service: jobmanager
networks:
- pinpoint

taskmanager:
extends:
file: ./pinpoint/docker-compose.yml
service: taskmanager
networks:
- pinpoint

redis:
extends:
file: ./pinpoint/docker-compose.yml
service: redis
networks:
- pinpoint

pinpoint-mysql:
extends:
file: ./pinpoint/docker-compose.yml
service: pinpoint-mysql
networks:
- pinpoint

volumes:
data-volume:
hbase_data:
mysql_data:

networks:
pinpoint:
driver: bridge
ipam:
config:
- subnet: ${PINPOINT_NETWORK_SUBNET}
Empty file removed mysql/conf.d
Empty file.
1 change: 1 addition & 0 deletions pinpoint
Submodule pinpoint added at afcbb1
9 changes: 9 additions & 0 deletions run.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
#!/bin/bash

# Git Submodule 업데이트

sudo git submodule update --init --recursive

if [ $? -ne 0 ]; then
echo "Git submodule update failed. Exiting script."
exit 1
fi

# Gradle 빌드 실행
sudo ./gradlew clean build

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package numble.bankingapi;
package bankingapi;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package numble.bankingapi;
package bankingapi;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
Expand Down
Loading

0 comments on commit 7a66b15

Please sign in to comment.