https://pinpoint-apm.github.io/pinpoint/applicationinspector.html#application-inspector-1
How to use Application Inspector | Leading Open-Source APM
English | 한글 Application Inspector 1. Introduction Application inspector provides an aggregate view of all the agent’s resource data (cpu, memory, tps, datasource connection count, etc) registered under the same application name. A separate view is p
pinpoint-apm.github.io
해당 레퍼런스를 토대로 현재 연결 관계에서 Inspector 기능을 활성화해보자.
Flink 설치
Apache Flink:
Apache Flink은 대규모 데이터 스트리밍 처리를 위한 오픈소스 플랫폼이다.
데이터베이스가 아닌, 실시간 데이터 처리 및 배치 처리를 지원하는 스트리밍 프레임워크로, 복잡한 데이터 처리 작업을 효율적으로 수행할 수 있도록 설계되었다.
현재 Collector(정확히는 Zookeeper와 Hbase가 존재하는 서버) 서버에 flink를 추가적으로 설치할 것이다.
물론 이렇게 하지 않아도 되나 가상 환경에서 포트포워딩이 번거롭기에 한 서버에 넣어주었다.
https://github.com/pinpoint-apm/pinpoint
현재 Pinpoint 2.3.x 버전을 적용하였으므로 이에 맞게 Flink 8 버전(정확히 말하자면 1.8.x)을 사용할 것이다.
https://flink.apache.org/downloads/
본인의 경우 다음 버전을 설치하였다. (Binaries 파일을 다운받을 것.)
Apache Flink 1.8.2 - 2019-09-11 (Source, Binaries, Docs, Javadocs, Scaladocs )
환경 설정
ReadME : 아래 부분은 내 실패한 기록을 저장한 것이다.
이럴 필요 없이 'https://github.com/pinpoint-apm/pinpoint/releases' 릴리즈에서 flink run에 필요한 job 파일을 배부하니, 내부 properties만 조금 바꿔서 사용하자.
..path/pinpoint-2.3.x/pinpoint-2.3.x/flink/src/main/resources/profiles/release .. 이런 식의 핀포인트 내부 경로의 properties를 변경해야 한다. -> 이후 jar 파일로 압축 후 구동
나의 경우 해당 conf 파일만 따로 받아서 값을 변경했다.. 당연하게도 이러면 설정이 적용되지 않는다
해당 깃허브에서 properties 파일을 받을 수 있다. 이를 conf 디렉토리 하위로 옮겨주었다.
내부 문서를 환경에 맞게 수정해주어야 한다.
자세한 부분은 해당 하위 항목을 참조할 것
https://pinpoint-apm.gitbook.io/pinpoint/documents/application-inspector#5.
How to use Application Inspector - Pinpoint
Application inspector provides an aggregate view of all the agent's resource data (cpu, memory, tps, datasource connection count, etc) registered under the same application name. A separate view is provided for the application inspector with stat charts si
pinpoint-apm.gitbook.io
flink.cluster.enable=true
flink.cluster.zookeeper.address=YOUR_ZOOKEEPER_ADDRESS
flink.cluster.zookeeper.sessiontimeout=3000
flink.cluster.zookeeper.retry.interval=5000
flink.cluster.tcp.port=19994
나의 경우 hbase(sa이나 자체적으로 타 폴더에 zookeeper 역시 존재)가 같은 서버 내에 있기 때문에 별다르게 변경할 필요는 없었다.
flink 역시 sa로 실행하기에, 다음 설정을 local로 설정하겠다.
해당 설정을 할 경우 run이 되지 않는다. server로 변경할 것!
관련 repo : https://github.com/pinpoint-apm/pinpoint/issues/4178
# configure l4 ip address to ignore health check logs
collector.l4.ip=
# base data receiver config ---------------------------------------------------------------------
collector.receiver.base.ip=0.0.0.0
collector.receiver.base.port=19994
# number of tcp worker threads
collector.receiver.base.worker.threadSize=8
# capacity of tcp worker queue
collector.receiver.base.worker.queueSize=1024
# monitoring for tcp worker
collector.receiver.base.worker.monitor=true
# change OS level read/write socket buffer size (for linux)
#sudo sysctl -w net.core.rmem_max=
#sudo sysctl -w net.core.wmem_max=
# check current values using:
#$ /sbin/sysctl -a | grep -e rmem -e wmem
# number of agent event worker threads
collector.agentEventWorker.threadSize=4
# capacity of agent event worker queue
collector.agentEventWorker.queueSize=1024
#collector.admin.password=
#collector.admin.api.rest.active=
#collector.admin.api.jmx.active=
collector.spanEvent.sequence.limit=10000
# flink cluster
flink.cluster.enable=true
flink.cluster.zookeeper.address=localhost
flink.cluster.zookeeper.znode_root=/pinpoint-cluster
flink.cluster.zookeeper.sessiontimeout=3000
flink.cluster.zookeeper.retry.interval=5000
flink.cluster.tcp.port=19994
# flink env init
flink.StreamExecutionEnvironment=server
flink.sourceFunction.Parallel=1
마찬가지로, hbase 역시 설치 후 환경설정을 해주어야 한다.
+ collector 역시 환경설정이 필요하다.
2.3.x의 경우 'path/pinpoint-2.3.x/pinpoint-2.3.x/collector/src/main/resources/profiles/release'
하위에 존재한다. zookeeper 경로를 설정해주자.
Pinpoint-flink 빌드
https://github.com/pinpoint-apm/pinpoint/tree/master/flink
레퍼런스로 제공된 flink 프로젝트를 빌드하고, target 폴더 하위에 생성된 streaming job 파일을 얻어야 한다.
이 과정에서 생성된 pinpoint-flink-job-{pinpoint.version}.jar 파일은 Flink 서버에서 실행되어야 하는 것이다.
따라서 Pinpoint에서 제공하는 특별한 Flink 모듈을 빌드하고, 그 결과로 생성된 .jar 파일을 실행해야 한다.
Maven을 통한 jar 추출
Maven을 설치하고, 이를 통해 빌드 후 jar 파일을 뽑아내었다.
https://kim-dragon.tistory.com/119
[Linux] Centos Maven 설치하기 (maven 3.6)
maven 3.6 install 메이븐 다운로드 페이지 접속 : https://maven.apache.org/download.cgi 다운로드 및 설치 cd /usr/local wget http://mirror.apache-kr.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz tar -xvf apache-maven-3.6.3-
kim-dragon.tistory.com
1. 레포지토리 복제
git clone https://github.com/pinpoint-apm/pinpoint.git 명령어로 전체 레포지토리를 로컬 시스템에 복제한다.
혹은 FTP로 파일 자체를 이동해도 상관없다.
2. 프로젝트 디렉토리로 이동
cd pinpoint/flink 명령어로 flink 디렉토리로 이동한다.
3. 빌드 실행
mvn clean package 명령어를 실행하여 프로젝트를 빌드한다. 이 명령어는 필요한 의존성을 다운로드하고, 소스 코드를 컴파일하며, 테스트를 실행하고, JAR 파일을 생성한다.
빌드가 완료되면, 생성된 JAR 파일은 target 디렉토리 내에서 찾을 수 있다.
.. 오류
하지만 왜인지 모르게 내부 의존성 문제로 에러가 나는 듯 하다.
이유는 version을 3.0.0-SNAPSHOT으로 받았기 때문이었다.
https://mvnrepository.com/artifact/com.navercorp.pinpoint/pinpoint-flink/2.3.3
flink 폴더에서 mvn clean package를 실행한다.
근데 2.3.x버전에서도 에러가 나는게, 기본적으로 pom.xml에서 2.3.4-SNAPSOHOT으로 버전이 설정되어 있다. 이를 2.3.3으로 고쳐주자.
+ 상위 pom에서 JAVA 7, 9도 요구하는 것 같다. 일단 해당 변수 역시 추가하니 BUILD를 성공할 수 있었다.
/etc 하위의 profile 스크립트에서 해당 환경 변수를 추가하자.
혹시 이래도 에러가 난다면 pom.xml을 확인하거나 MVN에서 직접 의존성을 import하여 빌드해볼 것.
pinpoint-flink-job-{pinpoint.version}.jar 을 준비하도록 하자.
Flink 실행
Flink의 bin 디렉토리에 있는 flink 실행 파일을 사용하여 job을 시작한다.
나의 경우 bin 폴더 안에 받은 jar을 심었다.
./flink run /path/to/your/pinpoint-flink-job-{pinpoint.version}.jar
LocalStreamEnvironment 에러 발생
==> 주 원인은 root에서 build 하지 않아서인듯
'프로젝트 > Pinpoint, Scouter 구축(APM)' 카테고리의 다른 글
Scouter 설치와 적용 (0) | 2024.01.23 |
---|---|
Pinpoint - flink 연동 2 (0) | 2024.01.22 |
pinpoint - dapper, 분산 추적에 대해 (0) | 2024.01.18 |
Pinpoint - Hbase 웹 UI 이슈 (Hbase random port issue) (0) | 2024.01.18 |
Pinpoint 구축 중간 정리 (0) | 2024.01.17 |