Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/naver/pinpoint into jsp-t…
Browse files Browse the repository at this point in the history
…o-json

Conflicts:
	web/src/main/java/com/navercorp/pinpoint/web/controller/ScatterChartController.java
	web/src/main/webapp/WEB-INF/views/linkStatistics.jsp
	web/src/main/webapp/WEB-INF/views/transactionInfoJsonHash.jsp
  • Loading branch information
jaehong-kim committed Dec 22, 2015
2 parents f5f03ad + 4c7322e commit e39d22f
Show file tree
Hide file tree
Showing 1,437 changed files with 14,103 additions and 144,897 deletions.
52 changes: 29 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,22 @@

[![Build Status](https://travis-ci.org/naver/pinpoint.svg?branch=master)](https://travis-ci.org/naver/pinpoint)

**Pinpoint** is an APM (Application Performance Management) tool for large-scale distributed systems written in Java. Modelled after [Google's Dapper paper](http://research.google.com/pubs/pub36356.html), Pinpoint provides a solution to help analyze the overall structure of the system and how components within them are interconnected by tracing transactions across distributed applications.
**Pinpoint** is an APM (Application Performance Management) tool for large-scale distributed systems written in Java. Modelled after [Dapper](http://research.google.com/pubs/pub36356.html "Google Dapper"), Pinpoint provides a solution to help analyze the overall structure of the system and how components within them are interconnected by tracing transactions across distributed applications.

* Install agents without changing a single line of code
* Minimal impact on performance (approximately 3% increase in resource usage)

## Latest Release (2015/9/9)
We're happy to announce the release of Pinpoint **v1.1.1**. <br/>
Please check release note at (https://github.com/naver/pinpoint/releases/tag/1.1.1)<br/>
We're now focusing on developing **v1.5.0**.
## Latest Release (2015/12/11)
We're happy to announce the release of Pinpoint **v1.5.1**. <br/>
Please check the release note at (https://github.com/naver/pinpoint/releases/tag/1.5.1)<br/>
We're now focusing on developing **v1.5.2**.

## Overview
Services nowadays often consist of many different components, communicating amongst themselves as well as making API calls to external services. How each and every transaction gets executed is often left as a blackbox. Pinpoint traces transaction flows between these components and provides a clear view to identify problem areas and potential bottlenecks.
Services nowadays often consist of many different components, communicating amongst themselves as well as making API calls to external services. How each and every transaction gets executed is often left as a blackbox. Pinpoint traces transaction flows between these components and provides a clear view to identify problem areas and potential bottlenecks.<br/>
For a more intimate guide, please check out our *[Introduction to Pinpoint](https://github.com/naver/pinpoint/wiki#video-clips)* video clip.

* **ServerMap** - Understand the topology of any distributed systems by visualizing how their components are interconnected. Clicking on a node reveals details about the component, such as its current status, and transaction count.
* **Realtime Active Thread Chart** - Monitor active threads inside applications in real-time.
* **Request/Response Scatter Chart** - Visualize request count and response patterns over time to identify potential problems. Transactions can be selected for additional detail by **dragging over the chart**.

![Server Map](doc/img/ss_server-map.png)
Expand All @@ -24,30 +26,31 @@ Services nowadays often consist of many different components, communicating amon

![Call Stack](doc/img/ss_call-stack.png)

* **Inspector** - View additional details on the application such as CPU usage, Memory/Garbage Collection, and JVM arguments.
* **Inspector** - View additional details on the application such as CPU usage, Memory/Garbage Collection, TPS, and JVM arguments.

![Inspector](doc/img/ss_inspector.png)

## Architecture
![Pinpoint Architecture](doc/img/pinpoint-architecture.png)



## Supported Modules
* JDK 6+
* Tomcat 6/7
* Spring
* Apache HTTP Client 3.x/4.x, JDK HttpConnector
* MySQL, Oracle, MSSQL, CUBRID, DBCP
* iBATIS, MyBatis
* Tomcat 6/7/8, Jetty 8/9
* Spring, Spring Boot
* Apache HTTP Client 3.x/4.x, JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
* Thrift Client, Thrift Service
* MySQL, Oracle, MSSQL, CUBRID, DBCP, POSTGRESQL
* Arcus, Memcached, Redis
* iBATIS, MyBatis
* gson, Jackson, Json Lib
* log4j, Logback

## Quick Start
You may run a sample Pinpoint instance in your own machine by running four simple scripts for each components: Collector, Web, Sample TestApp, HBase.

Once the components are running, you should be able to visit http://localhost:28080 to view the Pinpoint Web UI, and http://localhost:28081 to generate transactions on the Sample TestApp.

For details, please refer to the [quick-start guide](quickstart/README.md "Pinpoint quick-start guide").
For details, please refer to the [quick-start guide](quickstart/README.md).

## Installation
**Build Requirements**
Expand Down Expand Up @@ -84,32 +87,35 @@ To set up your very own Pinpoint instance you can either **download the build re
Take a look at our [installation guide](doc/installation.md) for further instructions.

## Issues
For feature requests and bug reports, feel free to post them [here](https://github.com/naver/pinpoint/issues).
For feature requests and bug reports, feel free to post them [here](https://github.com/naver/pinpoint/issues "Pinpoint Issues").


## User Group
For Q/A and discussion [here](https://groups.google.com/forum/#!forum/pinpoint_user).
For Q/A and discussion [here](https://groups.google.com/forum/#!forum/pinpoint_user "Pinpoint Google Group").


## Wiki
For roadmap, user guide, documentation.
We have a [wiki](https://github.com/naver/pinpoint/wiki) page for roadmap, user guide, and some documentation.
We welcome any documentation contribution.
[here](https://github.com/naver/pinpoint/wiki).


## Contribution
We welcome any and all suggestions. Our development guide is currently WIP so check back often for any updates.
We welcome any and all suggestions.

For plugin development, take a look at our [plugin samples](https://github.com/naver/pinpoint-plugin-sample "Pinpoint Plugin Samples project") project to get an idea of how we do instrumentation. The samples will provide you with example codes to help you get started. You can also join Gitter below for any questions regarding plugin development.

[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/naver/pinpoint-plugin-sample?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)

For contributions, please make a pull-request against our `master` branch.
Please make a pull-request against our `master` branch for contributions.

We would love to see additional tracing support for libraries such as [Storm](https://storm.apache.org/), [HBase](http://hbase.apache.org/), as well as profiler support for additional languages (.NET, C++).
We would love to see additional tracing support for libraries such as [Storm](https://storm.apache.org "Apache Storm"), [HBase](http://hbase.apache.org "Apache HBase"), as well as profiler support for additional languages (.NET, C++).

## License
Pinpoint is licensed under the Apache License, Version 2.0.
See [LICENSE](LICENSE) for full license text.

```
Copyright 2014 Naver Corp.
Copyright 2015 Naver Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion agent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.navercorp.pinpoint</groupId>
<artifactId>pom</artifactId>
<version>1.5.0-SNAPSHOT</version>
<version>1.5.2-SNAPSHOT</version>
</parent>

<artifactId>pinpoint-agent</artifactId>
Expand Down
18 changes: 13 additions & 5 deletions agent/src/main/resources/lib/log4j.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,33 @@
<!-- %L(line number) option is extremely slow. -->
<!--<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-30c{1}) %m%n" />-->
</layout>

</appender>

<appender name="rollingFile" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${pinpoint.log}/${pinpoint.agentId}-pinpoint.log" />
<param name="append" value="true" />
<param name="maxFileSize" value="10MB"/>
<param name="maxBackupIndex" value="20"/>
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-35c{1.}:%-3L) %m%n" />
<!-- %L(line number) option is extremely slow. -->
<!--<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-30c{1}) %m%n" />-->
</layout>
</appender>

<logger name="com.navercorp.pinpoint" additivity="false">
<level value="DEBUG" />
<!-- for development mode -->
<appender-ref ref="console" />
<!-- for release mode -->
<appender-ref ref="dailyRollingFile" />
<appender-ref ref="rollingFile" />
</logger>



<root>
<level value="DEBUG" />
<!-- for development mode -->
<appender-ref ref="console" />
<!-- for release mode -->
<appender-ref ref="dailyRollingFile" />
<appender-ref ref="rollingFile" />
</root>
</log4j:configuration>
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ profiler.collector.tcp.port=9994
###########################################################
profiler.enable=true

profiler.interceptorregistry.size=8192
profiler.jvm.collect.interval=1000

# Allow sampling.
Expand Down Expand Up @@ -83,7 +84,7 @@ profiler.include=
# Ex: foo.bar.MyClass, foo.baz.*

# Needs to be a comma separated list of fully qualified method names. Wild card not supported.
profiler.user.include=
profiler.entrypoint=
# Ex: foo.bar.MyClass.myMethod, foo.bar.MyClass.anotherMethod

###########################################################
Expand Down Expand Up @@ -292,6 +293,7 @@ profiler.spring.beans=true
profiler.spring.beans.name.pattern=
profiler.spring.beans.class.pattern=
profiler.spring.beans.annotation=org.springframework.stereotype.Controller,org.springframework.stereotype.Service,org.springframework.stereotype.Repository
profiler.spring.beans.mark.error=false

###########################################################
# log4j (guide url : https://github.com/naver/pinpoint/blob/master/doc/per-request_feature_guide.md)
Expand Down
50 changes: 35 additions & 15 deletions agent/src/main/resources/pinpoint.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ profiler.collector.tcp.port=9994
###########################################################
profiler.enable=true

profiler.interceptorregistry.size=8192
profiler.jvm.collect.interval=1000

# Allow sampling.
Expand Down Expand Up @@ -89,7 +90,7 @@ profiler.include=
# Ex: foo.bar.MyClass, foo.baz.*

# Needs to be a comma separated list of fully qualified method names. Wild card not supported.
profiler.user.include=
profiler.entrypoint=
# Ex: foo.bar.MyClass.myMethod, foo.bar.MyClass.anotherMethod

###########################################################
Expand All @@ -98,6 +99,7 @@ profiler.user.include=
# Hide pinpoint headers.
profiler.tomcat.hidepinpointheader=true
profiler.tomcat.excludeurl=/aa/test.html, /bb/exclude.html
profiler.tomcat.tracerequestparam=true

# original IP address header
# https://en.wikipedia.org/wiki/X-Forwarded-For
Expand All @@ -114,6 +116,8 @@ profiler.tomcat.excludeurl=/aa/test.html, /bb/exclude.html
profiler.jdbc=true
# Size of cache. Fixed maximum.
profiler.jdbc.sqlcachesize=1024
# trace bindvalues for PreparedStatements
profiler.jdbc.tracesqlbindvalue=true
# Maximum bindvalue size.
profiler.jdbc.maxsqlbindvaluesize=1024

Expand All @@ -128,6 +132,8 @@ profiler.jdbc.mysql.setautocommit=true
profiler.jdbc.mysql.commit=true
# Allow profiling of rollback.
profiler.jdbc.mysql.rollback=true
# Trace bindvalues for MySQL PreparedStatements (overrides profiler.jdbc.tracesqlbindvalue)
#profiler.jdbc.mysql.tracesqlbindvalue=true

#
# MSSQL Jtds
Expand All @@ -140,6 +146,8 @@ profiler.jdbc.jtds.setautocommit=true
profiler.jdbc.jtds.commit=true
# Allow profiling of rollback.
profiler.jdbc.jtds.rollback=true
# Trace bindvalues for jTDS PreparedStatements (overrides profiler.jdbc.tracesqlbindvalue)
#profiler.jdbc.jtds.tracesqlbindvalue=true

#
# Oracle
Expand All @@ -152,6 +160,8 @@ profiler.jdbc.oracle.setautocommit=true
profiler.jdbc.oracle.commit=true
# Allow profiling of rollback.
profiler.jdbc.oracle.rollback=true
# Trace bindvalues for Oracle PreparedStatements (overrides profiler.jdbc.tracesqlbindvalue)
#profiler.jdbc.oracle.tracesqlbindvalue=true

#
# CUBRID
Expand All @@ -164,6 +174,8 @@ profiler.jdbc.cubrid.setautocommit=true
profiler.jdbc.cubrid.commit=true
# Allow profiling of rollback.
profiler.jdbc.cubrid.rollback=true
# Trace bindvalues for CUBRID PreparedStatements (overrides profiler.jdbc.tracesqlbindvalue)
#profiler.jdbc.cubrid.tracesqlbindvalue=true

#
# DBCP
Expand All @@ -176,8 +188,9 @@ profiler.jdbc.dbcp.connectionclose=true
###########################################################
# Apache HTTP Client 3.x #
###########################################################
# Profile HTTP Client 3.x
profiler.apache.httpclient3=true
# Record Parameter.
profiler.apache.httpclient3.param=true

# Record Cookies.
profiler.apache.httpclient3.cookie=true

Expand All @@ -194,13 +207,15 @@ profiler.apache.httpclient3.entity.dumptype=ALWAYS
# 1 out of n entities will be sampled where n is the rate. (10: 10%)
profiler.apache.httpclient3.entity.sampling.rate=1

# Record IO time.
profiler.apache.httpclient3.io=true

###########################################################
# Apache HTTP Client 4.x #
###########################################################
# Profile HTTP Client 4.x
profiler.apache.httpclient4=true
# Record Parameter.
profiler.apache.httpclient4.param=true

# Record cookies.
profiler.apache.httpclient4.cookie=true

Expand All @@ -222,16 +237,17 @@ profiler.apache.httpclient4.entity.sampling.rate=1
# Allow profiling status code value.
profiler.apache.httpclient4.entity.statuscode=true

# Record IO time.
profiler.apache.httpclient4.io=true

# Not supported yet.
#profiler.apache.nio.httpclient4=true


###########################################################
# JDK HTTPURLConnection #
###########################################################
# Profile JDK HTTPURPConnection.
profiler.jdk.httpurlconnection=true

# Profile parameter.
profiler.jdk.http.param=true

###########################################################
# Ning Async HTTP Client #
Expand Down Expand Up @@ -285,8 +301,10 @@ profiler.memcached.keytrace=true
###########################################################
# Profile Thrift
profiler.thrift.client=true
profiler.thrift.client.async=true
# Profile processor.
profiler.thrift.processor=true
profiler.thrift.processor.async=true
# Allow recording arguments.
profiler.thrift.service.args=true
# Allow recording result.
Expand All @@ -313,6 +331,7 @@ profiler.spring.beans=true
profiler.spring.beans.name.pattern=
profiler.spring.beans.class.pattern=
profiler.spring.beans.annotation=org.springframework.stereotype.Controller,org.springframework.stereotype.Service,org.springframework.stereotype.Repository
profiler.spring.beans.mark.error=false

###########################################################
# log4j (guide url : https://github.com/naver/pinpoint/blob/master/doc/per-request_feature_guide.md)
Expand All @@ -327,12 +346,8 @@ profiler.logback.logging.transactioninfo=false
###########################################################
# google httpclient
###########################################################
# Profile google httpclient.
profiler.google.httpclient.enable=true
# Profile async.
profiler.google.httpclient.async=true
# Maximum anonymous innerclass number.
profiler.google.httpclient.async.innerclassname.max=3

###########################################################
# redis
Expand All @@ -344,11 +359,16 @@ profiler.redis.io=true
###########################################################
# OkHttp
###########################################################
# Record param.
profiler.okhttp.param=true

# Record Cookies.
profiler.okhttp.cookie=true
profiler.okhttp.cookie=false

# When to dump cookies. Either ALWAYS or EXCEPTION.
profiler.okhttp.cookie.dumptype=EXCEPTION

# 1 out of n cookies will be sampled where n is the rate. (1: 100%)
profiler.okhttp.cookie.sampling.rate=10
profiler.okhttp.async=true

profiler.okhttp.async=true
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;

import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;

Expand Down Expand Up @@ -60,7 +59,7 @@ public void initialize(HttpRequest request) {
request = requestFactory.buildGetRequest(url);
response = request.execute();
response.disconnect();
} catch (IOException e) {
} catch (IOException ignored) {
} finally {
if (response != null) {
response.disconnect();
Expand Down Expand Up @@ -91,7 +90,7 @@ public void initialize(HttpRequest request) {
request = requestFactory.buildGetRequest(url);
response = request.executeAsync().get();
response.disconnect();
} catch (IOException e) {
} catch (IOException ignored) {
} finally {
if (response != null) {
response.disconnect();
Expand Down
Loading

0 comments on commit e39d22f

Please sign in to comment.