Whatap모니터링 사용중에 민감성 데이터 이슈로 인해
새로운 모니터링 툴 찾는중에 기존에 쓰고 있던 Elasticsearch, Kibana에 있는 APM 서비스를 사용해보았다.
기존에 쓰고 있던 ELK docker-compose.yml 파일에 Elastic APM Server 추가
apm-server: container_name: apm-server image: docker.elastic.co/apm/apm-server:$ELK_VERSION ports: - 8200:8200 depends_on: - elasticsearch - kibana networks: - elk command: > apm-server -e -E apm-server.rum.enabled=true -E apm-server.rum.allow_origins=["*"] -E apm-server.rum.allow_headers=[] -E setup.kibana.host=kibana:5601 -E setup.template.settings.index.number_of_replicas=0 -E apm-server.kibana.enabled=true -E apm-server.kibana.host=kibana:5601 -E output.elasticsearch.hosts=["elasticsearch:9200"]
[Java]
1. 루트 디렉토리에 agent 디렉토리 만들고 Elastic APM Agent 추가
2. Dockerfile의 Entrypoint 부분에 Agent Jvm Option 추가ENTRYPOINT ["java", \ "-javaagent:/apm-agent.jar", \ "-Delastic.apm.service_name=cc-ocr-service", \ "-Delastic.apm.server_urls=http://10.10.0.248:8200", \ "-Delastic.apm.application_packages=com.carmerce", \ "-Delastic.apm.capture_headers=true", \ "-Delastic.apm.capture_body=transactions", \ "-Delastic.apm.sanitize_field_names=", \ "-Delastic.apm.enviorment=dev", \ "-jar" , \ "/cc-ocr-service.jar"]※ 이 부분을 elasticapm.properties로 빼서 하는 방법이 있는거 같은데 아직 적용 방법을 모르겠어서 리서치 필요
3. Application 실행 후 APM의 Services에 들어오는 지 확인
[참조]
https://www.elastic.co/guide/en/apm/agent/java/current/config-core.html
[Node.js]
1. Elastic APM Agent을 npm install 한다.npm install elastic-apm-node --save
- elastic-apm-node.js 파일 생성
module.exports = { serviceName: '<Service Name>', serverUrl: '<APM Server URL>', captureBody: 'all', -- request body 설정 부분 sanitizeFieldNames: '', -- 공백으로 해야 Parameter 부분이 보임 environment: 'dev' -- profile }
- 제일 먼저 실행 되는 js 혹은 ts 파일 맨 위에 해당 옵션 추가
require('elastic-apm-node').start({ configFile: '/elastic-apm-node.js' });※ Node.js 애플리케이션의 경우 Kubernetes로 배포 되기 때문에 Configmap에
elastic-apm-node.js 파일을 생성하는 부분 작성해야함.
[참조]
https://www.elastic.co/guide/en/apm/agent/nodejs/current/configuring-the-agent.html#agent-configuration-object

Java 와 Node 애플리케이션이 올라가 있는 것 확인
Transactions, Errors, Metrics(리소스 사용량 확인) 등 확인 가능하고
captureBody, sanitizeFieldNames 옵션을 통해 Transactions 에서 트래킹 해보면서
Request Body의 Parameter 까지 확인 할 수 있다.
- 현재 Java 애플리케이션의 경우 Enviorment가 적용 안되는 모습인데 적용 하여 Profile 별로 확인 할 수 있도록 해야한다.
- APM Server 을 구축하면서 기존에 있던 Opendistro Alerting의 플러그인과 버전 문제로 인해 알림 기능을 잃었는데 새로운 알림 기능을 구축 해야한다.
- Elastic X_Pack의 유료 알림 기능이 있지만 Elastalert 라는 기능으로 알림 기능을 사용 할 수 있다 하여
현재 적용 테스트 중이다.