You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by av...@apache.org on 2016/12/22 20:34:30 UTC
[2/2] ambari git commit: AMBARI-19141 : Refinements for AMS
whitelisting. (avijayan)
AMBARI-19141 : Refinements for AMS whitelisting. (avijayan)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c84c42bb
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c84c42bb
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c84c42bb
Branch: refs/heads/branch-2.5
Commit: c84c42bbeee5fc0b363348be0e57a62559cf77bb
Parents: b9f25b7
Author: Aravindan Vijayan <av...@hortonworks.com>
Authored: Thu Dec 22 12:34:16 2016 -0800
Committer: Aravindan Vijayan <av...@hortonworks.com>
Committed: Thu Dec 22 12:34:16 2016 -0800
----------------------------------------------------------------------
ambari-metrics/ambari-metrics-assembly/pom.xml | 12 +
.../src/main/assembly/collector-windows.xml | 1 +
.../src/main/assembly/collector.xml | 1 +
.../sink/timeline/TimelineMetricMetadata.java | 12 +-
.../conf/unix/metrics_whitelist | 527 +++++++++++++++++++
.../conf/windows/metrics_whitelist | 527 +++++++++++++++++++
.../ambari-metrics-timelineservice/pom.xml | 21 +
.../timeline/HBaseTimelineMetricStore.java | 16 +-
.../metrics/timeline/PhoenixHBaseAccessor.java | 19 +-
.../timeline/TimelineMetricConfiguration.java | 3 +
.../metrics/timeline/TimelineMetricStore.java | 2 +-
.../metrics/timeline/TimelineMetricsFilter.java | 153 ++++++
.../timeline/aggregators/AggregatorUtils.java | 45 --
.../TimelineMetricAppAggregator.java | 5 +-
.../TimelineMetricMetadataManager.java | 5 +-
.../timeline/query/PhoenixTransactSQL.java | 12 +-
.../webapp/TimelineWebServices.java | 7 +-
.../timeline/TestTimelineMetricStore.java | 2 +-
.../timeline/TimelineMetricsFilterTest.java | 99 ++++
.../timeline/discovery/TestMetadataManager.java | 24 +-
.../timeline/discovery/TestMetadataSync.java | 10 +-
.../resources/test_data/metric_whitelist.dat | 6 +
22 files changed, 1419 insertions(+), 90 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-assembly/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/pom.xml b/ambari-metrics/ambari-metrics-assembly/pom.xml
index a55ae57..4c7ed41 100644
--- a/ambari-metrics/ambari-metrics-assembly/pom.xml
+++ b/ambari-metrics/ambari-metrics-assembly/pom.xml
@@ -335,6 +335,9 @@
<location>${collector.dir}/conf/unix/log4j.properties</location>
</source>
<source>
+ <location>${collector.dir}/conf/unix/metrics_whitelist</location>
+ </source>
+ <source>
<location>${collector.dir}/target/embedded/${hbase.folder}/conf/hbase-site.xml</location>
</source>
</sources>
@@ -870,6 +873,15 @@
</mapper>
</data>
<data>
+ <src>${collector.dir}/conf/unix/metrics_whitelist</src>
+ <type>file</type>
+ <mapper>
+ <type>perm</type>
+ <filemode>755</filemode>
+ <prefix>/etc/ambari-metrics-collector/conf</prefix>
+ </mapper>
+ </data>
+ <data>
<src>${collector.dir}/target/embedded/${hbase.folder}/conf/hbase-site.xml</src>
<type>file</type>
<mapper>
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector-windows.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector-windows.xml b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector-windows.xml
index 4f1ad47..1ea6c46 100644
--- a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector-windows.xml
+++ b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector-windows.xml
@@ -45,6 +45,7 @@
<include>ams-env.cmd</include>
<include>ams-site.xml</include>
<include>log4j.properties</include>
+ <include>metrics_whitelist</include>
</includes>
</fileSet>
<fileSet>
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector.xml b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector.xml
index 609ddb3..0997b48 100644
--- a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector.xml
+++ b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector.xml
@@ -44,6 +44,7 @@
<include>ams-env.sh</include>
<include>ams-site.xml</include>
<include>log4j.properties</include>
+ <include>metrics_whitelist</include>
</includes>
</fileSet>
<fileSet>
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/TimelineMetricMetadata.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/TimelineMetricMetadata.java b/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/TimelineMetricMetadata.java
index 1f413a0..727becc 100644
--- a/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/TimelineMetricMetadata.java
+++ b/ambari-metrics/ambari-metrics-common/src/main/java/org/apache/hadoop/metrics2/sink/timeline/TimelineMetricMetadata.java
@@ -36,6 +36,7 @@ public class TimelineMetricMetadata {
private String type = "UNDEFINED";
private Long seriesStartTime;
boolean supportsAggregates = true;
+ boolean isWhitelisted = false;
// Serialization ignored helper flag
boolean isPersisted = false;
@@ -52,13 +53,14 @@ public class TimelineMetricMetadata {
public TimelineMetricMetadata(String metricName, String appId, String units,
String type, Long seriesStartTime,
- boolean supportsAggregates) {
+ boolean supportsAggregates, boolean isWhitelisted) {
this.metricName = metricName;
this.appId = appId;
this.units = units;
this.type = type;
this.seriesStartTime = seriesStartTime;
this.supportsAggregates = supportsAggregates;
+ this.isWhitelisted = isWhitelisted;
}
@XmlElement(name = "metricname")
@@ -112,6 +114,11 @@ public class TimelineMetricMetadata {
return supportsAggregates;
}
+ @XmlElement(name = "isWhitelisted")
+ public boolean isWhitelisted() {
+ return isWhitelisted;
+ }
+
public void setSupportsAggregates(boolean supportsAggregates) {
this.supportsAggregates = supportsAggregates;
}
@@ -140,7 +147,8 @@ public class TimelineMetricMetadata {
return (this.units != null && !this.units.equals(metadata.getUnits())) ||
(this.type != null && !this.type.equals(metadata.getType())) ||
//!this.lastRecordedTime.equals(metadata.getLastRecordedTime()) || // TODO: support
- !this.supportsAggregates == metadata.isSupportsAggregates();
+ !this.supportsAggregates == metadata.isSupportsAggregates() ||
+ this.isWhitelisted != metadata.isWhitelisted;
}
@Override
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/conf/unix/metrics_whitelist
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/conf/unix/metrics_whitelist b/ambari-metrics/ambari-metrics-timelineservice/conf/unix/metrics_whitelist
new file mode 100644
index 0000000..bd36429
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/conf/unix/metrics_whitelist
@@ -0,0 +1,527 @@
+AMBARI_METRICS.SmokeTest.FakeMetric
+ActiveThreads
+BytesQueued
+BytesReceivedLast5Minutes
+BytesSentLast5Minutes
+ChannelSize
+EventPutSuccessCount
+EventTakeSuccessCount
+FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity
+FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.DfsUsed
+FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumFailedVolumes
+FlowFilesQueued
+FlowFilesReceivedLast5Minutes
+FlowFilesSentLast5Minutes
+Free Slots
+Supervisors
+TimelineMetricStoreWatcher.FakeMetric
+Topologies
+Total Executors
+Total Slots
+Total Tasks
+Used Slots
+bytes_in
+bytes_out
+cache.CacheMetrics.CacheCapacityRemaining
+cache.CacheMetrics.CacheCapacityRemainingPercentage
+cache.CacheMetrics.CacheCapacityTotal
+cache.CacheMetrics.CacheCapacityUsed
+cache.CacheMetrics.CacheHitRatio
+cache.CacheMetrics.CacheReadRequests
+cpu_idle
+cpu_intr
+cpu_nice
+cpu_num
+cpu_sintr
+cpu_steal
+cpu_system
+cpu_user
+cpu_wio
+default.General.active_calls_api_hs2_operation_INITIALIZED
+default.General.active_calls_api_hs2_operation_PENDING
+default.General.active_calls_api_hs2_operation_RUNNING
+default.General.api_create_table_count
+default.General.api_get_all_databases_75thpercentile
+default.General.api_get_all_databases_999thpercentile
+default.General.api_get_partitions_by_names_75thpercentile
+default.General.api_get_partitions_by_names_999thpercentile
+default.General.api_hs2_operation_INITIALIZED_count
+default.General.create_total_count_partitions
+default.General.hs2_completed_operation_CLOSED
+default.General.hs2_completed_operation_ERROR
+default.General.hs2_completed_operation_FINISHED
+default.General.init_total_count_dbs
+default.General.init_total_count_partitions
+default.General.init_total_count_tables
+default.General.jvm.pause.extraSleepTime
+default.General.memory.heap.committed
+default.General.memory.heap.max
+default.General.memory.heap.used
+default.General.memory.non-heap.committed
+default.General.memory.non-heap.max
+default.General.memory.non-heap.used
+dfs.FSNamesystem.CapacityTotalGB
+dfs.FSNamesystem.CapacityUsedGB
+dfs.FSNamesystem.ExpiredHeartbeats
+dfs.FSNamesystem.LastCheckpointTime
+dfs.FSNamesystem.LastWrittenTransactionId
+dfs.FSNamesystem.LockQueueLength
+dfs.FSNamesystem.MillisSinceLastLoadedEdits
+dfs.FSNamesystem.MissingReplOneBlocks
+dfs.FSNamesystem.NumFilesUnderConstruction
+dfs.FSNamesystem.PendingDataNodeMessageCount
+dfs.FSNamesystem.PostponedMisreplicatedBlocks
+dfs.FSNamesystem.Snapshots
+dfs.FSNamesystem.SnapshottableDirectories
+dfs.FSNamesystem.StaleDataNodes
+dfs.FSNamesystem.TotalFiles
+dfs.FSNamesystem.TotalLoad
+dfs.FSNamesystem.TransactionsSinceLastCheckpoint
+dfs.FSNamesystem.TransactionsSinceLastLogRoll
+dfs.FSNamesystem.UnderReplicatedBlocks
+dfs.datanode.BlocksRead
+dfs.datanode.BlocksWritten
+dfs.datanode.DatanodeNetworkErrors
+dfs.datanode.FsyncNanosAvgTime
+dfs.datanode.FsyncNanosNumOps
+dfs.datanode.PacketAckRoundTripTimeNanosAvgTime
+dfs.datanode.PacketAckRoundTripTimeNanosNumOps
+dfs.datanode.SendDataPacketBlockedOnNetworkNanosAvgTime
+dfs.datanode.SendDataPacketBlockedOnNetworkNanosNumOps
+dfs.datanode.SendDataPacketTransferNanosAvgTime
+dfs.datanode.SendDataPacketTransferNanosNumOps
+dfs.namenode.TotalFileOps
+disk_free
+disk_total
+disk_used
+executors.ExecutorMetrics.ExecutorAvailableFreeSlots
+executors.ExecutorMetrics.ExecutorAvailableFreeSlotsPercent
+executors.ExecutorMetrics.ExecutorCacheMemoryPerInstance
+executors.ExecutorMetrics.ExecutorJvmMaxMemory
+executors.ExecutorMetrics.ExecutorMaxFreeSlots
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeLost
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeLost_300s50thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeLost_300s90thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeLost_300s95thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeLost_300s99thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeToKill
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeToKill_300s50thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeToKill_300s90thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeToKill_300s95thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeToKill_300s99thPercentileLatency
+executors.ExecutorMetrics.ExecutorMemoryPerInstance
+executors.ExecutorMetrics.ExecutorNumExecutorsPerInstance
+executors.ExecutorMetrics.ExecutorNumQueuedRequests
+executors.ExecutorMetrics.ExecutorTotalEvictedFromWaitQueue
+executors.ExecutorMetrics.ExecutorTotalFailed
+executors.ExecutorMetrics.ExecutorTotalKilled
+executors.ExecutorMetrics.ExecutorTotalRejectedRequests
+executors.ExecutorMetrics.ExecutorTotalRequestsHandled
+executors.ExecutorMetrics.ExecutorTotalSuccess
+gc.ConcurrentMarkSweep.count
+gc.ConcurrentMarkSweep.time
+gc.ParNew.count
+gc.ParNew.time
+io.IOMetrics.MaxDecodingTime
+io.IOMetrics.PercentileDecodingTime_30s50thPercentileLatency
+io.IOMetrics.PercentileDecodingTime_30s90thPercentileLatency
+io.IOMetrics.PercentileDecodingTime_30s95thPercentileLatency
+io.IOMetrics.PercentileDecodingTime_30s99thPercentileLatency
+ipc.client.org.apache.hadoop.ipc.DecayRpcScheduler.Caller(*).Priority
+ipc.client.org.apache.hadoop.ipc.DecayRpcScheduler.Caller(*).Volume
+jvm.JvmMetrics.GcCount
+jvm.JvmMetrics.GcCountConcurrentMarkSweep
+jvm.JvmMetrics.GcCountParNew
+jvm.JvmMetrics.GcNumWarnThresholdExceeded
+jvm.JvmMetrics.GcTimeMillis
+jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep
+jvm.JvmMetrics.GcTimeMillisParNew
+jvm.JvmMetrics.GcTotalExtraSleepTime
+jvm.JvmMetrics.LogError
+jvm.JvmMetrics.LogFatal
+jvm.JvmMetrics.MemHeapCommittedM
+jvm.JvmMetrics.MemHeapMaxM
+jvm.JvmMetrics.MemHeapUsedM
+jvm.JvmMetrics.MemNonHeapCommittedM
+jvm.JvmMetrics.MemNonHeapMaxM
+jvm.JvmMetrics.MemNonHeapUsedM
+jvm.JvmMetrics.ThreadsBlocked
+jvm.JvmMetrics.ThreadsNew
+jvm.JvmMetrics.ThreadsRunnable
+jvm.JvmMetrics.ThreadsTerminated
+jvm.JvmMetrics.ThreadsTimedWaiting
+jvm.JvmMetrics.ThreadsWaiting
+jvm.Master.JvmMetrics.ThreadsBlocked
+jvm.Master.JvmMetrics.ThreadsNew
+jvm.Master.JvmMetrics.ThreadsRunnable
+jvm.Master.JvmMetrics.ThreadsTerminated
+jvm.Master.JvmMetrics.ThreadsTimedWaiting
+jvm.Master.JvmMetrics.ThreadsWaiting
+jvm.RegionServer.JvmMetrics.GcCount
+jvm.RegionServer.JvmMetrics.GcCountConcurrentMarkSweep
+jvm.RegionServer.JvmMetrics.GcCountParNew
+jvm.RegionServer.JvmMetrics.GcTimeMillis
+jvm.RegionServer.JvmMetrics.GcTimeMillisConcurrentMarkSweep
+jvm.RegionServer.JvmMetrics.GcTimeMillisParNew
+jvm.RegionServer.JvmMetrics.MemHeapCommittedM
+jvm.RegionServer.JvmMetrics.MemHeapMaxM
+jvm.RegionServer.JvmMetrics.MemHeapUsedM
+jvm.RegionServer.JvmMetrics.MemNonHeapCommittedM
+jvm.RegionServer.JvmMetrics.MemNonHeapMaxM
+jvm.RegionServer.JvmMetrics.MemNonHeapUsedM
+jvm.RegionServer.JvmMetrics.ThreadsBlocked
+jvm.RegionServer.JvmMetrics.ThreadsNew
+jvm.RegionServer.JvmMetrics.ThreadsRunnable
+jvm.RegionServer.JvmMetrics.ThreadsTerminated
+jvm.RegionServer.JvmMetrics.ThreadsTimedWaiting
+jvm.RegionServer.JvmMetrics.ThreadsWaiting
+jvm.daemon_thread_count
+jvm.file_descriptor_usage
+jvm.heap_usage
+jvm.thread_count
+jvm.uptime
+kafka.controller.ControllerStats.LeaderElectionRateAndTimeMs.1MinuteRate
+kafka.controller.ControllerStats.LeaderElectionRateAndTimeMs.count
+kafka.controller.ControllerStats.UncleanLeaderElectionsPerSec.1MinuteRate
+kafka.controller.ControllerStats.UncleanLeaderElectionsPerSec.count
+kafka.controller.KafkaController.ActiveControllerCount
+kafka.controller.KafkaController.OfflinePartitionsCount
+kafka.log.LogFlushStats.LogFlushRateAndTimeMs.1MinuteRate
+kafka.network.RequestMetrics.RequestsPerSec.request.FetchConsumer.count
+kafka.network.RequestMetrics.RequestsPerSec.request.Produce.count
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchConsumer.99percentile
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchConsumer.max
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchConsumer.mean
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchConsumer.min
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchFollower.99percentile
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchFollower.max
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchFollower.mean
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchFollower.min
+kafka.network.RequestMetrics.TotalTimeMs.request.Produce.99percentile
+kafka.network.RequestMetrics.TotalTimeMs.request.Produce.max
+kafka.network.RequestMetrics.TotalTimeMs.request.Produce.mean
+kafka.network.RequestMetrics.TotalTimeMs.request.Produce.min
+kafka.server.BrokerTopicMetrics.BytesInPerSec.1MinuteRate
+kafka.server.BrokerTopicMetrics.BytesInPerSec.count
+kafka.server.BrokerTopicMetrics.BytesInPerSec.topic.*.count
+kafka.server.BrokerTopicMetrics.BytesOutPerSec.1MinuteRate
+kafka.server.BrokerTopicMetrics.BytesOutPerSec.count
+kafka.server.BrokerTopicMetrics.BytesOutPerSec.topic.*.count
+kafka.server.BrokerTopicMetrics.MessagesInPerSec.1MinuteRate
+kafka.server.BrokerTopicMetrics.MessagesInPerSec.count
+kafka.server.BrokerTopicMetrics.MessagesInPerSec.topic.*.count
+kafka.server.BrokerTopicMetrics.TotalProduceRequestsPerSec.topic.*.count
+kafka.server.FetcherLagMetrics.ConsumerLag.clientId.ReplicaFetcherThread-0-1001.partition.0.topic.*
+kafka.server.ReplicaFetcherManager.MaxLag.clientId.Replica
+kafka.server.ReplicaManager.IsrExpandsPerSec.count
+kafka.server.ReplicaManager.IsrShrinksPerSec.count
+kafka.server.ReplicaManager.LeaderCount
+kafka.server.ReplicaManager.PartitionCount
+kafka.server.ReplicaManager.UnderReplicatedPartitions
+load_fifteen
+load_five
+load_one
+master.AssignmentManger.ritCount
+master.AssignmentManger.ritCountOverThreshold
+master.AssignmentManger.ritOldestAge
+master.Master.QueueCallTime_median
+master.Master.TotalCallTime_num_ops
+master.Master.exceptions
+master.Server.averageLoad
+master.Server.numDeadRegionServers
+master.Server.numRegionServers
+mem_buffered
+mem_cached
+mem_free
+mem_shared
+mem_total
+mem_used
+memory.heap.committed
+memory.heap.max
+memory.heap.used
+memory.non-heap.committed
+memory.non-heap.max
+memory.non-heap.used
+pkts_in
+pkts_out
+proc_run
+proc_total
+read_bps
+read_bytes
+read_count
+read_time
+regionserver.RegionServer.ProcessCallTime_75th_percentile
+regionserver.RegionServer.ProcessCallTime_95th_percentile
+regionserver.RegionServer.ProcessCallTime_99th_percentile
+regionserver.RegionServer.ProcessCallTime_max
+regionserver.RegionServer.ProcessCallTime_mean
+regionserver.RegionServer.ProcessCallTime_median
+regionserver.RegionServer.QueueCallTime_75th_percentile
+regionserver.RegionServer.QueueCallTime_95th_percentile
+regionserver.RegionServer.QueueCallTime_99th_percentile
+regionserver.RegionServer.QueueCallTime_max
+regionserver.RegionServer.QueueCallTime_mean
+regionserver.RegionServer.QueueCallTime_median
+regionserver.RegionServer.TotalCallTime_num_ops
+regionserver.RegionServer.authenticationFailures
+regionserver.RegionServer.authenticationSuccesses
+regionserver.RegionServer.authorizationFailures
+regionserver.RegionServer.authorizationSuccesses
+regionserver.RegionServer.exceptions
+regionserver.RegionServer.numActiveHandler
+regionserver.RegionServer.numCallsInGeneralQueue
+regionserver.RegionServer.numCallsInPriorityQueue
+regionserver.RegionServer.numCallsInReplicationQueue
+regionserver.RegionServer.numOpenConnections
+regionserver.RegionServer.queueSize
+regionserver.RegionServer.receivedBytes
+regionserver.RegionServer.sentBytes
+regionserver.Server.Append_75th_percentile
+regionserver.Server.Append_95th_percentile
+regionserver.Server.Append_99th_percentile
+regionserver.Server.Append_max
+regionserver.Server.Append_mean
+regionserver.Server.Append_median
+regionserver.Server.Append_min
+regionserver.Server.Append_num_ops
+regionserver.Server.Delete_75th_percentile
+regionserver.Server.Delete_95th_percentile
+regionserver.Server.Delete_99th_percentile
+regionserver.Server.Delete_max
+regionserver.Server.Delete_mean
+regionserver.Server.Delete_median
+regionserver.Server.Delete_min
+regionserver.Server.Delete_num_ops
+regionserver.Server.Get_75th_percentile
+regionserver.Server.Get_95th_percentile
+regionserver.Server.Get_99th_percentile
+regionserver.Server.Get_max
+regionserver.Server.Get_mean
+regionserver.Server.Get_median
+regionserver.Server.Get_min
+regionserver.Server.Get_num_ops
+regionserver.Server.Increment_75th_percentile
+regionserver.Server.Increment_95th_percentile
+regionserver.Server.Increment_99th_percentile
+regionserver.Server.Increment_max
+regionserver.Server.Increment_mean
+regionserver.Server.Increment_median
+regionserver.Server.Increment_min
+regionserver.Server.Increment_num_ops
+regionserver.Server.Mutate_75th_percentile
+regionserver.Server.Mutate_95th_percentile
+regionserver.Server.Mutate_99th_percentile
+regionserver.Server.Mutate_max
+regionserver.Server.Mutate_mean
+regionserver.Server.Mutate_median
+regionserver.Server.Mutate_min
+regionserver.Server.Mutate_num_ops
+regionserver.Server.Replay_75th_percentile
+regionserver.Server.Replay_95th_percentile
+regionserver.Server.Replay_99th_percentile
+regionserver.Server.Replay_max
+regionserver.Server.Replay_mean
+regionserver.Server.Replay_median
+regionserver.Server.Replay_min
+regionserver.Server.Replay_num_ops
+regionserver.Server.ScanNext_95th_percentile
+regionserver.Server.ScanNext_num_ops
+regionserver.Server.ScanTime_75th_percentile
+regionserver.Server.ScanTime_95th_percentile
+regionserver.Server.ScanTime_99th_percentile
+regionserver.Server.ScanTime_max
+regionserver.Server.ScanTime_mean
+regionserver.Server.ScanTime_median
+regionserver.Server.blockCacheCount
+regionserver.Server.blockCacheCountHitPercent
+regionserver.Server.blockCacheEvictionCount
+regionserver.Server.blockCacheExpressHitPercent
+regionserver.Server.blockCacheFreeSize
+regionserver.Server.blockCacheHitCount
+regionserver.Server.blockCacheMissCount
+regionserver.Server.blockCacheSize
+regionserver.Server.blockCountHitPercent
+regionserver.Server.compactionQueueLength
+regionserver.Server.flushQueueLength
+regionserver.Server.hlogFileCount
+regionserver.Server.hlogFileSize
+regionserver.Server.memStoreSize
+regionserver.Server.percentFilesLocal
+regionserver.Server.readRequestCount
+regionserver.Server.regionCount
+regionserver.Server.slowDeleteCount
+regionserver.Server.slowGetCount
+regionserver.Server.slowPutCount
+regionserver.Server.splitQueueLength
+regionserver.Server.staticBloomSize
+regionserver.Server.staticIndexSize
+regionserver.Server.storeCount
+regionserver.Server.storeFileCount
+regionserver.Server.storeFileIndexSize
+regionserver.Server.storeFileSize
+regionserver.Server.totalRequestCount
+regionserver.Server.updatesBlockedTime
+regionserver.Server.writeRequestCount
+regionserver.Tables.*_metric_averageRegionSize
+regionserver.Tables.*_metric_avgStoreFileAge
+regionserver.Tables.*_metric_flushMemstoreSize_95th_percentile
+regionserver.Tables.*_metric_flushMemstoreSize_max
+regionserver.Tables.*_metric_flushMemstoreSize_mean
+regionserver.Tables.*_metric_flushMemstoreSize_median
+regionserver.Tables.*_metric_flushOutputSize_95th_percentile
+regionserver.Tables.*_metric_flushOutputSize_max
+regionserver.Tables.*_metric_flushOutputSize_mean
+regionserver.Tables.*_metric_flushOutputSize_median
+regionserver.Tables.*_metric_flushTime_95th_percentile
+regionserver.Tables.*_metric_flushTime_max
+regionserver.Tables.*_metric_flushTime_mean
+regionserver.Tables.*_metric_flushTime_median
+regionserver.Tables.*_metric_flushTime_num_ops
+regionserver.Tables.*_metric_flushedMemstoreBytes
+regionserver.Tables.*_metric_flushedOutputBytes
+regionserver.Tables.*_metric_maxStoreFileAge
+regionserver.Tables.*_metric_memStoreSize
+regionserver.Tables.*_metric_minStoreFileAge
+regionserver.Tables.*_metric_numReferenceFiles
+regionserver.Tables.*_metric_readRequestCount
+regionserver.Tables.*_metric_regionCount
+regionserver.Tables.*_metric_storeCount
+regionserver.Tables.*_metric_storeFileCount
+regionserver.Tables.*_metric_storeFileSize
+regionserver.Tables.*_metric_tableSize
+regionserver.Tables.*_metric_totalRequestCount
+regionserver.Tables.*_metric_writeRequestCount
+regionserver.Users.*_metric_append_num_ops
+regionserver.Users.*_metric_delete_num_ops
+regionserver.Users.*_metric_get_num_ops
+regionserver.Users.*_metric_increment_num_ops
+regionserver.Users.*_metric_mutate_num_ops
+regionserver.Users.*_metric_scanTime_num_ops
+regionserver.WAL.AppendSize_75th_percentile
+regionserver.WAL.AppendSize_95th_percentile
+regionserver.WAL.AppendSize_99th_percentile
+regionserver.WAL.AppendSize_max
+regionserver.WAL.AppendSize_mean
+regionserver.WAL.AppendSize_median
+regionserver.WAL.AppendTime_75th_percentile
+regionserver.WAL.AppendTime_95th_percentile
+regionserver.WAL.AppendTime_99th_percentile
+regionserver.WAL.AppendTime_max
+regionserver.WAL.AppendTime_mean
+regionserver.WAL.AppendTime_median
+regionserver.WAL.SyncTime_75th_percentile
+regionserver.WAL.SyncTime_95th_percentile
+regionserver.WAL.SyncTime_99th_percentile
+regionserver.WAL.SyncTime_max
+regionserver.WAL.SyncTime_mean
+regionserver.WAL.SyncTime_median
+regionserver.WAL.SyncTime_num_ops
+regionserver.WAL.appendCount
+regionserver.WAL.slowAppendCount
+rpc.rpc.CallQueueLength
+rpc.rpc.NumOpenConnections
+rpc.rpc.RpcAuthenticationFailures
+rpc.rpc.RpcAuthorizationFailures
+rpc.rpc.RpcProcessingTimeAvgTime
+rpc.rpc.RpcQueueTimeAvgTime
+rpc.rpc.RpcSlowCalls
+rpc.rpc.client.CallQueueLength
+rpc.rpc.client.NumOpenConnections
+rpc.rpc.client.RpcClientBackoff
+rpc.rpc.client.RpcProcessingTimeAvgTime
+rpc.rpc.client.RpcProcessingTimeNumOps
+rpc.rpc.client.RpcQueueTimeAvgTime
+rpc.rpc.client.RpcQueueTimeNumOps
+rpc.rpc.client.RpcSlowCalls
+rpc.rpc.datanode.CallQueueLength
+rpc.rpc.datanode.RpcProcessingTimeAvgTime
+rpc.rpc.datanode.RpcProcessingTimeNumOps
+rpc.rpc.datanode.RpcQueueTimeAvgTime
+rpc.rpc.datanode.RpcQueueTimeNumOps
+rpc.rpc.datanode.RpcSlowCalls
+rpcdetailed.rpcdetailed.client.AddBlockAvgTime
+rpcdetailed.rpcdetailed.client.AddBlockNumOps
+swap_free
+swap_total
+threads.blocked.count
+threads.count
+threads.daemon.count
+threads.deadlock.count
+threads.runnable.count
+topology.*.%.--ack-count.%
+topology.*.%.--complete-latency.%
+topology.*.%.--emit-count.%
+topology.*.%.--execute-count.%
+topology.*.%.--fail-count.%
+topology.*.%.--receive.population
+topology.*.%.--sendqueue.population
+topology.*.*.%.--ack-count.%
+topology.*.*.%.--complete-latency.%
+topology.*.*.%.--emit-count.%
+topology.*.*.%.--execute-count.%
+topology.*.*.%.--fail-count.%
+topology.*.*.%.--process-latency.%
+topology.*.*.%.--receive.population
+topology.*.*.%.--sendqueue.population
+topology.*.--system.%.%.-1.GC/PSMarkSweep.count
+topology.*.--system.%.%.-1.GC/PSMarkSweep.timeMs
+topology.*.--system.%.%.-1.GC/PSScavenge.count
+topology.*.--system.%.%.-1.GC/PSScavenge.timeMs
+topology.*.--system.%.%.-1.memory/heap.usedBytes
+topology.*.--system.%.%.-1.memory/nonHeap.usedBytes
+topology.*.kafka-topic.*.*.latestCompletedOffset
+topology.*.kafka-topic.*.*.latestTimeOffset
+write_bps
+write_bytes
+write_count
+write_time
+yarn.ClusterMetrics.AMLaunchDelayAvgTime
+yarn.ClusterMetrics.AMRegisterDelayAvgTime
+yarn.ClusterMetrics.NumActiveNMs
+yarn.ClusterMetrics.NumLostNMs
+yarn.ClusterMetrics.NumUnhealthyNMs
+yarn.NodeManagerMetrics.AllocatedContainers
+yarn.NodeManagerMetrics.AllocatedGB
+yarn.NodeManagerMetrics.AllocatedVCores
+yarn.NodeManagerMetrics.AvailableGB
+yarn.NodeManagerMetrics.BadLocalDirs
+yarn.NodeManagerMetrics.BadLogDirs
+yarn.NodeManagerMetrics.ContainerLaunchDurationAvgTime
+yarn.NodeManagerMetrics.ContainersCompleted
+yarn.NodeManagerMetrics.ContainersFailed
+yarn.NodeManagerMetrics.ContainersIniting
+yarn.NodeManagerMetrics.ContainersKilled
+yarn.NodeManagerMetrics.ContainersLaunched
+yarn.NodeManagerMetrics.ContainersRunning
+yarn.NodeManagerMetrics.GoodLocalDirsDiskUtilizationPerc
+yarn.NodeManagerMetrics.GoodLogDirsDiskUtilizationPerc
+yarn.QueueMetrics.Queue=root.AMResourceLimitMB
+yarn.QueueMetrics.Queue=root.AggregateContainersAllocated
+yarn.QueueMetrics.Queue=root.AggregateNodeLocalContainersAllocated
+yarn.QueueMetrics.Queue=root.AggregateOffSwitchContainersAllocated
+yarn.QueueMetrics.Queue=root.AggregateRackLocalContainersAllocated
+yarn.QueueMetrics.Queue=root.AllocatedContainers
+yarn.QueueMetrics.Queue=root.AllocatedMB
+yarn.QueueMetrics.Queue=root.AllocatedVCores
+yarn.QueueMetrics.Queue=root.AppAttemptFirstContainerAllocationDelayAvgTime
+yarn.QueueMetrics.Queue=root.AppsCompleted
+yarn.QueueMetrics.Queue=root.AppsFailed
+yarn.QueueMetrics.Queue=root.AppsKilled
+yarn.QueueMetrics.Queue=root.AppsPending
+yarn.QueueMetrics.Queue=root.AppsRunning
+yarn.QueueMetrics.Queue=root.AppsSubmitted
+yarn.QueueMetrics.Queue=root.AvailableMB
+yarn.QueueMetrics.Queue=root.AvailableVCores
+yarn.QueueMetrics.Queue=root.PendingContainers
+yarn.QueueMetrics.Queue=root.PendingMB
+yarn.QueueMetrics.Queue=root.UsedAMResourceMB
+yarn.QueueMetrics.Queue=root.default.ReservedContainers
+yarn.QueueMetrics.Queue=root.default.ReservedMB
+yarn.QueueMetrics.Queue=root.running_0
+yarn.QueueMetrics.Queue=root.running_1440
+yarn.QueueMetrics.Queue=root.running_300
+yarn.QueueMetrics.Queue=root.running_60
+yarn.TimelineDataManagerMetrics.GetEntitiesTimeAvgTime
+yarn.TimelineDataManagerMetrics.GetEntitiesTotal
+yarn.TimelineDataManagerMetrics.PostEntitiesTimeAvgTime
+yarn.TimelineDataManagerMetrics.PostEntitiesTotal
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/conf/windows/metrics_whitelist
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/metrics_whitelist b/ambari-metrics/ambari-metrics-timelineservice/conf/windows/metrics_whitelist
new file mode 100644
index 0000000..bd36429
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/conf/windows/metrics_whitelist
@@ -0,0 +1,527 @@
+AMBARI_METRICS.SmokeTest.FakeMetric
+ActiveThreads
+BytesQueued
+BytesReceivedLast5Minutes
+BytesSentLast5Minutes
+ChannelSize
+EventPutSuccessCount
+EventTakeSuccessCount
+FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.Capacity
+FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.DfsUsed
+FSDatasetState.org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.NumFailedVolumes
+FlowFilesQueued
+FlowFilesReceivedLast5Minutes
+FlowFilesSentLast5Minutes
+Free Slots
+Supervisors
+TimelineMetricStoreWatcher.FakeMetric
+Topologies
+Total Executors
+Total Slots
+Total Tasks
+Used Slots
+bytes_in
+bytes_out
+cache.CacheMetrics.CacheCapacityRemaining
+cache.CacheMetrics.CacheCapacityRemainingPercentage
+cache.CacheMetrics.CacheCapacityTotal
+cache.CacheMetrics.CacheCapacityUsed
+cache.CacheMetrics.CacheHitRatio
+cache.CacheMetrics.CacheReadRequests
+cpu_idle
+cpu_intr
+cpu_nice
+cpu_num
+cpu_sintr
+cpu_steal
+cpu_system
+cpu_user
+cpu_wio
+default.General.active_calls_api_hs2_operation_INITIALIZED
+default.General.active_calls_api_hs2_operation_PENDING
+default.General.active_calls_api_hs2_operation_RUNNING
+default.General.api_create_table_count
+default.General.api_get_all_databases_75thpercentile
+default.General.api_get_all_databases_999thpercentile
+default.General.api_get_partitions_by_names_75thpercentile
+default.General.api_get_partitions_by_names_999thpercentile
+default.General.api_hs2_operation_INITIALIZED_count
+default.General.create_total_count_partitions
+default.General.hs2_completed_operation_CLOSED
+default.General.hs2_completed_operation_ERROR
+default.General.hs2_completed_operation_FINISHED
+default.General.init_total_count_dbs
+default.General.init_total_count_partitions
+default.General.init_total_count_tables
+default.General.jvm.pause.extraSleepTime
+default.General.memory.heap.committed
+default.General.memory.heap.max
+default.General.memory.heap.used
+default.General.memory.non-heap.committed
+default.General.memory.non-heap.max
+default.General.memory.non-heap.used
+dfs.FSNamesystem.CapacityTotalGB
+dfs.FSNamesystem.CapacityUsedGB
+dfs.FSNamesystem.ExpiredHeartbeats
+dfs.FSNamesystem.LastCheckpointTime
+dfs.FSNamesystem.LastWrittenTransactionId
+dfs.FSNamesystem.LockQueueLength
+dfs.FSNamesystem.MillisSinceLastLoadedEdits
+dfs.FSNamesystem.MissingReplOneBlocks
+dfs.FSNamesystem.NumFilesUnderConstruction
+dfs.FSNamesystem.PendingDataNodeMessageCount
+dfs.FSNamesystem.PostponedMisreplicatedBlocks
+dfs.FSNamesystem.Snapshots
+dfs.FSNamesystem.SnapshottableDirectories
+dfs.FSNamesystem.StaleDataNodes
+dfs.FSNamesystem.TotalFiles
+dfs.FSNamesystem.TotalLoad
+dfs.FSNamesystem.TransactionsSinceLastCheckpoint
+dfs.FSNamesystem.TransactionsSinceLastLogRoll
+dfs.FSNamesystem.UnderReplicatedBlocks
+dfs.datanode.BlocksRead
+dfs.datanode.BlocksWritten
+dfs.datanode.DatanodeNetworkErrors
+dfs.datanode.FsyncNanosAvgTime
+dfs.datanode.FsyncNanosNumOps
+dfs.datanode.PacketAckRoundTripTimeNanosAvgTime
+dfs.datanode.PacketAckRoundTripTimeNanosNumOps
+dfs.datanode.SendDataPacketBlockedOnNetworkNanosAvgTime
+dfs.datanode.SendDataPacketBlockedOnNetworkNanosNumOps
+dfs.datanode.SendDataPacketTransferNanosAvgTime
+dfs.datanode.SendDataPacketTransferNanosNumOps
+dfs.namenode.TotalFileOps
+disk_free
+disk_total
+disk_used
+executors.ExecutorMetrics.ExecutorAvailableFreeSlots
+executors.ExecutorMetrics.ExecutorAvailableFreeSlotsPercent
+executors.ExecutorMetrics.ExecutorCacheMemoryPerInstance
+executors.ExecutorMetrics.ExecutorJvmMaxMemory
+executors.ExecutorMetrics.ExecutorMaxFreeSlots
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeLost
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeLost_300s50thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeLost_300s90thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeLost_300s95thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeLost_300s99thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeToKill
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeToKill_300s50thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeToKill_300s90thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeToKill_300s95thPercentileLatency
+executors.ExecutorMetrics.ExecutorMaxPreemptionTimeToKill_300s99thPercentileLatency
+executors.ExecutorMetrics.ExecutorMemoryPerInstance
+executors.ExecutorMetrics.ExecutorNumExecutorsPerInstance
+executors.ExecutorMetrics.ExecutorNumQueuedRequests
+executors.ExecutorMetrics.ExecutorTotalEvictedFromWaitQueue
+executors.ExecutorMetrics.ExecutorTotalFailed
+executors.ExecutorMetrics.ExecutorTotalKilled
+executors.ExecutorMetrics.ExecutorTotalRejectedRequests
+executors.ExecutorMetrics.ExecutorTotalRequestsHandled
+executors.ExecutorMetrics.ExecutorTotalSuccess
+gc.ConcurrentMarkSweep.count
+gc.ConcurrentMarkSweep.time
+gc.ParNew.count
+gc.ParNew.time
+io.IOMetrics.MaxDecodingTime
+io.IOMetrics.PercentileDecodingTime_30s50thPercentileLatency
+io.IOMetrics.PercentileDecodingTime_30s90thPercentileLatency
+io.IOMetrics.PercentileDecodingTime_30s95thPercentileLatency
+io.IOMetrics.PercentileDecodingTime_30s99thPercentileLatency
+ipc.client.org.apache.hadoop.ipc.DecayRpcScheduler.Caller(*).Priority
+ipc.client.org.apache.hadoop.ipc.DecayRpcScheduler.Caller(*).Volume
+jvm.JvmMetrics.GcCount
+jvm.JvmMetrics.GcCountConcurrentMarkSweep
+jvm.JvmMetrics.GcCountParNew
+jvm.JvmMetrics.GcNumWarnThresholdExceeded
+jvm.JvmMetrics.GcTimeMillis
+jvm.JvmMetrics.GcTimeMillisConcurrentMarkSweep
+jvm.JvmMetrics.GcTimeMillisParNew
+jvm.JvmMetrics.GcTotalExtraSleepTime
+jvm.JvmMetrics.LogError
+jvm.JvmMetrics.LogFatal
+jvm.JvmMetrics.MemHeapCommittedM
+jvm.JvmMetrics.MemHeapMaxM
+jvm.JvmMetrics.MemHeapUsedM
+jvm.JvmMetrics.MemNonHeapCommittedM
+jvm.JvmMetrics.MemNonHeapMaxM
+jvm.JvmMetrics.MemNonHeapUsedM
+jvm.JvmMetrics.ThreadsBlocked
+jvm.JvmMetrics.ThreadsNew
+jvm.JvmMetrics.ThreadsRunnable
+jvm.JvmMetrics.ThreadsTerminated
+jvm.JvmMetrics.ThreadsTimedWaiting
+jvm.JvmMetrics.ThreadsWaiting
+jvm.Master.JvmMetrics.ThreadsBlocked
+jvm.Master.JvmMetrics.ThreadsNew
+jvm.Master.JvmMetrics.ThreadsRunnable
+jvm.Master.JvmMetrics.ThreadsTerminated
+jvm.Master.JvmMetrics.ThreadsTimedWaiting
+jvm.Master.JvmMetrics.ThreadsWaiting
+jvm.RegionServer.JvmMetrics.GcCount
+jvm.RegionServer.JvmMetrics.GcCountConcurrentMarkSweep
+jvm.RegionServer.JvmMetrics.GcCountParNew
+jvm.RegionServer.JvmMetrics.GcTimeMillis
+jvm.RegionServer.JvmMetrics.GcTimeMillisConcurrentMarkSweep
+jvm.RegionServer.JvmMetrics.GcTimeMillisParNew
+jvm.RegionServer.JvmMetrics.MemHeapCommittedM
+jvm.RegionServer.JvmMetrics.MemHeapMaxM
+jvm.RegionServer.JvmMetrics.MemHeapUsedM
+jvm.RegionServer.JvmMetrics.MemNonHeapCommittedM
+jvm.RegionServer.JvmMetrics.MemNonHeapMaxM
+jvm.RegionServer.JvmMetrics.MemNonHeapUsedM
+jvm.RegionServer.JvmMetrics.ThreadsBlocked
+jvm.RegionServer.JvmMetrics.ThreadsNew
+jvm.RegionServer.JvmMetrics.ThreadsRunnable
+jvm.RegionServer.JvmMetrics.ThreadsTerminated
+jvm.RegionServer.JvmMetrics.ThreadsTimedWaiting
+jvm.RegionServer.JvmMetrics.ThreadsWaiting
+jvm.daemon_thread_count
+jvm.file_descriptor_usage
+jvm.heap_usage
+jvm.thread_count
+jvm.uptime
+kafka.controller.ControllerStats.LeaderElectionRateAndTimeMs.1MinuteRate
+kafka.controller.ControllerStats.LeaderElectionRateAndTimeMs.count
+kafka.controller.ControllerStats.UncleanLeaderElectionsPerSec.1MinuteRate
+kafka.controller.ControllerStats.UncleanLeaderElectionsPerSec.count
+kafka.controller.KafkaController.ActiveControllerCount
+kafka.controller.KafkaController.OfflinePartitionsCount
+kafka.log.LogFlushStats.LogFlushRateAndTimeMs.1MinuteRate
+kafka.network.RequestMetrics.RequestsPerSec.request.FetchConsumer.count
+kafka.network.RequestMetrics.RequestsPerSec.request.Produce.count
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchConsumer.99percentile
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchConsumer.max
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchConsumer.mean
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchConsumer.min
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchFollower.99percentile
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchFollower.max
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchFollower.mean
+kafka.network.RequestMetrics.TotalTimeMs.request.FetchFollower.min
+kafka.network.RequestMetrics.TotalTimeMs.request.Produce.99percentile
+kafka.network.RequestMetrics.TotalTimeMs.request.Produce.max
+kafka.network.RequestMetrics.TotalTimeMs.request.Produce.mean
+kafka.network.RequestMetrics.TotalTimeMs.request.Produce.min
+kafka.server.BrokerTopicMetrics.BytesInPerSec.1MinuteRate
+kafka.server.BrokerTopicMetrics.BytesInPerSec.count
+kafka.server.BrokerTopicMetrics.BytesInPerSec.topic.*.count
+kafka.server.BrokerTopicMetrics.BytesOutPerSec.1MinuteRate
+kafka.server.BrokerTopicMetrics.BytesOutPerSec.count
+kafka.server.BrokerTopicMetrics.BytesOutPerSec.topic.*.count
+kafka.server.BrokerTopicMetrics.MessagesInPerSec.1MinuteRate
+kafka.server.BrokerTopicMetrics.MessagesInPerSec.count
+kafka.server.BrokerTopicMetrics.MessagesInPerSec.topic.*.count
+kafka.server.BrokerTopicMetrics.TotalProduceRequestsPerSec.topic.*.count
+kafka.server.FetcherLagMetrics.ConsumerLag.clientId.ReplicaFetcherThread-0-1001.partition.0.topic.*
+kafka.server.ReplicaFetcherManager.MaxLag.clientId.Replica
+kafka.server.ReplicaManager.IsrExpandsPerSec.count
+kafka.server.ReplicaManager.IsrShrinksPerSec.count
+kafka.server.ReplicaManager.LeaderCount
+kafka.server.ReplicaManager.PartitionCount
+kafka.server.ReplicaManager.UnderReplicatedPartitions
+load_fifteen
+load_five
+load_one
+master.AssignmentManger.ritCount
+master.AssignmentManger.ritCountOverThreshold
+master.AssignmentManger.ritOldestAge
+master.Master.QueueCallTime_median
+master.Master.TotalCallTime_num_ops
+master.Master.exceptions
+master.Server.averageLoad
+master.Server.numDeadRegionServers
+master.Server.numRegionServers
+mem_buffered
+mem_cached
+mem_free
+mem_shared
+mem_total
+mem_used
+memory.heap.committed
+memory.heap.max
+memory.heap.used
+memory.non-heap.committed
+memory.non-heap.max
+memory.non-heap.used
+pkts_in
+pkts_out
+proc_run
+proc_total
+read_bps
+read_bytes
+read_count
+read_time
+regionserver.RegionServer.ProcessCallTime_75th_percentile
+regionserver.RegionServer.ProcessCallTime_95th_percentile
+regionserver.RegionServer.ProcessCallTime_99th_percentile
+regionserver.RegionServer.ProcessCallTime_max
+regionserver.RegionServer.ProcessCallTime_mean
+regionserver.RegionServer.ProcessCallTime_median
+regionserver.RegionServer.QueueCallTime_75th_percentile
+regionserver.RegionServer.QueueCallTime_95th_percentile
+regionserver.RegionServer.QueueCallTime_99th_percentile
+regionserver.RegionServer.QueueCallTime_max
+regionserver.RegionServer.QueueCallTime_mean
+regionserver.RegionServer.QueueCallTime_median
+regionserver.RegionServer.TotalCallTime_num_ops
+regionserver.RegionServer.authenticationFailures
+regionserver.RegionServer.authenticationSuccesses
+regionserver.RegionServer.authorizationFailures
+regionserver.RegionServer.authorizationSuccesses
+regionserver.RegionServer.exceptions
+regionserver.RegionServer.numActiveHandler
+regionserver.RegionServer.numCallsInGeneralQueue
+regionserver.RegionServer.numCallsInPriorityQueue
+regionserver.RegionServer.numCallsInReplicationQueue
+regionserver.RegionServer.numOpenConnections
+regionserver.RegionServer.queueSize
+regionserver.RegionServer.receivedBytes
+regionserver.RegionServer.sentBytes
+regionserver.Server.Append_75th_percentile
+regionserver.Server.Append_95th_percentile
+regionserver.Server.Append_99th_percentile
+regionserver.Server.Append_max
+regionserver.Server.Append_mean
+regionserver.Server.Append_median
+regionserver.Server.Append_min
+regionserver.Server.Append_num_ops
+regionserver.Server.Delete_75th_percentile
+regionserver.Server.Delete_95th_percentile
+regionserver.Server.Delete_99th_percentile
+regionserver.Server.Delete_max
+regionserver.Server.Delete_mean
+regionserver.Server.Delete_median
+regionserver.Server.Delete_min
+regionserver.Server.Delete_num_ops
+regionserver.Server.Get_75th_percentile
+regionserver.Server.Get_95th_percentile
+regionserver.Server.Get_99th_percentile
+regionserver.Server.Get_max
+regionserver.Server.Get_mean
+regionserver.Server.Get_median
+regionserver.Server.Get_min
+regionserver.Server.Get_num_ops
+regionserver.Server.Increment_75th_percentile
+regionserver.Server.Increment_95th_percentile
+regionserver.Server.Increment_99th_percentile
+regionserver.Server.Increment_max
+regionserver.Server.Increment_mean
+regionserver.Server.Increment_median
+regionserver.Server.Increment_min
+regionserver.Server.Increment_num_ops
+regionserver.Server.Mutate_75th_percentile
+regionserver.Server.Mutate_95th_percentile
+regionserver.Server.Mutate_99th_percentile
+regionserver.Server.Mutate_max
+regionserver.Server.Mutate_mean
+regionserver.Server.Mutate_median
+regionserver.Server.Mutate_min
+regionserver.Server.Mutate_num_ops
+regionserver.Server.Replay_75th_percentile
+regionserver.Server.Replay_95th_percentile
+regionserver.Server.Replay_99th_percentile
+regionserver.Server.Replay_max
+regionserver.Server.Replay_mean
+regionserver.Server.Replay_median
+regionserver.Server.Replay_min
+regionserver.Server.Replay_num_ops
+regionserver.Server.ScanNext_95th_percentile
+regionserver.Server.ScanNext_num_ops
+regionserver.Server.ScanTime_75th_percentile
+regionserver.Server.ScanTime_95th_percentile
+regionserver.Server.ScanTime_99th_percentile
+regionserver.Server.ScanTime_max
+regionserver.Server.ScanTime_mean
+regionserver.Server.ScanTime_median
+regionserver.Server.blockCacheCount
+regionserver.Server.blockCacheCountHitPercent
+regionserver.Server.blockCacheEvictionCount
+regionserver.Server.blockCacheExpressHitPercent
+regionserver.Server.blockCacheFreeSize
+regionserver.Server.blockCacheHitCount
+regionserver.Server.blockCacheMissCount
+regionserver.Server.blockCacheSize
+regionserver.Server.blockCountHitPercent
+regionserver.Server.compactionQueueLength
+regionserver.Server.flushQueueLength
+regionserver.Server.hlogFileCount
+regionserver.Server.hlogFileSize
+regionserver.Server.memStoreSize
+regionserver.Server.percentFilesLocal
+regionserver.Server.readRequestCount
+regionserver.Server.regionCount
+regionserver.Server.slowDeleteCount
+regionserver.Server.slowGetCount
+regionserver.Server.slowPutCount
+regionserver.Server.splitQueueLength
+regionserver.Server.staticBloomSize
+regionserver.Server.staticIndexSize
+regionserver.Server.storeCount
+regionserver.Server.storeFileCount
+regionserver.Server.storeFileIndexSize
+regionserver.Server.storeFileSize
+regionserver.Server.totalRequestCount
+regionserver.Server.updatesBlockedTime
+regionserver.Server.writeRequestCount
+regionserver.Tables.*_metric_averageRegionSize
+regionserver.Tables.*_metric_avgStoreFileAge
+regionserver.Tables.*_metric_flushMemstoreSize_95th_percentile
+regionserver.Tables.*_metric_flushMemstoreSize_max
+regionserver.Tables.*_metric_flushMemstoreSize_mean
+regionserver.Tables.*_metric_flushMemstoreSize_median
+regionserver.Tables.*_metric_flushOutputSize_95th_percentile
+regionserver.Tables.*_metric_flushOutputSize_max
+regionserver.Tables.*_metric_flushOutputSize_mean
+regionserver.Tables.*_metric_flushOutputSize_median
+regionserver.Tables.*_metric_flushTime_95th_percentile
+regionserver.Tables.*_metric_flushTime_max
+regionserver.Tables.*_metric_flushTime_mean
+regionserver.Tables.*_metric_flushTime_median
+regionserver.Tables.*_metric_flushTime_num_ops
+regionserver.Tables.*_metric_flushedMemstoreBytes
+regionserver.Tables.*_metric_flushedOutputBytes
+regionserver.Tables.*_metric_maxStoreFileAge
+regionserver.Tables.*_metric_memStoreSize
+regionserver.Tables.*_metric_minStoreFileAge
+regionserver.Tables.*_metric_numReferenceFiles
+regionserver.Tables.*_metric_readRequestCount
+regionserver.Tables.*_metric_regionCount
+regionserver.Tables.*_metric_storeCount
+regionserver.Tables.*_metric_storeFileCount
+regionserver.Tables.*_metric_storeFileSize
+regionserver.Tables.*_metric_tableSize
+regionserver.Tables.*_metric_totalRequestCount
+regionserver.Tables.*_metric_writeRequestCount
+regionserver.Users.*_metric_append_num_ops
+regionserver.Users.*_metric_delete_num_ops
+regionserver.Users.*_metric_get_num_ops
+regionserver.Users.*_metric_increment_num_ops
+regionserver.Users.*_metric_mutate_num_ops
+regionserver.Users.*_metric_scanTime_num_ops
+regionserver.WAL.AppendSize_75th_percentile
+regionserver.WAL.AppendSize_95th_percentile
+regionserver.WAL.AppendSize_99th_percentile
+regionserver.WAL.AppendSize_max
+regionserver.WAL.AppendSize_mean
+regionserver.WAL.AppendSize_median
+regionserver.WAL.AppendTime_75th_percentile
+regionserver.WAL.AppendTime_95th_percentile
+regionserver.WAL.AppendTime_99th_percentile
+regionserver.WAL.AppendTime_max
+regionserver.WAL.AppendTime_mean
+regionserver.WAL.AppendTime_median
+regionserver.WAL.SyncTime_75th_percentile
+regionserver.WAL.SyncTime_95th_percentile
+regionserver.WAL.SyncTime_99th_percentile
+regionserver.WAL.SyncTime_max
+regionserver.WAL.SyncTime_mean
+regionserver.WAL.SyncTime_median
+regionserver.WAL.SyncTime_num_ops
+regionserver.WAL.appendCount
+regionserver.WAL.slowAppendCount
+rpc.rpc.CallQueueLength
+rpc.rpc.NumOpenConnections
+rpc.rpc.RpcAuthenticationFailures
+rpc.rpc.RpcAuthorizationFailures
+rpc.rpc.RpcProcessingTimeAvgTime
+rpc.rpc.RpcQueueTimeAvgTime
+rpc.rpc.RpcSlowCalls
+rpc.rpc.client.CallQueueLength
+rpc.rpc.client.NumOpenConnections
+rpc.rpc.client.RpcClientBackoff
+rpc.rpc.client.RpcProcessingTimeAvgTime
+rpc.rpc.client.RpcProcessingTimeNumOps
+rpc.rpc.client.RpcQueueTimeAvgTime
+rpc.rpc.client.RpcQueueTimeNumOps
+rpc.rpc.client.RpcSlowCalls
+rpc.rpc.datanode.CallQueueLength
+rpc.rpc.datanode.RpcProcessingTimeAvgTime
+rpc.rpc.datanode.RpcProcessingTimeNumOps
+rpc.rpc.datanode.RpcQueueTimeAvgTime
+rpc.rpc.datanode.RpcQueueTimeNumOps
+rpc.rpc.datanode.RpcSlowCalls
+rpcdetailed.rpcdetailed.client.AddBlockAvgTime
+rpcdetailed.rpcdetailed.client.AddBlockNumOps
+swap_free
+swap_total
+threads.blocked.count
+threads.count
+threads.daemon.count
+threads.deadlock.count
+threads.runnable.count
+topology.*.%.--ack-count.%
+topology.*.%.--complete-latency.%
+topology.*.%.--emit-count.%
+topology.*.%.--execute-count.%
+topology.*.%.--fail-count.%
+topology.*.%.--receive.population
+topology.*.%.--sendqueue.population
+topology.*.*.%.--ack-count.%
+topology.*.*.%.--complete-latency.%
+topology.*.*.%.--emit-count.%
+topology.*.*.%.--execute-count.%
+topology.*.*.%.--fail-count.%
+topology.*.*.%.--process-latency.%
+topology.*.*.%.--receive.population
+topology.*.*.%.--sendqueue.population
+topology.*.--system.%.%.-1.GC/PSMarkSweep.count
+topology.*.--system.%.%.-1.GC/PSMarkSweep.timeMs
+topology.*.--system.%.%.-1.GC/PSScavenge.count
+topology.*.--system.%.%.-1.GC/PSScavenge.timeMs
+topology.*.--system.%.%.-1.memory/heap.usedBytes
+topology.*.--system.%.%.-1.memory/nonHeap.usedBytes
+topology.*.kafka-topic.*.*.latestCompletedOffset
+topology.*.kafka-topic.*.*.latestTimeOffset
+write_bps
+write_bytes
+write_count
+write_time
+yarn.ClusterMetrics.AMLaunchDelayAvgTime
+yarn.ClusterMetrics.AMRegisterDelayAvgTime
+yarn.ClusterMetrics.NumActiveNMs
+yarn.ClusterMetrics.NumLostNMs
+yarn.ClusterMetrics.NumUnhealthyNMs
+yarn.NodeManagerMetrics.AllocatedContainers
+yarn.NodeManagerMetrics.AllocatedGB
+yarn.NodeManagerMetrics.AllocatedVCores
+yarn.NodeManagerMetrics.AvailableGB
+yarn.NodeManagerMetrics.BadLocalDirs
+yarn.NodeManagerMetrics.BadLogDirs
+yarn.NodeManagerMetrics.ContainerLaunchDurationAvgTime
+yarn.NodeManagerMetrics.ContainersCompleted
+yarn.NodeManagerMetrics.ContainersFailed
+yarn.NodeManagerMetrics.ContainersIniting
+yarn.NodeManagerMetrics.ContainersKilled
+yarn.NodeManagerMetrics.ContainersLaunched
+yarn.NodeManagerMetrics.ContainersRunning
+yarn.NodeManagerMetrics.GoodLocalDirsDiskUtilizationPerc
+yarn.NodeManagerMetrics.GoodLogDirsDiskUtilizationPerc
+yarn.QueueMetrics.Queue=root.AMResourceLimitMB
+yarn.QueueMetrics.Queue=root.AggregateContainersAllocated
+yarn.QueueMetrics.Queue=root.AggregateNodeLocalContainersAllocated
+yarn.QueueMetrics.Queue=root.AggregateOffSwitchContainersAllocated
+yarn.QueueMetrics.Queue=root.AggregateRackLocalContainersAllocated
+yarn.QueueMetrics.Queue=root.AllocatedContainers
+yarn.QueueMetrics.Queue=root.AllocatedMB
+yarn.QueueMetrics.Queue=root.AllocatedVCores
+yarn.QueueMetrics.Queue=root.AppAttemptFirstContainerAllocationDelayAvgTime
+yarn.QueueMetrics.Queue=root.AppsCompleted
+yarn.QueueMetrics.Queue=root.AppsFailed
+yarn.QueueMetrics.Queue=root.AppsKilled
+yarn.QueueMetrics.Queue=root.AppsPending
+yarn.QueueMetrics.Queue=root.AppsRunning
+yarn.QueueMetrics.Queue=root.AppsSubmitted
+yarn.QueueMetrics.Queue=root.AvailableMB
+yarn.QueueMetrics.Queue=root.AvailableVCores
+yarn.QueueMetrics.Queue=root.PendingContainers
+yarn.QueueMetrics.Queue=root.PendingMB
+yarn.QueueMetrics.Queue=root.UsedAMResourceMB
+yarn.QueueMetrics.Queue=root.default.ReservedContainers
+yarn.QueueMetrics.Queue=root.default.ReservedMB
+yarn.QueueMetrics.Queue=root.running_0
+yarn.QueueMetrics.Queue=root.running_1440
+yarn.QueueMetrics.Queue=root.running_300
+yarn.QueueMetrics.Queue=root.running_60
+yarn.TimelineDataManagerMetrics.GetEntitiesTimeAvgTime
+yarn.TimelineDataManagerMetrics.GetEntitiesTotal
+yarn.TimelineDataManagerMetrics.PostEntitiesTimeAvgTime
+yarn.TimelineDataManagerMetrics.PostEntitiesTotal
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/pom.xml b/ambari-metrics/ambari-metrics-timelineservice/pom.xml
index a32ba00..8f8f907 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/pom.xml
+++ b/ambari-metrics/ambari-metrics-timelineservice/pom.xml
@@ -208,6 +208,9 @@
<location>conf/unix/log4j.properties</location>
</source>
<source>
+ <location>conf/unix/metrics_whitelist</location>
+ </source>
+ <source>
<location>target/embedded/${hbase.folder}/conf/hbase-site.xml</location>
</source>
</sources>
@@ -244,6 +247,24 @@
</configuration>
</plugin>
<plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>conf/unix/metrics_whitelist</exclude>
+ <exclude>conf/windows/metrics_whitelist</exclude>
+ </excludes>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>test</phase>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
<groupId>org.vafer</groupId>
<artifactId>jdeb</artifactId>
<version>1.0.1</version>
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStore.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStore.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStore.java
index 844ee41..b249d05 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStore.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStore.java
@@ -31,7 +31,6 @@ import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics;
import org.apache.hadoop.metrics2.sink.timeline.TopNConfig;
import org.apache.hadoop.service.AbstractService;
import org.apache.hadoop.yarn.api.records.timeline.TimelinePutResponse;
-import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.AggregatorUtils;
import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.Function;
import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.TimelineMetricAggregator;
import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.TimelineMetricAggregatorFactory;
@@ -64,7 +63,6 @@ import java.util.concurrent.TimeUnit;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.AGGREGATOR_CHECKPOINT_DELAY;
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.DEFAULT_TOPN_HOSTS_LIMIT;
-import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_WHITELIST_FILE;
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.USE_GROUPBY_AGGREGATOR_QUERIES;
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.availability.AggregationTaskRunner.ACTUAL_AGGREGATOR_NAMES;
@@ -117,10 +115,8 @@ public class HBaseTimelineMetricStore extends AbstractService implements Timelin
"initialize HA controller", e);
}
- String whitelistFile = metricsConf.get(TIMELINE_METRICS_WHITELIST_FILE, "");
- if (!StringUtils.isEmpty(whitelistFile)) {
- AggregatorUtils.populateMetricWhitelistFromFile(whitelistFile);
- }
+ //Initialize whitelisting & blacklisting if needed
+ TimelineMetricsFilter.initializeMetricFilter(metricsConf);
defaultTopNHostsLimit = Integer.parseInt(metricsConf.get(DEFAULT_TOPN_HOSTS_LIMIT, "20"));
if (Boolean.parseBoolean(metricsConf.get(USE_GROUPBY_AGGREGATOR_QUERIES, "true"))) {
@@ -359,13 +355,19 @@ public class HBaseTimelineMetricStore extends AbstractService implements Timelin
}
@Override
- public Map<String, List<TimelineMetricMetadata>> getTimelineMetricMetadata() throws SQLException, IOException {
+ public Map<String, List<TimelineMetricMetadata>> getTimelineMetricMetadata(String query) throws SQLException, IOException {
Map<TimelineMetricMetadataKey, TimelineMetricMetadata> metadata =
metricMetadataManager.getMetadataCache();
+ boolean includeBlacklistedMetrics = StringUtils.isNotEmpty(query) && "all".equalsIgnoreCase(query);
+
// Group Metadata by AppId
Map<String, List<TimelineMetricMetadata>> metadataByAppId = new HashMap<>();
for (TimelineMetricMetadata metricMetadata : metadata.values()) {
+
+ if (!includeBlacklistedMetrics && !metricMetadata.isWhitelisted()) {
+ continue;
+ }
List<TimelineMetricMetadata> metadataList = metadataByAppId.get(metricMetadata.getAppId());
if (metadataList == null) {
metadataList = new ArrayList<>();
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
index f40dd6c..b4b8c28 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/PhoenixHBaseAccessor.java
@@ -18,7 +18,6 @@
package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline;
import com.google.common.collect.Multimap;
-import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -111,6 +110,7 @@ import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.ti
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.query.PhoenixTransactSQL.CREATE_METRICS_CLUSTER_AGGREGATE_GROUPED_TABLE_SQL;
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.query.PhoenixTransactSQL.CREATE_METRICS_CLUSTER_AGGREGATE_TABLE_SQL;
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.query.PhoenixTransactSQL.CREATE_METRICS_METADATA_TABLE_SQL;
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.query.PhoenixTransactSQL.ALTER_METRICS_METADATA_TABLE;
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.query.PhoenixTransactSQL.CREATE_METRICS_TABLE_SQL;
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.query.PhoenixTransactSQL.DEFAULT_ENCODING;
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.query.PhoenixTransactSQL.DEFAULT_TABLE_COMPRESSION;
@@ -403,6 +403,8 @@ public class PhoenixHBaseAccessor {
String metadataSql = String.format(CREATE_METRICS_METADATA_TABLE_SQL,
encoding, compression);
stmt.executeUpdate(metadataSql);
+ stmt.executeUpdate(ALTER_METRICS_METADATA_TABLE);
+
String hostedAppSql = String.format(CREATE_HOSTED_APPS_METADATA_TABLE_SQL,
encoding, compression);
stmt.executeUpdate(hostedAppSql);
@@ -718,20 +720,19 @@ public class PhoenixHBaseAccessor {
TimelineMetric tm = iterator.next();
- if (CollectionUtils.isNotEmpty(AggregatorUtils.whitelistedMetrics) &&
- !AggregatorUtils.whitelistedMetrics.contains(tm.getMetricName())) {
- iterator.remove();
- continue;
- }
+ boolean acceptMetric = TimelineMetricsFilter.acceptMetric(tm);
// Write to metadata cache on successful write to store
if (metadataManager != null) {
metadataManager.putIfModifiedTimelineMetricMetadata(
- metadataManager.getTimelineMetricMetadata(tm));
+ metadataManager.getTimelineMetricMetadata(tm, acceptMetric));
metadataManager.putIfModifiedHostedAppsMetadata(
tm.getHostName(), tm.getAppId());
}
+ if (!acceptMetric) {
+ iterator.remove();
+ }
}
if (!skipCache && cacheEnabled) {
@@ -1469,6 +1470,7 @@ public class PhoenixHBaseAccessor {
stmt.setString(4, metadata.getType());
stmt.setLong(5, metadata.getSeriesStartTime());
stmt.setBoolean(6, metadata.isSupportsAggregates());
+ stmt.setBoolean(7, metadata.isWhitelisted());
try {
stmt.executeUpdate();
@@ -1561,7 +1563,8 @@ public class PhoenixHBaseAccessor {
rs.getString("UNITS"),
rs.getString("TYPE"),
rs.getLong("START_TIME"),
- rs.getBoolean("SUPPORTS_AGGREGATION")
+ rs.getBoolean("SUPPORTS_AGGREGATION"),
+ rs.getBoolean("IS_WHITELISTED")
);
TimelineMetricMetadataKey key = new TimelineMetricMetadataKey(metricName, appId);
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
index 27caf88..7bbd5aa 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
@@ -243,6 +243,9 @@ public class TimelineMetricConfiguration {
public static final String TIMELINE_METRICS_WHITELIST_FILE =
"timeline.metrics.whitelist.file";
+ public static final String TIMELINE_METRICS_APPS_BLACKLIST =
+ "timeline.metrics.apps.blacklist";
+
public static final String HBASE_BLOCKING_STORE_FILES =
"hbase.hstore.blockingStoreFiles";
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricStore.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricStore.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricStore.java
index 57186f5..d049e33 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricStore.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricStore.java
@@ -78,7 +78,7 @@ public interface TimelineMetricStore {
* @throws SQLException
* @throws IOException
*/
- Map<String, List<TimelineMetricMetadata>> getTimelineMetricMetadata() throws SQLException, IOException;
+ Map<String, List<TimelineMetricMetadata>> getTimelineMetricMetadata(String query) throws SQLException, IOException;
/**
* Returns all hosts that have written metrics with the apps on the host
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
new file mode 100644
index 0000000..d05353d
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
@@ -0,0 +1,153 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_WHITELIST_FILE;
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_APPS_BLACKLIST;
+
+public class TimelineMetricsFilter {
+
+ private static Set<String> whitelistedMetrics;
+ private static Set<Pattern> whitelistedMetricPatterns;
+ private static boolean metricWhitelistingEnabled;
+ private static boolean appBlacklistingEnabled;
+ private static Set<String> blacklistedApps;
+ private static String patternPrefix = "._p_";
+
+ private static final Log LOG = LogFactory.getLog(TimelineMetricsFilter.class);
+
+ public static void initializeMetricFilter(Configuration metricsConf) {
+
+ whitelistedMetrics = new HashSet<String>();
+ whitelistedMetricPatterns = new HashSet<Pattern>();
+ blacklistedApps = new HashSet<>();
+ metricWhitelistingEnabled = false;
+ appBlacklistingEnabled = false;
+
+ String whitelistFile = metricsConf.get(TIMELINE_METRICS_WHITELIST_FILE, "");
+ if (!StringUtils.isEmpty(whitelistFile)) {
+ metricWhitelistingEnabled = true;
+ readMetricWhitelistFromFile(whitelistFile);
+ }
+
+ String appsBlacklist = metricsConf.get(TIMELINE_METRICS_APPS_BLACKLIST, "");
+ if (!StringUtils.isEmpty(appsBlacklist)) {
+ appBlacklistingEnabled = true;
+ for (String app : appsBlacklist.split(",")) {
+ blacklistedApps.add(app);
+ }
+ LOG.info("Blacklisted apps : " + blacklistedApps.toString());
+ }
+ }
+
+ private static void readMetricWhitelistFromFile(String whitelistFile) {
+
+ BufferedReader br = null;
+ String strLine;
+
+ try(FileInputStream fstream = new FileInputStream(whitelistFile)) {
+ br = new BufferedReader(new InputStreamReader(fstream));
+
+ while ((strLine = br.readLine()) != null) {
+ strLine = strLine.trim();
+ if (StringUtils.isEmpty(strLine)) {
+ continue;
+ }
+ if (strLine.startsWith(patternPrefix)) {
+ whitelistedMetricPatterns.add(Pattern.compile(strLine.substring(patternPrefix.length())));
+ } else {
+ whitelistedMetrics.add(strLine);
+ }
+ }
+ } catch (IOException ioEx) {
+ LOG.error("Unable to parse metric whitelist file", ioEx);
+ }
+
+ LOG.info("Whitelisting " + whitelistedMetrics.size() + " metrics");
+ LOG.debug("Whitelisted metrics : " + Arrays.toString(whitelistedMetrics.toArray()));
+ }
+
+ public static boolean acceptMetric(String metricName, String appId) {
+ TimelineMetric timelineMetric = new TimelineMetric();
+ timelineMetric.setAppId(appId);
+ timelineMetric.setMetricName(metricName);
+ return acceptMetric(timelineMetric);
+ }
+
+ public static boolean acceptMetric(TimelineMetric metric) {
+
+ if (!isEnabled()) {
+ return true;
+ }
+
+ // App takes precedence.
+ if (blacklistedApps.contains(metric.getAppId())) {
+ return false;
+ }
+
+ if (!metricWhitelistingEnabled) {
+ return true;
+ }
+
+ if (whitelistedMetrics.contains(metric.getMetricName())) {
+ return true;
+ }
+
+ for (Pattern p : whitelistedMetricPatterns) {
+ Matcher m = p.matcher(metric.getMetricName());
+ if (m.find()) {
+ whitelistedMetrics.add(metric.getMetricName());
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public static void addToWhitelist(String metricName) {
+
+ if (StringUtils.isNotEmpty(metricName)) {
+ if (!metricWhitelistingEnabled) {
+ metricWhitelistingEnabled = true;
+ }
+
+ whitelistedMetrics.add(metricName);
+ }
+ }
+
+ public static boolean isEnabled() {
+ return appBlacklistingEnabled || metricWhitelistingEnabled;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/aggregators/AggregatorUtils.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/aggregators/AggregatorUtils.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/aggregators/AggregatorUtils.java
index 55b1c1b..20f72c6 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/aggregators/AggregatorUtils.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/aggregators/AggregatorUtils.java
@@ -18,15 +18,7 @@
package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators;
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.Arrays;
-import java.util.HashSet;
import java.util.Map;
-import java.util.Set;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -35,7 +27,6 @@ import org.apache.commons.logging.LogFactory;
*/
public class AggregatorUtils {
- public static Set<String> whitelistedMetrics = new HashSet<String>();
private static final Log LOG = LogFactory.getLog(AggregatorUtils.class);
public static double[] calculateAggregates(Map<Long, Double> metricValues) {
@@ -68,40 +59,4 @@ public class AggregatorUtils {
return values;
}
-
- public static void populateMetricWhitelistFromFile(String whitelistFile) {
-
- FileInputStream fstream = null;
- BufferedReader br = null;
- String strLine;
-
- try {
- fstream = new FileInputStream(whitelistFile);
- br = new BufferedReader(new InputStreamReader(fstream));
-
- while ((strLine = br.readLine()) != null) {
- strLine = strLine.trim();
- whitelistedMetrics.add(strLine);
- }
- } catch (IOException ioEx) {
- LOG.error("Unable to parse metric whitelist file", ioEx);
- } finally {
- if (br != null) {
- try {
- br.close();
- } catch (IOException e) {
- }
- }
-
- if (fstream != null) {
- try {
- fstream.close();
- } catch (IOException e) {
- }
- }
- }
- LOG.info("Whitelisting " + whitelistedMetrics.size() + " metrics");
- LOG.debug("Whitelisted metrics : " + Arrays.toString(whitelistedMetrics.toArray()));
- }
-
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/aggregators/TimelineMetricAppAggregator.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/aggregators/TimelineMetricAppAggregator.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/aggregators/TimelineMetricAppAggregator.java
index 0d6a09e..d7b0d55 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/aggregators/TimelineMetricAppAggregator.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/aggregators/TimelineMetricAppAggregator.java
@@ -21,12 +21,11 @@ import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
import org.apache.hadoop.metrics2.sink.timeline.TimelineMetricMetadata;
+import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricsFilter;
import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.discovery.TimelineMetricMetadataKey;
import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.discovery.TimelineMetricMetadataManager;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -141,7 +140,7 @@ public class TimelineMetricAppAggregator {
if (hostMetricMetadata != null) {
TimelineMetricMetadata timelineMetricMetadata = new TimelineMetricMetadata(clusterMetric.getMetricName(),
appId, hostMetricMetadata.getUnits(), hostMetricMetadata.getType(), hostMetricMetadata.getSeriesStartTime(),
- hostMetricMetadata.isSupportsAggregates());
+ hostMetricMetadata.isSupportsAggregates(), TimelineMetricsFilter.acceptMetric(clusterMetric.getMetricName(), appId));
metadataManagerInstance.putIfModifiedTimelineMetricMetadata(timelineMetricMetadata);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/discovery/TimelineMetricMetadataManager.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/discovery/TimelineMetricMetadataManager.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/discovery/TimelineMetricMetadataManager.java
index 3e4fc5f..312abfc 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/discovery/TimelineMetricMetadataManager.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/discovery/TimelineMetricMetadataManager.java
@@ -196,14 +196,15 @@ public class TimelineMetricMetadataManager {
hBaseAccessor.saveHostAppsMetadata(hostedApps);
}
- public TimelineMetricMetadata getTimelineMetricMetadata(TimelineMetric timelineMetric) {
+ public TimelineMetricMetadata getTimelineMetricMetadata(TimelineMetric timelineMetric, boolean isWhitelisted) {
return new TimelineMetricMetadata(
timelineMetric.getMetricName(),
timelineMetric.getAppId(),
timelineMetric.getUnits(),
timelineMetric.getType(),
timelineMetric.getStartTime(),
- supportAggregates(timelineMetric)
+ supportAggregates(timelineMetric),
+ isWhitelisted
);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/query/PhoenixTransactSQL.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/query/PhoenixTransactSQL.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/query/PhoenixTransactSQL.java
index bc218f2..0c8e5a7 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/query/PhoenixTransactSQL.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/query/PhoenixTransactSQL.java
@@ -137,7 +137,8 @@ public class PhoenixTransactSQL {
"UNITS CHAR(20), " +
"TYPE CHAR(20), " +
"START_TIME UNSIGNED_LONG, " +
- "SUPPORTS_AGGREGATION BOOLEAN " +
+ "SUPPORTS_AGGREGATION BOOLEAN, " +
+ "IS_WHITELISTED BOOLEAN " +
"CONSTRAINT pk PRIMARY KEY (METRIC_NAME, APP_ID)) " +
"DATA_BLOCK_ENCODING='%s', COMPRESSION='%s'";
@@ -147,6 +148,9 @@ public class PhoenixTransactSQL {
"CONSTRAINT pk PRIMARY KEY (HOSTNAME))" +
"DATA_BLOCK_ENCODING='%s', COMPRESSION='%s'";
+ public static final String ALTER_METRICS_METADATA_TABLE =
+ "ALTER TABLE METRICS_METADATA ADD IF NOT EXISTS IS_WHITELISTED BOOLEAN";
+
/**
* ALTER table to set new options
*/
@@ -220,8 +224,8 @@ public class PhoenixTransactSQL {
public static final String UPSERT_METADATA_SQL =
"UPSERT INTO METRICS_METADATA (METRIC_NAME, APP_ID, UNITS, TYPE, " +
- "START_TIME, SUPPORTS_AGGREGATION) " +
- "VALUES (?, ?, ?, ?, ?, ?)";
+ "START_TIME, SUPPORTS_AGGREGATION, IS_WHITELISTED) " +
+ "VALUES (?, ?, ?, ?, ?, ?, ?)";
public static final String UPSERT_HOSTED_APPS_METADATA_SQL =
"UPSERT INTO HOSTED_APPS_METADATA (HOSTNAME, APP_IDS) VALUES (?, ?)";
@@ -300,7 +304,7 @@ public class PhoenixTransactSQL {
public static final String GET_METRIC_METADATA_SQL = "SELECT " +
"METRIC_NAME, APP_ID, UNITS, TYPE, START_TIME, " +
- "SUPPORTS_AGGREGATION FROM METRICS_METADATA";
+ "SUPPORTS_AGGREGATION, IS_WHITELISTED FROM METRICS_METADATA";
public static final String GET_HOSTED_APPS_METADATA_SQL = "SELECT " +
"HOSTNAME, APP_IDS FROM HOSTED_APPS_METADATA";
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TimelineWebServices.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TimelineWebServices.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TimelineWebServices.java
index 6b15e29..304a8e0 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TimelineWebServices.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/webapp/TimelineWebServices.java
@@ -384,12 +384,13 @@ public class TimelineWebServices {
@Produces({ MediaType.APPLICATION_JSON })
public Map<String, List<TimelineMetricMetadata>> getTimelineMetricMetadata(
@Context HttpServletRequest req,
- @Context HttpServletResponse res
- ) {
+ @Context HttpServletResponse res,
+ @QueryParam("query") String query
+ ) {
init(res);
try {
- return timelineMetricStore.getTimelineMetricMetadata();
+ return timelineMetricStore.getTimelineMetricMetadata(query);
} catch (Exception e) {
throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TestTimelineMetricStore.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TestTimelineMetricStore.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TestTimelineMetricStore.java
index 2e2d3a8..b2e8cac 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TestTimelineMetricStore.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TestTimelineMetricStore.java
@@ -87,7 +87,7 @@ public class TestTimelineMetricStore implements TimelineMetricStore {
}
@Override
- public Map<String, List<TimelineMetricMetadata>> getTimelineMetricMetadata() throws SQLException, IOException {
+ public Map<String, List<TimelineMetricMetadata>> getTimelineMetricMetadata(String query) throws SQLException, IOException {
return null;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c84c42bb/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
new file mode 100644
index 0000000..049d473
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
@@ -0,0 +1,99 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline;
+
+import junit.framework.Assert;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
+import org.junit.Test;
+import java.net.URL;
+
+public class TimelineMetricsFilterTest {
+
+ @Test
+ public void testAppBlacklisting() {
+
+ Configuration metricsConf = new Configuration();
+ metricsConf.set("timeline.metrics.apps.blacklist", "hbase,datanode,nimbus");
+ TimelineMetricsFilter.initializeMetricFilter(metricsConf);
+
+ TimelineMetric timelineMetric = new TimelineMetric();
+
+ timelineMetric.setAppId("hbase");
+ Assert.assertFalse(TimelineMetricsFilter.acceptMetric(timelineMetric));
+
+ timelineMetric.setAppId("namenode");
+ Assert.assertTrue(TimelineMetricsFilter.acceptMetric(timelineMetric));
+
+ timelineMetric.setAppId("nimbus");
+ Assert.assertFalse(TimelineMetricsFilter.acceptMetric(timelineMetric));
+ }
+
+ @Test
+ public void testMetricWhitelisting() throws Exception {
+
+ Configuration metricsConf = new Configuration();
+ URL fileUrl = ClassLoader.getSystemResource("test_data/metric_whitelist.dat");
+
+ metricsConf.set("timeline.metrics.whitelist.file", fileUrl.getPath());
+ TimelineMetricsFilter.initializeMetricFilter(metricsConf);
+
+ TimelineMetric timelineMetric = new TimelineMetric();
+
+ timelineMetric.setMetricName("cpu_system");
+ Assert.assertTrue(TimelineMetricsFilter.acceptMetric(timelineMetric));
+
+ timelineMetric.setMetricName("cpu_system1");
+ Assert.assertFalse(TimelineMetricsFilter.acceptMetric(timelineMetric));
+
+ timelineMetric.setMetricName("jvm.JvmMetrics.MemHeapUsedM");
+ Assert.assertTrue(TimelineMetricsFilter.acceptMetric(timelineMetric));
+
+ timelineMetric.setMetricName("dfs.FSNamesystem.TotalFiles");
+ Assert.assertTrue(TimelineMetricsFilter.acceptMetric(timelineMetric));
+ }
+
+ @Test
+ public void testTogether() throws Exception {
+
+ Configuration metricsConf = new Configuration();
+ metricsConf.set("timeline.metrics.apps.blacklist", "hbase,datanode,nimbus");
+
+ URL fileUrl = ClassLoader.getSystemResource("test_data/metric_whitelist.dat");
+ metricsConf.set("timeline.metrics.whitelist.file", fileUrl.getPath());
+
+ TimelineMetricsFilter.initializeMetricFilter(metricsConf);
+
+ TimelineMetric timelineMetric = new TimelineMetric();
+
+ timelineMetric.setMetricName("cpu_system");
+ timelineMetric.setAppId("hbase");
+ Assert.assertFalse(TimelineMetricsFilter.acceptMetric(timelineMetric));
+
+ timelineMetric.setMetricName("cpu_system");
+ timelineMetric.setAppId("HOST");
+ Assert.assertTrue(TimelineMetricsFilter.acceptMetric(timelineMetric));
+
+ timelineMetric.setMetricName("jvm.JvmMetrics.MemHeapUsedM");
+ Assert.assertTrue(TimelineMetricsFilter.acceptMetric(timelineMetric));
+
+ timelineMetric.setMetricName("dfs.FSNamesystem.TotalFiles");
+ Assert.assertTrue(TimelineMetricsFilter.acceptMetric(timelineMetric));
+ }
+
+}