Add Elasticsearch query input plugin (#3536)
This commit is contained in:
parent
1453c47f01
commit
81f882a271
|
|
@ -6,3 +6,4 @@
|
||||||
/vendor
|
/vendor
|
||||||
.DS_Store
|
.DS_Store
|
||||||
process.yml
|
process.yml
|
||||||
|
/.vscode
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ import (
|
||||||
_ "github.com/influxdata/telegraf/plugins/inputs/dpdk"
|
_ "github.com/influxdata/telegraf/plugins/inputs/dpdk"
|
||||||
_ "github.com/influxdata/telegraf/plugins/inputs/ecs"
|
_ "github.com/influxdata/telegraf/plugins/inputs/ecs"
|
||||||
_ "github.com/influxdata/telegraf/plugins/inputs/elasticsearch"
|
_ "github.com/influxdata/telegraf/plugins/inputs/elasticsearch"
|
||||||
|
_ "github.com/influxdata/telegraf/plugins/inputs/elasticsearch_query"
|
||||||
_ "github.com/influxdata/telegraf/plugins/inputs/ethtool"
|
_ "github.com/influxdata/telegraf/plugins/inputs/ethtool"
|
||||||
_ "github.com/influxdata/telegraf/plugins/inputs/eventhub_consumer"
|
_ "github.com/influxdata/telegraf/plugins/inputs/eventhub_consumer"
|
||||||
_ "github.com/influxdata/telegraf/plugins/inputs/exec"
|
_ "github.com/influxdata/telegraf/plugins/inputs/exec"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,158 @@
|
||||||
|
# Elasticsearch query input plugin
|
||||||
|
|
||||||
|
This [elasticsearch](https://www.elastic.co/) query plugin queries endpoints to obtain metrics from data stored in an Elasticsearch cluster.
|
||||||
|
|
||||||
|
The following is supported:
|
||||||
|
|
||||||
|
- return number of hits for a search query
|
||||||
|
- calculate the avg/max/min/sum for a numeric field, filtered by a query, aggregated per tag
|
||||||
|
- count number of terms for a particular field
|
||||||
|
|
||||||
|
## Elasticsearch support
|
||||||
|
|
||||||
|
This plugins is tested against Elasticsearch 5.x and 6.x releases.
|
||||||
|
Currently it is known to break on 7.x or greater versions.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[[inputs.elasticsearch_query]]
|
||||||
|
## The full HTTP endpoint URL for your Elasticsearch instance
|
||||||
|
## Multiple urls can be specified as part of the same cluster,
|
||||||
|
## this means that only ONE of the urls will be written to each interval.
|
||||||
|
urls = [ "http://node1.es.example.com:9200" ] # required.
|
||||||
|
|
||||||
|
## Elasticsearch client timeout, defaults to "5s".
|
||||||
|
# timeout = "5s"
|
||||||
|
|
||||||
|
## Set to true to ask Elasticsearch a list of all cluster nodes,
|
||||||
|
## thus it is not necessary to list all nodes in the urls config option
|
||||||
|
# enable_sniffer = false
|
||||||
|
|
||||||
|
## Set the interval to check if the Elasticsearch nodes are available
|
||||||
|
## This option is only used if enable_sniffer is also set (0s to disable it)
|
||||||
|
# health_check_interval = "10s"
|
||||||
|
|
||||||
|
## HTTP basic authentication details (eg. when using x-pack)
|
||||||
|
# username = "telegraf"
|
||||||
|
# password = "mypassword"
|
||||||
|
|
||||||
|
## Optional TLS Config
|
||||||
|
# tls_ca = "/etc/telegraf/ca.pem"
|
||||||
|
# tls_cert = "/etc/telegraf/cert.pem"
|
||||||
|
# tls_key = "/etc/telegraf/key.pem"
|
||||||
|
## Use TLS but skip chain & host verification
|
||||||
|
# insecure_skip_verify = false
|
||||||
|
|
||||||
|
[[inputs.elasticsearch_query.aggregation]]
|
||||||
|
## measurement name for the results of the aggregation query
|
||||||
|
measurement_name = "measurement"
|
||||||
|
|
||||||
|
## Elasticsearch indexes to query (accept wildcards).
|
||||||
|
index = "index-*"
|
||||||
|
|
||||||
|
## The date/time field in the Elasticsearch index (mandatory).
|
||||||
|
date_field = "@timestamp"
|
||||||
|
|
||||||
|
## Time window to query (eg. "1m" to query documents from last minute).
|
||||||
|
## Normally should be set to same as collection interval
|
||||||
|
query_period = "1m"
|
||||||
|
|
||||||
|
## Lucene query to filter results
|
||||||
|
# filter_query = "*"
|
||||||
|
|
||||||
|
## Fields to aggregate values (must be numeric fields)
|
||||||
|
# metric_fields = ["metric"]
|
||||||
|
|
||||||
|
## Aggregation function to use on the metric fields
|
||||||
|
## Must be set if 'metric_fields' is set
|
||||||
|
## Valid values are: avg, sum, min, max, sum
|
||||||
|
# metric_function = "avg"
|
||||||
|
|
||||||
|
## Fields to be used as tags
|
||||||
|
## Must be text, non-analyzed fields. Metric aggregations are performed per tag
|
||||||
|
# tags = ["field.keyword", "field2.keyword"]
|
||||||
|
|
||||||
|
## Set to true to not ignore documents when the tag(s) above are missing
|
||||||
|
# include_missing_tag = false
|
||||||
|
|
||||||
|
## String value of the tag when the tag does not exist
|
||||||
|
## Used when include_missing_tag is true
|
||||||
|
# missing_tag_value = "null"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
Please note that the `[[inputs.elasticsearch_query]]` is still required for all of the examples below.
|
||||||
|
|
||||||
|
### Search the average response time, per URI and per response status code
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[[inputs.elasticsearch_query.aggregation]]
|
||||||
|
measurement_name = "http_logs"
|
||||||
|
index = "my-index-*"
|
||||||
|
filter_query = "*"
|
||||||
|
metric_fields = ["response_time"]
|
||||||
|
metric_function = "avg"
|
||||||
|
tags = ["URI.keyword", "response.keyword"]
|
||||||
|
include_missing_tag = true
|
||||||
|
missing_tag_value = "null"
|
||||||
|
date_field = "@timestamp"
|
||||||
|
query_period = "1m"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Search the maximum response time per method and per URI
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[[inputs.elasticsearch_query.aggregation]]
|
||||||
|
measurement_name = "http_logs"
|
||||||
|
index = "my-index-*"
|
||||||
|
filter_query = "*"
|
||||||
|
metric_fields = ["response_time"]
|
||||||
|
metric_function = "max"
|
||||||
|
tags = ["method.keyword","URI.keyword"]
|
||||||
|
include_missing_tag = false
|
||||||
|
missing_tag_value = "null"
|
||||||
|
date_field = "@timestamp"
|
||||||
|
query_period = "1m"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Search number of documents matching a filter query in all indices
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[[inputs.elasticsearch_query.aggregation]]
|
||||||
|
measurement_name = "http_logs"
|
||||||
|
index = "*"
|
||||||
|
filter_query = "product_1 AND HEAD"
|
||||||
|
query_period = "1m"
|
||||||
|
date_field = "@timestamp"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Search number of documents matching a filter query, returning per response status code
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[[inputs.elasticsearch_query.aggregation]]
|
||||||
|
measurement_name = "http_logs"
|
||||||
|
index = "*"
|
||||||
|
filter_query = "downloads"
|
||||||
|
tags = ["response.keyword"]
|
||||||
|
include_missing_tag = false
|
||||||
|
date_field = "@timestamp"
|
||||||
|
query_period = "1m"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Required parameters
|
||||||
|
|
||||||
|
- `measurement_name`: The target measurement to be stored the results of the aggregation query.
|
||||||
|
- `index`: The index name to query on Elasticsearch
|
||||||
|
- `query_period`: The time window to query (eg. "1m" to query documents from last minute). Normally should be set to same as collection
|
||||||
|
- `date_field`: The date/time field in the Elasticsearch index
|
||||||
|
|
||||||
|
### Optional parameters
|
||||||
|
|
||||||
|
- `filter_query`: Lucene query to filter the results (default: "\*")
|
||||||
|
- `metric_fields`: The list of fields to perform metric aggregation (these must be indexed as numeric fields)
|
||||||
|
- `metric_funcion`: The single-value metric aggregation function to be performed on the `metric_fields` defined. Currently supported aggregations are "avg", "min", "max", "sum". (see [https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics.html)
|
||||||
|
- `tags`: The list of fields to be used as tags (these must be indexed as non-analyzed fields). A "terms aggregation" will be done per tag defined
|
||||||
|
- `include_missing_tag`: Set to true to not ignore documents where the tag(s) specified above does not exist. (If false, documents without the specified tag field will be ignored in `doc_count` and in the metric aggregation)
|
||||||
|
- `missing_tag_value`: The value of the tag that will be set for documents in which the tag field does not exist. Only used when `include_missing_tag` is set to `true`.
|
||||||
|
|
@ -0,0 +1,153 @@
|
||||||
|
package elasticsearch_query
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/influxdata/telegraf"
|
||||||
|
elastic5 "gopkg.in/olivere/elastic.v5"
|
||||||
|
)
|
||||||
|
|
||||||
|
type resultMetric struct {
|
||||||
|
name string
|
||||||
|
fields map[string]interface{}
|
||||||
|
tags map[string]string
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseSimpleResult(acc telegraf.Accumulator, measurement string, searchResult *elastic5.SearchResult) {
|
||||||
|
fields := make(map[string]interface{})
|
||||||
|
tags := make(map[string]string)
|
||||||
|
|
||||||
|
fields["doc_count"] = searchResult.Hits.TotalHits
|
||||||
|
|
||||||
|
acc.AddFields(measurement, fields, tags)
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseAggregationResult(acc telegraf.Accumulator, aggregationQueryList []aggregationQueryData, searchResult *elastic5.SearchResult) error {
|
||||||
|
measurements := map[string]map[string]string{}
|
||||||
|
|
||||||
|
// organize the aggregation query data by measurement
|
||||||
|
for _, aggregationQuery := range aggregationQueryList {
|
||||||
|
if measurements[aggregationQuery.measurement] == nil {
|
||||||
|
measurements[aggregationQuery.measurement] = map[string]string{
|
||||||
|
aggregationQuery.name: aggregationQuery.function,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
t := measurements[aggregationQuery.measurement]
|
||||||
|
t[aggregationQuery.name] = aggregationQuery.function
|
||||||
|
measurements[aggregationQuery.measurement] = t
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// recurse over query aggregation results per measurement
|
||||||
|
for measurement, aggNameFunction := range measurements {
|
||||||
|
var m resultMetric
|
||||||
|
|
||||||
|
m.fields = make(map[string]interface{})
|
||||||
|
m.tags = make(map[string]string)
|
||||||
|
m.name = measurement
|
||||||
|
|
||||||
|
_, err := recurseResponse(acc, aggNameFunction, searchResult.Aggregations, m)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func recurseResponse(acc telegraf.Accumulator, aggNameFunction map[string]string, bucketResponse elastic5.Aggregations, m resultMetric) (resultMetric, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
aggNames := getAggNames(bucketResponse)
|
||||||
|
if len(aggNames) == 0 {
|
||||||
|
// we've reached a single bucket or response without aggregation, nothing here
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// metrics aggregations response can contain multiple field values, so we iterate over them
|
||||||
|
for _, aggName := range aggNames {
|
||||||
|
aggFunction, found := aggNameFunction[aggName]
|
||||||
|
if !found {
|
||||||
|
return m, fmt.Errorf("child aggregation function '%s' not found %v", aggName, aggNameFunction)
|
||||||
|
}
|
||||||
|
|
||||||
|
resp := getResponseAggregation(aggFunction, aggName, bucketResponse)
|
||||||
|
if resp == nil {
|
||||||
|
return m, fmt.Errorf("child aggregation '%s' not found", aggName)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch resp := resp.(type) {
|
||||||
|
case *elastic5.AggregationBucketKeyItems:
|
||||||
|
// we've found a terms aggregation, iterate over the buckets and try to retrieve the inner aggregation values
|
||||||
|
for _, bucket := range resp.Buckets {
|
||||||
|
var s string
|
||||||
|
var ok bool
|
||||||
|
m.fields["doc_count"] = bucket.DocCount
|
||||||
|
if s, ok = bucket.Key.(string); !ok {
|
||||||
|
return m, fmt.Errorf("bucket key is not a string (%s, %s)", aggName, aggFunction)
|
||||||
|
}
|
||||||
|
m.tags[aggName] = s
|
||||||
|
|
||||||
|
// we need to recurse down through the buckets, as it may contain another terms aggregation
|
||||||
|
m, err = recurseResponse(acc, aggNameFunction, bucket.Aggregations, m)
|
||||||
|
if err != nil {
|
||||||
|
return m, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// if there are fields present after finishing the bucket, it is a complete metric
|
||||||
|
// store it and clean the fields to start a new metric
|
||||||
|
if len(m.fields) > 0 {
|
||||||
|
acc.AddFields(m.name, m.fields, m.tags)
|
||||||
|
m.fields = make(map[string]interface{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// after finishing the bucket, remove its tag from the tags map
|
||||||
|
delete(m.tags, aggName)
|
||||||
|
}
|
||||||
|
|
||||||
|
case *elastic5.AggregationValueMetric:
|
||||||
|
if resp.Value != nil {
|
||||||
|
m.fields[aggName] = *resp.Value
|
||||||
|
} else {
|
||||||
|
m.fields[aggName] = float64(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
return m, fmt.Errorf("aggregation type %T not supported", resp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if there are fields here it comes from a metrics aggregation without a parent terms aggregation
|
||||||
|
if len(m.fields) > 0 {
|
||||||
|
acc.AddFields(m.name, m.fields, m.tags)
|
||||||
|
m.fields = make(map[string]interface{})
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getResponseAggregation(function string, aggName string, aggs elastic5.Aggregations) (agg interface{}) {
|
||||||
|
switch function {
|
||||||
|
case "avg":
|
||||||
|
agg, _ = aggs.Avg(aggName)
|
||||||
|
case "sum":
|
||||||
|
agg, _ = aggs.Sum(aggName)
|
||||||
|
case "min":
|
||||||
|
agg, _ = aggs.Min(aggName)
|
||||||
|
case "max":
|
||||||
|
agg, _ = aggs.Max(aggName)
|
||||||
|
case "terms":
|
||||||
|
agg, _ = aggs.Terms(aggName)
|
||||||
|
}
|
||||||
|
|
||||||
|
return agg
|
||||||
|
}
|
||||||
|
|
||||||
|
// getAggNames returns the aggregation names from a response aggregation
|
||||||
|
func getAggNames(agg elastic5.Aggregations) (aggs []string) {
|
||||||
|
for k := range agg {
|
||||||
|
if (k != "key") && (k != "doc_count") {
|
||||||
|
aggs = append(aggs, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return aggs
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,206 @@
|
||||||
|
package elasticsearch_query
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
elastic5 "gopkg.in/olivere/elastic.v5"
|
||||||
|
)
|
||||||
|
|
||||||
|
type aggKey struct {
|
||||||
|
measurement string
|
||||||
|
name string
|
||||||
|
function string
|
||||||
|
field string
|
||||||
|
}
|
||||||
|
|
||||||
|
type aggregationQueryData struct {
|
||||||
|
aggKey
|
||||||
|
isParent bool
|
||||||
|
aggregation elastic5.Aggregation
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *ElasticsearchQuery) runAggregationQuery(ctx context.Context, aggregation esAggregation) (*elastic5.SearchResult, error) {
|
||||||
|
now := time.Now().UTC()
|
||||||
|
from := now.Add(time.Duration(-aggregation.QueryPeriod))
|
||||||
|
filterQuery := aggregation.FilterQuery
|
||||||
|
if filterQuery == "" {
|
||||||
|
filterQuery = "*"
|
||||||
|
}
|
||||||
|
|
||||||
|
query := elastic5.NewBoolQuery()
|
||||||
|
query = query.Filter(elastic5.NewQueryStringQuery(filterQuery))
|
||||||
|
query = query.Filter(elastic5.NewRangeQuery(aggregation.DateField).From(from).To(now))
|
||||||
|
|
||||||
|
search := e.esClient.Search().Index(aggregation.Index).Query(query).Size(0)
|
||||||
|
|
||||||
|
// add only parent elastic.Aggregations to the search request, all the rest are subaggregations of these
|
||||||
|
for _, v := range aggregation.aggregationQueryList {
|
||||||
|
if v.isParent && v.aggregation != nil {
|
||||||
|
search.Aggregation(v.aggKey.name, v.aggregation)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
searchResult, err := search.Do(ctx)
|
||||||
|
if err != nil && searchResult != nil {
|
||||||
|
return searchResult, fmt.Errorf("%s - %s", searchResult.Error.Type, searchResult.Error.Reason)
|
||||||
|
}
|
||||||
|
|
||||||
|
return searchResult, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// getMetricFields function returns a map of fields and field types on Elasticsearch that matches field.MetricFields
|
||||||
|
func (e *ElasticsearchQuery) getMetricFields(ctx context.Context, aggregation esAggregation) (map[string]string, error) {
|
||||||
|
mapMetricFields := make(map[string]string)
|
||||||
|
|
||||||
|
for _, metricField := range aggregation.MetricFields {
|
||||||
|
resp, err := e.esClient.GetFieldMapping().Index(aggregation.Index).Field(metricField).Do(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return mapMetricFields, fmt.Errorf("error retrieving field mappings for %s: %s", aggregation.Index, err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, index := range resp {
|
||||||
|
var ok bool
|
||||||
|
var mappings interface{}
|
||||||
|
if mappings, ok = index.(map[string]interface{})["mappings"]; !ok {
|
||||||
|
return nil, fmt.Errorf("assertion error, wrong type (expected map[string]interface{}, got %T)", index)
|
||||||
|
}
|
||||||
|
|
||||||
|
var types map[string]interface{}
|
||||||
|
if types, ok = mappings.(map[string]interface{}); !ok {
|
||||||
|
return nil, fmt.Errorf("assertion error, wrong type (expected map[string]interface{}, got %T)", mappings)
|
||||||
|
}
|
||||||
|
|
||||||
|
var fields map[string]interface{}
|
||||||
|
for _, _type := range types {
|
||||||
|
if fields, ok = _type.(map[string]interface{}); !ok {
|
||||||
|
return nil, fmt.Errorf("assertion error, wrong type (expected map[string]interface{}, got %T)", _type)
|
||||||
|
}
|
||||||
|
|
||||||
|
var field map[string]interface{}
|
||||||
|
for _, _field := range fields {
|
||||||
|
if field, ok = _field.(map[string]interface{}); !ok {
|
||||||
|
return nil, fmt.Errorf("assertion error, wrong type (expected map[string]interface{}, got %T)", _field)
|
||||||
|
}
|
||||||
|
|
||||||
|
fullname := field["full_name"]
|
||||||
|
mapping := field["mapping"]
|
||||||
|
|
||||||
|
var fname string
|
||||||
|
if fname, ok = fullname.(string); !ok {
|
||||||
|
return nil, fmt.Errorf("assertion error, wrong type (expected string, got %T)", fullname)
|
||||||
|
}
|
||||||
|
|
||||||
|
var fieldTypes map[string]interface{}
|
||||||
|
if fieldTypes, ok = mapping.(map[string]interface{}); !ok {
|
||||||
|
return nil, fmt.Errorf("assertion error, wrong type (expected map[string]interface{}, got %T)", mapping)
|
||||||
|
}
|
||||||
|
|
||||||
|
var fieldType interface{}
|
||||||
|
for _, _fieldType := range fieldTypes {
|
||||||
|
if fieldType, ok = _fieldType.(map[string]interface{})["type"]; !ok {
|
||||||
|
return nil, fmt.Errorf("assertion error, wrong type (expected map[string]interface{}, got %T)", _fieldType)
|
||||||
|
}
|
||||||
|
|
||||||
|
var ftype string
|
||||||
|
if ftype, ok = fieldType.(string); !ok {
|
||||||
|
return nil, fmt.Errorf("assertion error, wrong type (expected string, got %T)", fieldType)
|
||||||
|
}
|
||||||
|
mapMetricFields[fname] = ftype
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mapMetricFields, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (aggregation *esAggregation) buildAggregationQuery() error {
|
||||||
|
// create one aggregation per metric field found & function defined for numeric fields
|
||||||
|
for k, v := range aggregation.mapMetricFields {
|
||||||
|
switch v {
|
||||||
|
case "long":
|
||||||
|
case "float":
|
||||||
|
case "integer":
|
||||||
|
case "short":
|
||||||
|
case "double":
|
||||||
|
case "scaled_float":
|
||||||
|
default:
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
agg, err := getFunctionAggregation(aggregation.MetricFunction, k)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
aggregationQuery := aggregationQueryData{
|
||||||
|
aggKey: aggKey{
|
||||||
|
measurement: aggregation.MeasurementName,
|
||||||
|
function: aggregation.MetricFunction,
|
||||||
|
field: k,
|
||||||
|
name: strings.Replace(k, ".", "_", -1) + "_" + aggregation.MetricFunction,
|
||||||
|
},
|
||||||
|
isParent: true,
|
||||||
|
aggregation: agg,
|
||||||
|
}
|
||||||
|
|
||||||
|
aggregation.aggregationQueryList = append(aggregation.aggregationQueryList, aggregationQuery)
|
||||||
|
}
|
||||||
|
|
||||||
|
// create a terms aggregation per tag
|
||||||
|
for _, term := range aggregation.Tags {
|
||||||
|
agg := elastic5.NewTermsAggregation()
|
||||||
|
if aggregation.IncludeMissingTag && aggregation.MissingTagValue != "" {
|
||||||
|
agg.Missing(aggregation.MissingTagValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
agg.Field(term).Size(1000)
|
||||||
|
|
||||||
|
// add each previous parent aggregations as subaggregations of this terms aggregation
|
||||||
|
for key, aggMap := range aggregation.aggregationQueryList {
|
||||||
|
if aggMap.isParent {
|
||||||
|
agg.Field(term).SubAggregation(aggMap.name, aggMap.aggregation).Size(1000)
|
||||||
|
// update subaggregation map with parent information
|
||||||
|
aggregation.aggregationQueryList[key].isParent = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
aggregationQuery := aggregationQueryData{
|
||||||
|
aggKey: aggKey{
|
||||||
|
measurement: aggregation.MeasurementName,
|
||||||
|
function: "terms",
|
||||||
|
field: term,
|
||||||
|
name: strings.Replace(term, ".", "_", -1),
|
||||||
|
},
|
||||||
|
isParent: true,
|
||||||
|
aggregation: agg,
|
||||||
|
}
|
||||||
|
|
||||||
|
aggregation.aggregationQueryList = append(aggregation.aggregationQueryList, aggregationQuery)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFunctionAggregation(function string, aggfield string) (elastic5.Aggregation, error) {
|
||||||
|
var agg elastic5.Aggregation
|
||||||
|
|
||||||
|
switch function {
|
||||||
|
case "avg":
|
||||||
|
agg = elastic5.NewAvgAggregation().Field(aggfield)
|
||||||
|
case "sum":
|
||||||
|
agg = elastic5.NewSumAggregation().Field(aggfield)
|
||||||
|
case "min":
|
||||||
|
agg = elastic5.NewMinAggregation().Field(aggfield)
|
||||||
|
case "max":
|
||||||
|
agg = elastic5.NewMaxAggregation().Field(aggfield)
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("aggregation function '%s' not supported", function)
|
||||||
|
}
|
||||||
|
|
||||||
|
return agg, nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,314 @@
|
||||||
|
package elasticsearch_query
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
elastic5 "gopkg.in/olivere/elastic.v5"
|
||||||
|
|
||||||
|
"github.com/influxdata/telegraf"
|
||||||
|
"github.com/influxdata/telegraf/config"
|
||||||
|
"github.com/influxdata/telegraf/plugins/common/tls"
|
||||||
|
"github.com/influxdata/telegraf/plugins/inputs"
|
||||||
|
)
|
||||||
|
|
||||||
|
const sampleConfig = `
|
||||||
|
## The full HTTP endpoint URL for your Elasticsearch instance
|
||||||
|
## Multiple urls can be specified as part of the same cluster,
|
||||||
|
## this means that only ONE of the urls will be written to each interval.
|
||||||
|
urls = [ "http://node1.es.example.com:9200" ] # required.
|
||||||
|
|
||||||
|
## Elasticsearch client timeout, defaults to "5s".
|
||||||
|
# timeout = "5s"
|
||||||
|
|
||||||
|
## Set to true to ask Elasticsearch a list of all cluster nodes,
|
||||||
|
## thus it is not necessary to list all nodes in the urls config option
|
||||||
|
# enable_sniffer = false
|
||||||
|
|
||||||
|
## Set the interval to check if the Elasticsearch nodes are available
|
||||||
|
## This option is only used if enable_sniffer is also set (0s to disable it)
|
||||||
|
# health_check_interval = "10s"
|
||||||
|
|
||||||
|
## HTTP basic authentication details (eg. when using x-pack)
|
||||||
|
# username = "telegraf"
|
||||||
|
# password = "mypassword"
|
||||||
|
|
||||||
|
## Optional TLS Config
|
||||||
|
# tls_ca = "/etc/telegraf/ca.pem"
|
||||||
|
# tls_cert = "/etc/telegraf/cert.pem"
|
||||||
|
# tls_key = "/etc/telegraf/key.pem"
|
||||||
|
## Use TLS but skip chain & host verification
|
||||||
|
# insecure_skip_verify = false
|
||||||
|
|
||||||
|
[[inputs.elasticsearch_query.aggregation]]
|
||||||
|
## measurement name for the results of the aggregation query
|
||||||
|
measurement_name = "measurement"
|
||||||
|
|
||||||
|
## Elasticsearch indexes to query (accept wildcards).
|
||||||
|
index = "index-*"
|
||||||
|
|
||||||
|
## The date/time field in the Elasticsearch index (mandatory).
|
||||||
|
date_field = "@timestamp"
|
||||||
|
|
||||||
|
## Time window to query (eg. "1m" to query documents from last minute).
|
||||||
|
## Normally should be set to same as collection interval
|
||||||
|
query_period = "1m"
|
||||||
|
|
||||||
|
## Lucene query to filter results
|
||||||
|
# filter_query = "*"
|
||||||
|
|
||||||
|
## Fields to aggregate values (must be numeric fields)
|
||||||
|
# metric_fields = ["metric"]
|
||||||
|
|
||||||
|
## Aggregation function to use on the metric fields
|
||||||
|
## Must be set if 'metric_fields' is set
|
||||||
|
## Valid values are: avg, sum, min, max, sum
|
||||||
|
# metric_function = "avg"
|
||||||
|
|
||||||
|
## Fields to be used as tags
|
||||||
|
## Must be text, non-analyzed fields. Metric aggregations are performed per tag
|
||||||
|
# tags = ["field.keyword", "field2.keyword"]
|
||||||
|
|
||||||
|
## Set to true to not ignore documents when the tag(s) above are missing
|
||||||
|
# include_missing_tag = false
|
||||||
|
|
||||||
|
## String value of the tag when the tag does not exist
|
||||||
|
## Used when include_missing_tag is true
|
||||||
|
# missing_tag_value = "null"
|
||||||
|
`
|
||||||
|
|
||||||
|
// ElasticsearchQuery struct
|
||||||
|
type ElasticsearchQuery struct {
|
||||||
|
URLs []string `toml:"urls"`
|
||||||
|
Username string `toml:"username"`
|
||||||
|
Password string `toml:"password"`
|
||||||
|
EnableSniffer bool `toml:"enable_sniffer"`
|
||||||
|
Timeout config.Duration `toml:"timeout"`
|
||||||
|
HealthCheckInterval config.Duration `toml:"health_check_interval"`
|
||||||
|
Aggregations []esAggregation `toml:"aggregation"`
|
||||||
|
|
||||||
|
Log telegraf.Logger `toml:"-"`
|
||||||
|
|
||||||
|
tls.ClientConfig
|
||||||
|
httpclient *http.Client
|
||||||
|
esClient *elastic5.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// esAggregation struct
|
||||||
|
type esAggregation struct {
|
||||||
|
Index string `toml:"index"`
|
||||||
|
MeasurementName string `toml:"measurement_name"`
|
||||||
|
DateField string `toml:"date_field"`
|
||||||
|
QueryPeriod config.Duration `toml:"query_period"`
|
||||||
|
FilterQuery string `toml:"filter_query"`
|
||||||
|
MetricFields []string `toml:"metric_fields"`
|
||||||
|
MetricFunction string `toml:"metric_function"`
|
||||||
|
Tags []string `toml:"tags"`
|
||||||
|
IncludeMissingTag bool `toml:"include_missing_tag"`
|
||||||
|
MissingTagValue string `toml:"missing_tag_value"`
|
||||||
|
mapMetricFields map[string]string
|
||||||
|
aggregationQueryList []aggregationQueryData
|
||||||
|
}
|
||||||
|
|
||||||
|
// SampleConfig returns sample configuration for this plugin.
|
||||||
|
func (e *ElasticsearchQuery) SampleConfig() string {
|
||||||
|
return sampleConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
// Description returns the plugin description.
|
||||||
|
func (e *ElasticsearchQuery) Description() string {
|
||||||
|
return `Derive metrics from aggregating Elasticsearch query results`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Init the plugin.
|
||||||
|
func (e *ElasticsearchQuery) Init() error {
|
||||||
|
if e.URLs == nil {
|
||||||
|
return fmt.Errorf("elasticsearch urls is not defined")
|
||||||
|
}
|
||||||
|
|
||||||
|
err := e.connectToES()
|
||||||
|
if err != nil {
|
||||||
|
e.Log.Errorf("E! error connecting to elasticsearch: %s", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(e.Timeout))
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
for i, agg := range e.Aggregations {
|
||||||
|
if agg.MeasurementName == "" {
|
||||||
|
return fmt.Errorf("field 'measurement_name' is not set")
|
||||||
|
}
|
||||||
|
if agg.DateField == "" {
|
||||||
|
return fmt.Errorf("field 'date_field' is not set")
|
||||||
|
}
|
||||||
|
err = e.initAggregation(ctx, agg, i)
|
||||||
|
if err != nil {
|
||||||
|
e.Log.Errorf("%s", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *ElasticsearchQuery) initAggregation(ctx context.Context, agg esAggregation, i int) (err error) {
|
||||||
|
// retrieve field mapping and build queries only once
|
||||||
|
agg.mapMetricFields, err = e.getMetricFields(ctx, agg)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("not possible to retrieve fields: %v", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, metricField := range agg.MetricFields {
|
||||||
|
if _, ok := agg.mapMetricFields[metricField]; !ok {
|
||||||
|
return fmt.Errorf("metric field '%s' not found on index '%s'", metricField, agg.Index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err = agg.buildAggregationQuery()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
e.Aggregations[i] = agg
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *ElasticsearchQuery) connectToES() error {
|
||||||
|
var clientOptions []elastic5.ClientOptionFunc
|
||||||
|
|
||||||
|
if e.esClient != nil {
|
||||||
|
if e.esClient.IsRunning() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if e.httpclient == nil {
|
||||||
|
httpclient, err := e.createHTTPClient()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
e.httpclient = httpclient
|
||||||
|
}
|
||||||
|
|
||||||
|
clientOptions = append(clientOptions,
|
||||||
|
elastic5.SetHttpClient(e.httpclient),
|
||||||
|
elastic5.SetSniff(e.EnableSniffer),
|
||||||
|
elastic5.SetURL(e.URLs...),
|
||||||
|
elastic5.SetHealthcheckInterval(time.Duration(e.HealthCheckInterval)),
|
||||||
|
)
|
||||||
|
|
||||||
|
if e.Username != "" {
|
||||||
|
clientOptions = append(clientOptions, elastic5.SetBasicAuth(e.Username, e.Password))
|
||||||
|
}
|
||||||
|
|
||||||
|
if time.Duration(e.HealthCheckInterval) == 0 {
|
||||||
|
clientOptions = append(clientOptions, elastic5.SetHealthcheck(false))
|
||||||
|
}
|
||||||
|
|
||||||
|
client, err := elastic5.NewClient(clientOptions...)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// check for ES version on first node
|
||||||
|
esVersion, err := client.ElasticsearchVersion(e.URLs[0])
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("elasticsearch version check failed: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
esVersionSplit := strings.Split(esVersion, ".")
|
||||||
|
|
||||||
|
// quit if ES version is not supported
|
||||||
|
if len(esVersionSplit) == 0 {
|
||||||
|
return fmt.Errorf("elasticsearch version check failed")
|
||||||
|
}
|
||||||
|
|
||||||
|
i, err := strconv.Atoi(esVersionSplit[0])
|
||||||
|
if err != nil || i < 5 || i > 6 {
|
||||||
|
return fmt.Errorf("elasticsearch version %s not supported (currently supported versions are 5.x and 6.x)", esVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
e.esClient = client
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gather writes the results of the queries from Elasticsearch to the Accumulator.
|
||||||
|
func (e *ElasticsearchQuery) Gather(acc telegraf.Accumulator) error {
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
|
err := e.connectToES()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, agg := range e.Aggregations {
|
||||||
|
wg.Add(1)
|
||||||
|
go func(agg esAggregation, i int) {
|
||||||
|
defer wg.Done()
|
||||||
|
err := e.esAggregationQuery(acc, agg, i)
|
||||||
|
if err != nil {
|
||||||
|
acc.AddError(fmt.Errorf("elasticsearch query aggregation %s: %s ", agg.MeasurementName, err.Error()))
|
||||||
|
}
|
||||||
|
}(agg, i)
|
||||||
|
}
|
||||||
|
|
||||||
|
wg.Wait()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *ElasticsearchQuery) createHTTPClient() (*http.Client, error) {
|
||||||
|
tlsCfg, err := e.ClientConfig.TLSConfig()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
tr := &http.Transport{
|
||||||
|
ResponseHeaderTimeout: time.Duration(e.Timeout),
|
||||||
|
TLSClientConfig: tlsCfg,
|
||||||
|
}
|
||||||
|
httpclient := &http.Client{
|
||||||
|
Transport: tr,
|
||||||
|
Timeout: time.Duration(e.Timeout),
|
||||||
|
}
|
||||||
|
|
||||||
|
return httpclient, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *ElasticsearchQuery) esAggregationQuery(acc telegraf.Accumulator, aggregation esAggregation, i int) error {
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(e.Timeout))
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
// try to init the aggregation query if it is not done already
|
||||||
|
if aggregation.aggregationQueryList == nil {
|
||||||
|
err := e.initAggregation(ctx, aggregation, i)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
aggregation = e.Aggregations[i]
|
||||||
|
}
|
||||||
|
|
||||||
|
searchResult, err := e.runAggregationQuery(ctx, aggregation)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if searchResult.Aggregations == nil {
|
||||||
|
parseSimpleResult(acc, aggregation.MeasurementName, searchResult)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return parseAggregationResult(acc, aggregation.aggregationQueryList, searchResult)
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
inputs.Add("elasticsearch_query", func() telegraf.Input {
|
||||||
|
return &ElasticsearchQuery{
|
||||||
|
Timeout: config.Duration(time.Second * 5),
|
||||||
|
HealthCheckInterval: config.Duration(time.Second * 10),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,713 @@
|
||||||
|
package elasticsearch_query
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"context"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/google/go-cmp/cmp"
|
||||||
|
"github.com/google/go-cmp/cmp/cmpopts"
|
||||||
|
"github.com/influxdata/telegraf"
|
||||||
|
"github.com/influxdata/telegraf/config"
|
||||||
|
"github.com/influxdata/telegraf/testutil"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
elastic5 "gopkg.in/olivere/elastic.v5"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
testindex = "test-elasticsearch_query-" + strconv.Itoa(int(time.Now().Unix()))
|
||||||
|
setupOnce sync.Once
|
||||||
|
)
|
||||||
|
|
||||||
|
type esAggregationQueryTest struct {
|
||||||
|
queryName string
|
||||||
|
testAggregationQueryInput esAggregation
|
||||||
|
testAggregationQueryData []aggregationQueryData
|
||||||
|
expectedMetrics []telegraf.Metric
|
||||||
|
wantBuildQueryErr bool
|
||||||
|
wantGetMetricFieldsErr bool
|
||||||
|
wantQueryResErr bool
|
||||||
|
}
|
||||||
|
|
||||||
|
var queryPeriod = config.Duration(time.Second * 600)
|
||||||
|
|
||||||
|
var testEsAggregationData = []esAggregationQueryTest{
|
||||||
|
{
|
||||||
|
"query 1",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement1",
|
||||||
|
MetricFields: []string{"size"},
|
||||||
|
FilterQuery: "product_1",
|
||||||
|
MetricFunction: "avg",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{"URI.keyword"},
|
||||||
|
mapMetricFields: map[string]string{"size": "long"},
|
||||||
|
},
|
||||||
|
[]aggregationQueryData{
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement1", name: "size_avg", function: "avg", field: "size"},
|
||||||
|
isParent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement1", name: "URI_keyword", function: "terms", field: "URI.keyword"},
|
||||||
|
isParent: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[]telegraf.Metric{
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement1",
|
||||||
|
map[string]string{"URI_keyword": "/downloads/product_1"},
|
||||||
|
map[string]interface{}{"size_avg": float64(202.30038022813687), "doc_count": int64(263)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 2",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement2",
|
||||||
|
MetricFields: []string{"size"},
|
||||||
|
FilterQuery: "downloads",
|
||||||
|
MetricFunction: "max",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{"URI.keyword"},
|
||||||
|
mapMetricFields: map[string]string{"size": "long"},
|
||||||
|
},
|
||||||
|
[]aggregationQueryData{
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement2", name: "size_max", function: "max", field: "size"},
|
||||||
|
isParent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement2", name: "URI_keyword", function: "terms", field: "URI.keyword"},
|
||||||
|
isParent: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[]telegraf.Metric{
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement2",
|
||||||
|
map[string]string{"URI_keyword": "/downloads/product_1"},
|
||||||
|
map[string]interface{}{"size_max": float64(3301), "doc_count": int64(263)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement2",
|
||||||
|
map[string]string{"URI_keyword": "/downloads/product_2"},
|
||||||
|
map[string]interface{}{"size_max": float64(3318), "doc_count": int64(237)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 3",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement3",
|
||||||
|
MetricFields: []string{"size"},
|
||||||
|
FilterQuery: "downloads",
|
||||||
|
MetricFunction: "sum",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{"response.keyword"},
|
||||||
|
mapMetricFields: map[string]string{"size": "long"},
|
||||||
|
},
|
||||||
|
[]aggregationQueryData{
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement3", name: "size_sum", function: "sum", field: "size"},
|
||||||
|
isParent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement3", name: "response_keyword", function: "terms", field: "response.keyword"},
|
||||||
|
isParent: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[]telegraf.Metric{
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement3",
|
||||||
|
map[string]string{"response_keyword": "200"},
|
||||||
|
map[string]interface{}{"size_sum": float64(22790), "doc_count": int64(22)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement3",
|
||||||
|
map[string]string{"response_keyword": "304"},
|
||||||
|
map[string]interface{}{"size_sum": float64(0), "doc_count": int64(219)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement3",
|
||||||
|
map[string]string{"response_keyword": "404"},
|
||||||
|
map[string]interface{}{"size_sum": float64(86932), "doc_count": int64(259)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 4",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement4",
|
||||||
|
MetricFields: []string{"size", "response_time"},
|
||||||
|
FilterQuery: "downloads",
|
||||||
|
MetricFunction: "min",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
IncludeMissingTag: true,
|
||||||
|
MissingTagValue: "missing",
|
||||||
|
Tags: []string{"response.keyword", "URI.keyword", "method.keyword"},
|
||||||
|
mapMetricFields: map[string]string{"size": "long", "response_time": "long"},
|
||||||
|
},
|
||||||
|
[]aggregationQueryData{
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement4", name: "size_min", function: "min", field: "size"},
|
||||||
|
isParent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement4", name: "response_time_min", function: "min", field: "response_time"},
|
||||||
|
isParent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement4", name: "response_keyword", function: "terms", field: "response.keyword"},
|
||||||
|
isParent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement4", name: "URI_keyword", function: "terms", field: "URI.keyword"},
|
||||||
|
isParent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement4", name: "method_keyword", function: "terms", field: "method.keyword"},
|
||||||
|
isParent: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[]telegraf.Metric{
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement4",
|
||||||
|
map[string]string{"response_keyword": "404", "URI_keyword": "/downloads/product_1", "method_keyword": "GET"},
|
||||||
|
map[string]interface{}{"size_min": float64(318), "response_time_min": float64(126), "doc_count": int64(146)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement4",
|
||||||
|
map[string]string{"response_keyword": "304", "URI_keyword": "/downloads/product_1", "method_keyword": "GET"},
|
||||||
|
map[string]interface{}{"size_min": float64(0), "response_time_min": float64(71), "doc_count": int64(113)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement4",
|
||||||
|
map[string]string{"response_keyword": "200", "URI_keyword": "/downloads/product_1", "method_keyword": "GET"},
|
||||||
|
map[string]interface{}{"size_min": float64(490), "response_time_min": float64(1514), "doc_count": int64(3)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement4",
|
||||||
|
map[string]string{"response_keyword": "404", "URI_keyword": "/downloads/product_2", "method_keyword": "GET"},
|
||||||
|
map[string]interface{}{"size_min": float64(318), "response_time_min": float64(237), "doc_count": int64(113)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement4",
|
||||||
|
map[string]string{"response_keyword": "304", "URI_keyword": "/downloads/product_2", "method_keyword": "GET"},
|
||||||
|
map[string]interface{}{"size_min": float64(0), "response_time_min": float64(134), "doc_count": int64(106)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement4",
|
||||||
|
map[string]string{"response_keyword": "200", "URI_keyword": "/downloads/product_2", "method_keyword": "GET"},
|
||||||
|
map[string]interface{}{"size_min": float64(490), "response_time_min": float64(2), "doc_count": int64(13)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement4",
|
||||||
|
map[string]string{"response_keyword": "200", "URI_keyword": "/downloads/product_1", "method_keyword": "HEAD"},
|
||||||
|
map[string]interface{}{"size_min": float64(0), "response_time_min": float64(8479), "doc_count": int64(1)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement4",
|
||||||
|
map[string]string{"response_keyword": "200", "URI_keyword": "/downloads/product_2", "method_keyword": "HEAD"},
|
||||||
|
map[string]interface{}{"size_min": float64(0), "response_time_min": float64(1059), "doc_count": int64(5)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 5",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement5",
|
||||||
|
FilterQuery: "product_2",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{"URI.keyword"},
|
||||||
|
mapMetricFields: map[string]string{},
|
||||||
|
},
|
||||||
|
[]aggregationQueryData{
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement5", name: "URI_keyword", function: "terms", field: "URI.keyword"},
|
||||||
|
isParent: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[]telegraf.Metric{
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement5",
|
||||||
|
map[string]string{"URI_keyword": "/downloads/product_2"},
|
||||||
|
map[string]interface{}{"doc_count": int64(237)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 6",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement6",
|
||||||
|
FilterQuery: "response: 200",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{"URI.keyword", "response.keyword"},
|
||||||
|
mapMetricFields: map[string]string{},
|
||||||
|
},
|
||||||
|
[]aggregationQueryData{
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement6", name: "URI_keyword", function: "terms", field: "URI.keyword"},
|
||||||
|
isParent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement6", name: "response_keyword", function: "terms", field: "response.keyword"},
|
||||||
|
isParent: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[]telegraf.Metric{
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement6",
|
||||||
|
map[string]string{"response_keyword": "200", "URI_keyword": "/downloads/product_1"},
|
||||||
|
map[string]interface{}{"doc_count": int64(4)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement6",
|
||||||
|
map[string]string{"response_keyword": "200", "URI_keyword": "/downloads/product_2"},
|
||||||
|
map[string]interface{}{"doc_count": int64(18)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 7 - simple query",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement7",
|
||||||
|
FilterQuery: "response: 200",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{},
|
||||||
|
mapMetricFields: map[string]string{},
|
||||||
|
},
|
||||||
|
nil,
|
||||||
|
[]telegraf.Metric{
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement7",
|
||||||
|
map[string]string{},
|
||||||
|
map[string]interface{}{"doc_count": int64(22)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 8",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement8",
|
||||||
|
MetricFields: []string{"size"},
|
||||||
|
FilterQuery: "downloads",
|
||||||
|
MetricFunction: "max",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{},
|
||||||
|
mapMetricFields: map[string]string{"size": "long"},
|
||||||
|
},
|
||||||
|
[]aggregationQueryData{
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement8", name: "size_max", function: "max", field: "size"},
|
||||||
|
isParent: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[]telegraf.Metric{
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement8",
|
||||||
|
map[string]string{},
|
||||||
|
map[string]interface{}{"size_max": float64(3318)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 9 - invalid function",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement9",
|
||||||
|
MetricFields: []string{"size"},
|
||||||
|
FilterQuery: "downloads",
|
||||||
|
MetricFunction: "average",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{},
|
||||||
|
mapMetricFields: map[string]string{"size": "long"},
|
||||||
|
},
|
||||||
|
nil,
|
||||||
|
nil,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 10 - non-existing metric field",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement10",
|
||||||
|
MetricFields: []string{"none"},
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{},
|
||||||
|
mapMetricFields: map[string]string{},
|
||||||
|
},
|
||||||
|
nil,
|
||||||
|
nil,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 11 - non-existing index field",
|
||||||
|
esAggregation{
|
||||||
|
Index: "notanindex",
|
||||||
|
MeasurementName: "measurement11",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{},
|
||||||
|
mapMetricFields: map[string]string{},
|
||||||
|
},
|
||||||
|
nil,
|
||||||
|
nil,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 12 - non-existing timestamp field",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement12",
|
||||||
|
MetricFields: []string{"size"},
|
||||||
|
MetricFunction: "avg",
|
||||||
|
DateField: "@notatimestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
Tags: []string{},
|
||||||
|
mapMetricFields: map[string]string{"size": "long"},
|
||||||
|
},
|
||||||
|
[]aggregationQueryData{
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement12", name: "size_avg", function: "avg", field: "size"},
|
||||||
|
isParent: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[]telegraf.Metric{
|
||||||
|
testutil.MustMetric(
|
||||||
|
"measurement12",
|
||||||
|
map[string]string{},
|
||||||
|
map[string]interface{}{"size_avg": float64(0)},
|
||||||
|
time.Date(2018, 6, 14, 5, 51, 53, 266176036, time.UTC),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"query 13 - non-existing tag field",
|
||||||
|
esAggregation{
|
||||||
|
Index: testindex,
|
||||||
|
MeasurementName: "measurement13",
|
||||||
|
MetricFields: []string{"size"},
|
||||||
|
MetricFunction: "avg",
|
||||||
|
DateField: "@timestamp",
|
||||||
|
QueryPeriod: queryPeriod,
|
||||||
|
IncludeMissingTag: false,
|
||||||
|
Tags: []string{"nothere"},
|
||||||
|
mapMetricFields: map[string]string{"size": "long"},
|
||||||
|
},
|
||||||
|
[]aggregationQueryData{
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement13", name: "size_avg", function: "avg", field: "size"},
|
||||||
|
isParent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
aggKey: aggKey{measurement: "measurement13", name: "nothere", function: "terms", field: "nothere"},
|
||||||
|
isParent: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nil,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupIntegrationTest() error {
|
||||||
|
type nginxlog struct {
|
||||||
|
IPaddress string `json:"IP"`
|
||||||
|
Timestamp time.Time `json:"@timestamp"`
|
||||||
|
Method string `json:"method"`
|
||||||
|
URI string `json:"URI"`
|
||||||
|
Httpversion string `json:"http_version"`
|
||||||
|
Response string `json:"response"`
|
||||||
|
Size float64 `json:"size"`
|
||||||
|
ResponseTime float64 `json:"response_time"`
|
||||||
|
}
|
||||||
|
|
||||||
|
e := &ElasticsearchQuery{
|
||||||
|
URLs: []string{"http://" + testutil.GetLocalHost() + ":9200"},
|
||||||
|
Timeout: config.Duration(time.Second * 30),
|
||||||
|
Log: testutil.Logger{},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := e.connectToES()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
bulkRequest := e.esClient.Bulk()
|
||||||
|
|
||||||
|
// populate elasticsearch with nginx_logs test data file
|
||||||
|
file, err := os.Open("testdata/nginx_logs")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
|
||||||
|
for scanner.Scan() {
|
||||||
|
parts := strings.Split(scanner.Text(), " ")
|
||||||
|
size, _ := strconv.Atoi(parts[9])
|
||||||
|
responseTime, _ := strconv.Atoi(parts[len(parts)-1])
|
||||||
|
|
||||||
|
logline := nginxlog{
|
||||||
|
IPaddress: parts[0],
|
||||||
|
Timestamp: time.Now().UTC(),
|
||||||
|
Method: strings.Replace(parts[5], `"`, "", -1),
|
||||||
|
URI: parts[6],
|
||||||
|
Httpversion: strings.Replace(parts[7], `"`, "", -1),
|
||||||
|
Response: parts[8],
|
||||||
|
Size: float64(size),
|
||||||
|
ResponseTime: float64(responseTime),
|
||||||
|
}
|
||||||
|
|
||||||
|
bulkRequest.Add(elastic5.NewBulkIndexRequest().
|
||||||
|
Index(testindex).
|
||||||
|
Type("testquery_data").
|
||||||
|
Doc(logline))
|
||||||
|
}
|
||||||
|
if scanner.Err() != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = bulkRequest.Do(context.Background())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// wait 5s (default) for Elasticsearch to index, so results are consistent
|
||||||
|
time.Sleep(time.Second * 5)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestElasticsearchQuery(t *testing.T) {
|
||||||
|
if testing.Short() {
|
||||||
|
t.Skip("Skipping integration test in short mode")
|
||||||
|
}
|
||||||
|
|
||||||
|
setupOnce.Do(func() {
|
||||||
|
err := setupIntegrationTest()
|
||||||
|
require.NoError(t, err)
|
||||||
|
})
|
||||||
|
|
||||||
|
var acc testutil.Accumulator
|
||||||
|
e := &ElasticsearchQuery{
|
||||||
|
URLs: []string{"http://" + testutil.GetLocalHost() + ":9200"},
|
||||||
|
Timeout: config.Duration(time.Second * 30),
|
||||||
|
Log: testutil.Logger{},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := e.connectToES()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
var aggs []esAggregation
|
||||||
|
var aggsErr []esAggregation
|
||||||
|
|
||||||
|
for _, agg := range testEsAggregationData {
|
||||||
|
if !agg.wantQueryResErr {
|
||||||
|
aggs = append(aggs, agg.testAggregationQueryInput)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
e.Aggregations = aggs
|
||||||
|
|
||||||
|
require.NoError(t, e.Init())
|
||||||
|
require.NoError(t, e.Gather(&acc))
|
||||||
|
|
||||||
|
if len(acc.Errors) > 0 {
|
||||||
|
t.Errorf("%s", acc.Errors)
|
||||||
|
}
|
||||||
|
|
||||||
|
var expectedMetrics []telegraf.Metric
|
||||||
|
for _, result := range testEsAggregationData {
|
||||||
|
expectedMetrics = append(expectedMetrics, result.expectedMetrics...)
|
||||||
|
}
|
||||||
|
testutil.RequireMetricsEqual(t, expectedMetrics, acc.GetTelegrafMetrics(), testutil.SortMetrics(), testutil.IgnoreTime())
|
||||||
|
|
||||||
|
// aggregations that should return an error
|
||||||
|
for _, agg := range testEsAggregationData {
|
||||||
|
if agg.wantQueryResErr {
|
||||||
|
aggsErr = append(aggsErr, agg.testAggregationQueryInput)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
e.Aggregations = aggsErr
|
||||||
|
require.NoError(t, e.Init())
|
||||||
|
require.NoError(t, e.Gather(&acc))
|
||||||
|
|
||||||
|
if len(acc.Errors) != len(aggsErr) {
|
||||||
|
t.Errorf("expecting %v query result errors, got %v: %s", len(aggsErr), len(acc.Errors), acc.Errors)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestElasticsearchQuery_getMetricFields(t *testing.T) {
|
||||||
|
if testing.Short() {
|
||||||
|
t.Skip("Skipping integration test in short mode")
|
||||||
|
}
|
||||||
|
|
||||||
|
setupOnce.Do(func() {
|
||||||
|
err := setupIntegrationTest()
|
||||||
|
require.NoError(t, err)
|
||||||
|
})
|
||||||
|
|
||||||
|
type args struct {
|
||||||
|
ctx context.Context
|
||||||
|
aggregation esAggregation
|
||||||
|
}
|
||||||
|
|
||||||
|
e := &ElasticsearchQuery{
|
||||||
|
URLs: []string{"http://" + testutil.GetLocalHost() + ":9200"},
|
||||||
|
Timeout: config.Duration(time.Second * 30),
|
||||||
|
Log: testutil.Logger{},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := e.connectToES()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
type test struct {
|
||||||
|
name string
|
||||||
|
e *ElasticsearchQuery
|
||||||
|
args args
|
||||||
|
want map[string]string
|
||||||
|
wantErr bool
|
||||||
|
}
|
||||||
|
|
||||||
|
var tests []test
|
||||||
|
|
||||||
|
for _, d := range testEsAggregationData {
|
||||||
|
tests = append(tests, test{
|
||||||
|
"getMetricFields " + d.queryName,
|
||||||
|
e,
|
||||||
|
args{context.Background(), d.testAggregationQueryInput},
|
||||||
|
d.testAggregationQueryInput.mapMetricFields,
|
||||||
|
d.wantGetMetricFieldsErr,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
got, err := tt.e.getMetricFields(tt.args.ctx, tt.args.aggregation)
|
||||||
|
if (err != nil) != tt.wantErr {
|
||||||
|
t.Errorf("ElasticsearchQuery.buildAggregationQuery() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !cmp.Equal(got, tt.want) {
|
||||||
|
t.Errorf("ElasticsearchQuery.getMetricFields() = error = %s", cmp.Diff(got, tt.want))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestElasticsearchQuery_buildAggregationQuery(t *testing.T) {
|
||||||
|
type test struct {
|
||||||
|
name string
|
||||||
|
aggregation esAggregation
|
||||||
|
want []aggregationQueryData
|
||||||
|
wantErr bool
|
||||||
|
}
|
||||||
|
var tests []test
|
||||||
|
|
||||||
|
for _, d := range testEsAggregationData {
|
||||||
|
tests = append(tests, test{
|
||||||
|
"build " + d.queryName,
|
||||||
|
d.testAggregationQueryInput,
|
||||||
|
d.testAggregationQueryData,
|
||||||
|
d.wantBuildQueryErr,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
err := tt.aggregation.buildAggregationQuery()
|
||||||
|
if (err != nil) != tt.wantErr {
|
||||||
|
t.Errorf("ElasticsearchQuery.buildAggregationQuery() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := []cmp.Option{
|
||||||
|
cmp.AllowUnexported(aggKey{}, aggregationQueryData{}),
|
||||||
|
cmpopts.IgnoreFields(aggregationQueryData{}, "aggregation"),
|
||||||
|
cmpopts.SortSlices(func(x, y aggregationQueryData) bool { return x.aggKey.name > y.aggKey.name }),
|
||||||
|
}
|
||||||
|
|
||||||
|
if !cmp.Equal(tt.aggregation.aggregationQueryList, tt.want, opts...) {
|
||||||
|
t.Errorf("ElasticsearchQuery.buildAggregationQuery(): %s error = %s ", tt.name, cmp.Diff(tt.aggregation.aggregationQueryList, tt.want, opts...))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,500 @@
|
||||||
|
93.180.71.3 - - [17/May/2015:08:05:32 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 12060
|
||||||
|
93.180.71.3 - - [17/May/2015:08:05:23 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 12355
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:24 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 26272
|
||||||
|
217.168.17.5 - - [17/May/2015:08:05:34 +0000] "GET /downloads/product_1 HTTP/1.1" 200 490 "-" "Debian APT-HTTP/1.3 (0.8.10.3)" 1514
|
||||||
|
217.168.17.5 - - [17/May/2015:08:05:09 +0000] "GET /downloads/product_2 HTTP/1.1" 200 490 "-" "Debian APT-HTTP/1.3 (0.8.10.3)" 2204
|
||||||
|
93.180.71.3 - - [17/May/2015:08:05:57 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 6012
|
||||||
|
217.168.17.5 - - [17/May/2015:08:05:02 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.10.3)" 11220
|
||||||
|
217.168.17.5 - - [17/May/2015:08:05:42 +0000] "GET /downloads/product_1 HTTP/1.1" 404 332 "-" "Debian APT-HTTP/1.3 (0.8.10.3)" 17843
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:01 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 22599
|
||||||
|
93.180.71.3 - - [17/May/2015:08:05:27 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 24828
|
||||||
|
217.168.17.5 - - [17/May/2015:08:05:12 +0000] "GET /downloads/product_2 HTTP/1.1" 200 3316 "-" "-" 6947
|
||||||
|
188.138.60.101 - - [17/May/2015:08:05:49 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 28288
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:14 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 23182
|
||||||
|
46.4.66.76 - - [17/May/2015:08:05:45 +0000] "GET /downloads/product_1 HTTP/1.1" 404 318 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 16302
|
||||||
|
93.180.71.3 - - [17/May/2015:08:05:26 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 16102
|
||||||
|
91.234.194.89 - - [17/May/2015:08:05:22 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 20268
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:07 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 2794
|
||||||
|
37.26.93.214 - - [17/May/2015:08:05:38 +0000] "GET /downloads/product_2 HTTP/1.1" 404 319 "-" "Go 1.1 package http" 22809
|
||||||
|
188.138.60.101 - - [17/May/2015:08:05:25 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 8807
|
||||||
|
93.180.71.3 - - [17/May/2015:08:05:11 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 30172
|
||||||
|
46.4.66.76 - - [17/May/2015:08:05:02 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 1973
|
||||||
|
62.75.198.179 - - [17/May/2015:08:05:06 +0000] "GET /downloads/product_2 HTTP/1.1" 200 490 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10182
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:55 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 14307
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:53 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10828
|
||||||
|
210.245.80.75 - - [17/May/2015:08:05:32 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 21956
|
||||||
|
46.4.83.163 - - [17/May/2015:08:05:52 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 5726
|
||||||
|
91.234.194.89 - - [17/May/2015:08:05:18 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10841
|
||||||
|
31.22.86.126 - - [17/May/2015:08:05:24 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 18132
|
||||||
|
217.168.17.5 - - [17/May/2015:08:05:25 +0000] "GET /downloads/product_1 HTTP/1.1" 200 3301 "-" "-" 10094
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:50 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 12355
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:03 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 27325
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:35 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 14101
|
||||||
|
5.83.131.103 - - [17/May/2015:08:05:51 +0000] "GET /downloads/product_1 HTTP/1.1" 200 490 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 20175
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:59 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 21384
|
||||||
|
200.6.73.40 - - [17/May/2015:08:05:42 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 6570
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:48 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 26145
|
||||||
|
93.180.71.3 - - [17/May/2015:08:05:58 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 32705
|
||||||
|
62.75.198.179 - - [17/May/2015:08:05:39 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 18865
|
||||||
|
50.57.209.92 - - [17/May/2015:08:05:41 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 21639
|
||||||
|
188.138.60.101 - - [17/May/2015:08:05:48 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 31242
|
||||||
|
46.4.66.76 - - [17/May/2015:08:05:02 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 5910
|
||||||
|
50.57.209.92 - - [17/May/2015:08:05:25 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 22900
|
||||||
|
91.239.186.133 - - [17/May/2015:08:05:04 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 23919
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:08 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 25169
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:04 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 24395
|
||||||
|
93.190.71.150 - - [17/May/2015:08:05:33 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 25750
|
||||||
|
91.234.194.89 - - [17/May/2015:08:05:57 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 26673
|
||||||
|
46.4.83.163 - - [17/May/2015:08:05:20 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 32509
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:39 +0000] "GET /downloads/product_1 HTTP/1.1" 404 335 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 32714
|
||||||
|
54.187.216.43 - - [17/May/2015:08:05:07 +0000] "GET /downloads/product_2 HTTP/1.1" 200 951 "-" "urlgrabber/3.9.1 yum/3.4.3" 5016
|
||||||
|
50.57.209.92 - - [17/May/2015:08:05:59 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 14449
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:02 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 13183
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:07 +0000] "GET /downloads/product_1 HTTP/1.1" 404 332 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 7791
|
||||||
|
5.83.131.103 - - [17/May/2015:08:05:31 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 586
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:14 +0000] "GET /downloads/product_1 HTTP/1.1" 404 334 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 5036
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:46 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 20358
|
||||||
|
50.57.209.92 - - [17/May/2015:08:05:01 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 2106
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:41 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 9757
|
||||||
|
37.26.93.214 - - [17/May/2015:08:05:52 +0000] "GET /downloads/product_2 HTTP/1.1" 200 3318 "-" "Go 1.1 package http" 6222
|
||||||
|
23.23.226.37 - - [17/May/2015:08:05:19 +0000] "GET /downloads/product_2 HTTP/1.1" 200 2578 "-" "urlgrabber/3.9.1 yum/3.4.3" 9523
|
||||||
|
93.180.71.3 - - [17/May/2015:08:05:20 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 7228
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:56 +0000] "GET /downloads/product_1 HTTP/1.1" 404 331 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 31464
|
||||||
|
62.75.198.179 - - [17/May/2015:08:05:13 +0000] "GET /downloads/product_2 HTTP/1.1" 404 346 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 22462
|
||||||
|
31.22.86.126 - - [17/May/2015:08:05:10 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 29906
|
||||||
|
50.57.209.92 - - [17/May/2015:08:05:58 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 16217
|
||||||
|
91.239.186.133 - - [17/May/2015:08:05:11 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 18335
|
||||||
|
46.4.66.76 - - [17/May/2015:08:05:00 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 27375
|
||||||
|
200.6.73.40 - - [17/May/2015:08:05:23 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 32073
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:13 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 31071
|
||||||
|
93.190.71.150 - - [17/May/2015:08:05:35 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 1200
|
||||||
|
91.234.194.89 - - [17/May/2015:08:05:26 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 13143
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:18 +0000] "GET /downloads/product_1 HTTP/1.1" 404 333 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 16138
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:23 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 21432
|
||||||
|
217.168.17.5 - - [17/May/2015:08:05:27 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.10.3)" 1419
|
||||||
|
46.4.83.163 - - [17/May/2015:08:05:54 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 28449
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:25 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 25906
|
||||||
|
50.57.209.92 - - [17/May/2015:08:05:56 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 27099
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:52 +0000] "GET /downloads/product_1 HTTP/1.1" 404 334 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 32238
|
||||||
|
188.138.60.101 - - [17/May/2015:08:05:04 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 237
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:11 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 7103
|
||||||
|
134.119.20.172 - - [17/May/2015:08:05:26 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 5423
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:29 +0000] "GET /downloads/product_1 HTTP/1.1" 404 331 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 6373
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:44 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 22230
|
||||||
|
91.121.161.213 - - [17/May/2015:08:05:14 +0000] "GET /downloads/product_2 HTTP/1.1" 200 490 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 14196
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:17 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 17820
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:27 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 9097
|
||||||
|
37.26.93.214 - - [17/May/2015:08:05:03 +0000] "GET /downloads/product_2 HTTP/1.1" 200 490 "-" "Go 1.1 package http" 27632
|
||||||
|
5.83.131.103 - - [17/May/2015:08:05:57 +0000] "GET /downloads/product_1 HTTP/1.1" 404 346 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 14609
|
||||||
|
50.57.209.92 - - [17/May/2015:08:05:39 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 21926
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:52 +0000] "GET /downloads/product_1 HTTP/1.1" 404 331 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 4915
|
||||||
|
54.64.16.235 - - [17/May/2015:08:05:13 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 12816
|
||||||
|
93.180.71.3 - - [17/May/2015:08:05:28 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 30742
|
||||||
|
202.143.95.26 - - [17/May/2015:08:05:55 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 24544
|
||||||
|
202.143.95.26 - - [17/May/2015:08:05:58 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 25819
|
||||||
|
202.143.95.26 - - [17/May/2015:08:05:01 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 26831
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:14 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 1344
|
||||||
|
91.239.186.133 - - [17/May/2015:08:05:03 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 4987
|
||||||
|
173.203.139.108 - - [17/May/2015:08:05:35 +0000] "GET /downloads/product_1 HTTP/1.1" 404 328 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 13419
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:39 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 12879
|
||||||
|
87.233.156.242 - - [17/May/2015:08:05:37 +0000] "GET /downloads/product_2 HTTP/1.1" 404 318 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 20611
|
||||||
|
62.75.198.179 - - [17/May/2015:08:05:33 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 1387
|
||||||
|
50.57.209.92 - - [17/May/2015:08:05:16 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 31286
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:53 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 15247
|
||||||
|
93.190.71.150 - - [17/May/2015:08:05:34 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 134
|
||||||
|
46.4.66.76 - - [17/May/2015:08:05:38 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 23909
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:09 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 15771
|
||||||
|
91.234.194.89 - - [17/May/2015:08:05:58 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 4641
|
||||||
|
217.168.17.5 - - [17/May/2015:08:05:07 +0000] "GET /downloads/product_1 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.8.10.3)" 6382
|
||||||
|
46.4.83.163 - - [17/May/2015:08:05:23 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 14599
|
||||||
|
50.57.209.92 - - [17/May/2015:08:05:19 +0000] "GET /downloads/product_1 HTTP/1.1" 404 335 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 8263
|
||||||
|
200.6.73.40 - - [17/May/2015:08:05:46 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 23514
|
||||||
|
91.121.161.213 - - [17/May/2015:08:05:28 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 29473
|
||||||
|
80.91.33.133 - - [17/May/2015:08:05:52 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 26659
|
||||||
|
188.138.60.101 - - [17/May/2015:08:05:22 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 5147
|
||||||
|
144.76.151.58 - - [17/May/2015:08:05:54 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 21698
|
||||||
|
134.119.20.172 - - [17/May/2015:09:05:28 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 21077
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:26 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 7173
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:55 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 1878
|
||||||
|
5.83.131.103 - - [17/May/2015:09:05:08 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 24451
|
||||||
|
93.180.71.3 - - [17/May/2015:09:05:18 +0000] "GET /downloads/product_1 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 30170
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:05 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 13156
|
||||||
|
50.57.209.92 - - [17/May/2015:09:05:25 +0000] "GET /downloads/product_1 HTTP/1.1" 404 332 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 306
|
||||||
|
5.83.131.103 - - [17/May/2015:09:05:18 +0000] "GET /downloads/product_1 HTTP/1.1" 404 345 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 24862
|
||||||
|
62.75.167.106 - - [17/May/2015:09:05:56 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10227
|
||||||
|
37.26.93.214 - - [17/May/2015:09:05:42 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Go 1.1 package http" 28504
|
||||||
|
93.64.134.186 - - [17/May/2015:09:05:29 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 27681
|
||||||
|
87.233.156.242 - - [17/May/2015:09:05:36 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 1502
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:26 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 18177
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:15 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 7934
|
||||||
|
54.193.30.212 - - [17/May/2015:09:05:23 +0000] "GET /downloads/product_2 HTTP/1.1" 200 951 "-" "urlgrabber/3.9.1 yum/3.4.3" 2
|
||||||
|
62.75.198.179 - - [17/May/2015:09:05:09 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 23920
|
||||||
|
91.239.186.133 - - [17/May/2015:09:05:46 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9333
|
||||||
|
83.161.14.106 - - [17/May/2015:09:05:09 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 19640
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:54 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 11061
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:46 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 24501
|
||||||
|
93.190.71.150 - - [17/May/2015:09:05:38 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 15895
|
||||||
|
50.57.209.92 - - [17/May/2015:09:05:40 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 20558
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:49 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 2338
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:25 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 12192
|
||||||
|
217.168.17.5 - - [17/May/2015:09:05:09 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.10.3)" 9824
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:59 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 2246
|
||||||
|
54.191.136.177 - - [17/May/2015:09:05:08 +0000] "GET /downloads/product_2 HTTP/1.1" 200 951 "-" "urlgrabber/3.9.1 yum/3.4.3" 7239
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:27 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 21154
|
||||||
|
91.234.194.89 - - [17/May/2015:09:05:57 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 2966
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:05 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 10715
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:22 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 14856
|
||||||
|
46.4.83.163 - - [17/May/2015:09:05:12 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 17717
|
||||||
|
91.121.161.213 - - [17/May/2015:09:05:58 +0000] "GET /downloads/product_2 HTTP/1.1" 404 346 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9951
|
||||||
|
188.138.60.101 - - [17/May/2015:09:05:57 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 25787
|
||||||
|
144.76.151.58 - - [17/May/2015:09:05:33 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 4930
|
||||||
|
195.154.77.170 - - [17/May/2015:09:05:00 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 21921
|
||||||
|
50.57.209.92 - - [17/May/2015:09:05:19 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 29773
|
||||||
|
31.22.86.126 - - [17/May/2015:09:05:41 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 7593
|
||||||
|
54.64.16.235 - - [17/May/2015:09:05:51 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 26867
|
||||||
|
202.143.95.26 - - [17/May/2015:09:05:20 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 31361
|
||||||
|
202.143.95.26 - - [17/May/2015:09:05:28 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 13167
|
||||||
|
87.233.156.242 - - [17/May/2015:09:05:47 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 22554
|
||||||
|
62.75.167.106 - - [17/May/2015:09:05:37 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 29795
|
||||||
|
152.90.220.17 - - [17/May/2015:09:05:01 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 18753
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:02 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 27083
|
||||||
|
93.180.71.3 - - [17/May/2015:09:05:38 +0000] "GET /downloads/product_1 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 28187
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:03 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 25595
|
||||||
|
5.83.131.103 - - [17/May/2015:09:05:15 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 26070
|
||||||
|
5.83.131.103 - - [17/May/2015:09:05:56 +0000] "GET /downloads/product_1 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 27724
|
||||||
|
200.6.73.40 - - [17/May/2015:09:05:33 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 8086
|
||||||
|
46.4.88.134 - - [17/May/2015:09:05:49 +0000] "GET /downloads/product_1 HTTP/1.1" 404 318 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 4853
|
||||||
|
50.57.209.92 - - [17/May/2015:09:05:34 +0000] "GET /downloads/product_1 HTTP/1.1" 404 334 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9464
|
||||||
|
93.64.134.186 - - [17/May/2015:09:05:28 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 12194
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:50 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 26621
|
||||||
|
62.75.198.180 - - [17/May/2015:09:05:55 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 29857
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:07 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 20514
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:36 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 5526
|
||||||
|
62.75.198.179 - - [17/May/2015:09:05:46 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 14143
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:17 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 20873
|
||||||
|
91.239.186.133 - - [17/May/2015:09:05:16 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 23230
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:25 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 25246
|
||||||
|
83.161.14.106 - - [17/May/2015:09:05:45 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 19052
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:31 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 12362
|
||||||
|
195.154.77.170 - - [17/May/2015:09:05:35 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10153
|
||||||
|
93.190.71.150 - - [17/May/2015:09:05:56 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 22418
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:43 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 6565
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:44 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 9883
|
||||||
|
144.76.160.62 - - [17/May/2015:09:05:38 +0000] "GET /downloads/product_2 HTTP/1.1" 404 318 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 2564
|
||||||
|
91.121.161.213 - - [17/May/2015:09:05:34 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 17140
|
||||||
|
46.4.83.163 - - [17/May/2015:09:05:10 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 22794
|
||||||
|
91.234.194.89 - - [17/May/2015:09:05:42 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 17718
|
||||||
|
50.57.209.92 - - [17/May/2015:09:05:40 +0000] "GET /downloads/product_1 HTTP/1.1" 404 331 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 5434
|
||||||
|
188.138.60.101 - - [17/May/2015:09:05:41 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 573
|
||||||
|
210.245.80.75 - - [17/May/2015:09:05:07 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 28482
|
||||||
|
144.76.151.58 - - [17/May/2015:09:05:28 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 31161
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:11 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 24151
|
||||||
|
144.76.117.56 - - [17/May/2015:09:05:59 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 6185
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:07 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 6276
|
||||||
|
31.22.86.126 - - [17/May/2015:09:05:19 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 27127
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:17 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 9549
|
||||||
|
62.75.167.106 - - [17/May/2015:09:05:03 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 21397
|
||||||
|
87.233.156.242 - - [17/May/2015:09:05:17 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 10781
|
||||||
|
152.90.220.18 - - [17/May/2015:09:05:11 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 19773
|
||||||
|
93.180.71.3 - - [17/May/2015:09:05:01 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 11889
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:54 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 14111
|
||||||
|
31.22.86.126 - - [17/May/2015:09:05:07 +0000] "GET /downloads/product_1 HTTP/1.1" 404 319 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 17787
|
||||||
|
50.57.209.92 - - [17/May/2015:09:05:42 +0000] "GET /downloads/product_2 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 18330
|
||||||
|
5.83.131.103 - - [17/May/2015:09:05:49 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 8993
|
||||||
|
46.4.88.134 - - [17/May/2015:09:05:51 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 17460
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:06 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 32412
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:19 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 12639
|
||||||
|
62.75.198.180 - - [17/May/2015:09:05:43 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 32511
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:22 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 29012
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:23 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 9767
|
||||||
|
5.83.131.103 - - [17/May/2015:09:05:07 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 12212
|
||||||
|
5.83.131.103 - - [17/May/2015:09:05:22 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 2440
|
||||||
|
5.83.131.103 - - [17/May/2015:09:05:27 +0000] "GET /downloads/product_1 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 8157
|
||||||
|
195.154.77.170 - - [17/May/2015:09:05:23 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 16242
|
||||||
|
202.143.95.26 - - [17/May/2015:09:05:08 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 22261
|
||||||
|
93.64.134.186 - - [17/May/2015:09:05:19 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 15048
|
||||||
|
85.214.47.178 - - [17/May/2015:09:05:39 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 27105
|
||||||
|
83.161.14.106 - - [17/May/2015:09:05:15 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 32234
|
||||||
|
80.70.214.71 - - [17/May/2015:09:05:20 +0000] "HEAD /downloads/product_1 HTTP/1.1" 200 0 "-" "Wget/1.13.4 (linux-gnu)" 8479
|
||||||
|
87.233.156.242 - - [17/May/2015:09:05:08 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 20831
|
||||||
|
54.64.16.235 - - [17/May/2015:09:05:55 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 18289
|
||||||
|
50.57.209.92 - - [17/May/2015:09:05:29 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9858
|
||||||
|
91.239.186.133 - - [17/May/2015:09:05:00 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 20442
|
||||||
|
91.121.161.213 - - [17/May/2015:09:05:09 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9004
|
||||||
|
200.6.73.40 - - [17/May/2015:09:05:30 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 13221
|
||||||
|
62.75.198.179 - - [17/May/2015:09:05:49 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 954
|
||||||
|
93.190.71.150 - - [17/May/2015:09:05:13 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 26398
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:33 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 22775
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:32 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 13886
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:49 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 19340
|
||||||
|
144.76.160.62 - - [17/May/2015:09:05:11 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 17157
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:59 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 9971
|
||||||
|
217.168.17.5 - - [17/May/2015:09:05:12 +0000] "GET /downloads/product_1 HTTP/1.1" 404 334 "-" "Debian APT-HTTP/1.3 (0.8.10.3)" 26268
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:47 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 5983
|
||||||
|
80.91.33.133 - - [17/May/2015:09:05:09 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 15296
|
||||||
|
144.76.117.56 - - [17/May/2015:09:05:52 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 13922
|
||||||
|
144.76.151.58 - - [17/May/2015:09:05:42 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10692
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:40 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 22550
|
||||||
|
62.75.167.106 - - [17/May/2015:10:05:47 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 20757
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:51 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 25956
|
||||||
|
37.187.238.39 - - [17/May/2015:10:05:22 +0000] "GET /downloads/product_2 HTTP/1.1" 404 318 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 16674
|
||||||
|
80.70.214.71 - - [17/May/2015:10:05:13 +0000] "GET /downloads/product_2 HTTP/1.1" 404 327 "-" "Wget/1.13.4 (linux-gnu)" 15327
|
||||||
|
91.234.194.89 - - [17/May/2015:10:05:48 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 21807
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:10 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 20469
|
||||||
|
188.138.60.101 - - [17/May/2015:10:05:58 +0000] "GET /downloads/product_2 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10122
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:01 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 1971
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:32 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 7263
|
||||||
|
93.180.71.3 - - [17/May/2015:10:05:28 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 953
|
||||||
|
46.4.88.134 - - [17/May/2015:10:05:54 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 23703
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:53 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 126
|
||||||
|
62.210.138.59 - - [17/May/2015:10:05:22 +0000] "GET /downloads/product_2 HTTP/1.1" 404 318 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 19171
|
||||||
|
31.22.86.126 - - [17/May/2015:10:05:38 +0000] "GET /downloads/product_1 HTTP/1.1" 404 335 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 31107
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:16 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 8252
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:24 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 25651
|
||||||
|
195.154.233.202 - - [17/May/2015:10:05:39 +0000] "GET /downloads/product_2 HTTP/1.1" 404 318 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 3446
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:43 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 20770
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:14 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 27979
|
||||||
|
94.23.21.169 - - [17/May/2015:10:05:09 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 28723
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:18 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 13439
|
||||||
|
195.154.77.170 - - [17/May/2015:10:05:17 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 22432
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:36 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 1572
|
||||||
|
85.214.47.178 - - [17/May/2015:10:05:57 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 27196
|
||||||
|
5.83.131.103 - - [17/May/2015:10:05:55 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 9637
|
||||||
|
5.83.131.103 - - [17/May/2015:10:05:03 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 18830
|
||||||
|
5.83.131.103 - - [17/May/2015:10:05:05 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 844
|
||||||
|
5.83.131.103 - - [17/May/2015:10:05:08 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 20882
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:40 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 1325
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:39 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 11125
|
||||||
|
84.53.65.28 - - [17/May/2015:10:05:25 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10771
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:33 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 24891
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:28 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 23541
|
||||||
|
217.168.17.5 - - [17/May/2015:10:05:02 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.10.3)" 22323
|
||||||
|
91.121.161.213 - - [17/May/2015:10:05:18 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 29114
|
||||||
|
80.70.214.71 - - [17/May/2015:10:05:33 +0000] "GET /downloads/product_1 HTTP/1.1" 404 329 "-" "Wget/1.13.4 (linux-gnu)" 13629
|
||||||
|
144.76.160.62 - - [17/May/2015:10:05:10 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 32440
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:52 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 20402
|
||||||
|
93.64.134.186 - - [17/May/2015:10:05:54 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 5113
|
||||||
|
93.190.71.150 - - [17/May/2015:10:05:41 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 31729
|
||||||
|
87.233.156.242 - - [17/May/2015:10:05:02 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 28958
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:22 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 15630
|
||||||
|
91.239.186.133 - - [17/May/2015:10:05:50 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 7488
|
||||||
|
62.75.198.179 - - [17/May/2015:10:05:28 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9316
|
||||||
|
144.76.117.56 - - [17/May/2015:10:05:46 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 9965
|
||||||
|
178.32.54.253 - - [17/May/2015:10:05:33 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 2881
|
||||||
|
37.187.238.39 - - [17/May/2015:10:05:05 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 17544
|
||||||
|
83.161.14.106 - - [17/May/2015:10:05:47 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 11419
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:48 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 16406
|
||||||
|
91.194.188.90 - - [17/May/2015:10:05:51 +0000] "HEAD /downloads/product_2 HTTP/1.1" 200 0 "-" "Wget/1.13.4 (linux-gnu)" 28324
|
||||||
|
83.161.14.106 - - [17/May/2015:10:05:13 +0000] "GET /downloads/product_2 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 1893
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:18 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 14697
|
||||||
|
93.180.71.3 - - [17/May/2015:10:05:34 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 16168
|
||||||
|
62.210.138.59 - - [17/May/2015:10:05:40 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 663
|
||||||
|
46.4.88.134 - - [17/May/2015:10:05:16 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 27962
|
||||||
|
202.143.95.26 - - [17/May/2015:10:05:50 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 18539
|
||||||
|
202.143.95.26 - - [17/May/2015:10:05:02 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 13495
|
||||||
|
202.143.95.26 - - [17/May/2015:10:05:10 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 3192
|
||||||
|
62.75.198.180 - - [17/May/2015:10:05:36 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 4349
|
||||||
|
144.76.137.134 - - [17/May/2015:10:05:03 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 1395
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:23 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 12898
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:11 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 26930
|
||||||
|
80.70.214.71 - - [17/May/2015:10:05:22 +0000] "GET /downloads/product_2 HTTP/1.1" 404 326 "-" "Wget/1.13.4 (linux-gnu)" 16662
|
||||||
|
91.234.194.89 - - [17/May/2015:10:05:06 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9445
|
||||||
|
188.138.60.101 - - [17/May/2015:10:05:38 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 18804
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:33 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 22429
|
||||||
|
195.154.233.202 - - [17/May/2015:10:05:47 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 8456
|
||||||
|
94.23.21.169 - - [17/May/2015:10:05:58 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 32187
|
||||||
|
144.76.151.58 - - [17/May/2015:10:05:10 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 29276
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:42 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 9700
|
||||||
|
62.75.167.106 - - [17/May/2015:10:05:31 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10078
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:41 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 7600
|
||||||
|
50.57.209.92 - - [17/May/2015:10:05:16 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 8540
|
||||||
|
202.143.95.26 - - [17/May/2015:10:05:43 +0000] "GET /downloads/product_2 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 24400
|
||||||
|
200.6.73.40 - - [17/May/2015:10:05:38 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 29363
|
||||||
|
195.154.77.170 - - [17/May/2015:10:05:33 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 17025
|
||||||
|
54.187.216.43 - - [17/May/2015:10:05:55 +0000] "GET /downloads/product_2 HTTP/1.1" 200 951 "-" "urlgrabber/3.9.1 yum/3.4.3" 27997
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:04 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 1806
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:09 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 28234
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:06 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 19286
|
||||||
|
202.143.95.26 - - [17/May/2015:10:05:05 +0000] "GET /downloads/product_2 HTTP/1.1" 404 325 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 19522
|
||||||
|
202.143.95.26 - - [17/May/2015:10:05:40 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 23841
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:02 +0000] "GET /downloads/product_1 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 31135
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:50 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 21510
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:51 +0000] "GET /downloads/product_1 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 26977
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:55 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 1078
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:47 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 7473
|
||||||
|
84.53.65.28 - - [17/May/2015:10:05:30 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 28347
|
||||||
|
92.50.100.22 - - [17/May/2015:10:05:15 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 8699
|
||||||
|
85.214.47.178 - - [17/May/2015:10:05:30 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 2078
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:08 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 7013
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:36 +0000] "GET /downloads/product_1 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 29440
|
||||||
|
5.83.131.103 - - [17/May/2015:10:05:05 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 24206
|
||||||
|
37.187.238.39 - - [17/May/2015:10:05:33 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 5674
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:04 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 15781
|
||||||
|
195.210.47.239 - - [17/May/2015:10:05:49 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 1462
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:11 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 9446
|
||||||
|
54.64.16.235 - - [17/May/2015:10:05:12 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 23687
|
||||||
|
178.32.54.253 - - [17/May/2015:10:05:54 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 17314
|
||||||
|
144.92.16.161 - - [17/May/2015:10:05:39 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 4021
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:51 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 13168
|
||||||
|
87.233.156.242 - - [17/May/2015:10:05:49 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 8142
|
||||||
|
31.22.86.126 - - [17/May/2015:10:05:18 +0000] "GET /downloads/product_1 HTTP/1.1" 404 332 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 28923
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:49 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 17021
|
||||||
|
91.121.161.213 - - [17/May/2015:10:05:48 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 711
|
||||||
|
80.91.33.133 - - [17/May/2015:10:05:06 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 15815
|
||||||
|
50.57.209.92 - - [17/May/2015:10:05:19 +0000] "GET /downloads/product_1 HTTP/1.1" 404 333 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 12290
|
||||||
|
91.239.186.133 - - [17/May/2015:10:05:15 +0000] "GET /downloads/product_2 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9172
|
||||||
|
144.76.117.56 - - [17/May/2015:10:05:31 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 27106
|
||||||
|
144.76.160.62 - - [17/May/2015:10:05:47 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 2607
|
||||||
|
62.210.138.59 - - [17/May/2015:10:05:45 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 26922
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:07 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 2045
|
||||||
|
62.75.198.179 - - [17/May/2015:10:05:14 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 14090
|
||||||
|
93.190.71.150 - - [17/May/2015:10:05:07 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 2233
|
||||||
|
144.76.117.56 - - [17/May/2015:10:05:18 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 14988
|
||||||
|
94.23.21.169 - - [17/May/2015:10:05:23 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 11645
|
||||||
|
91.194.188.90 - - [17/May/2015:10:05:05 +0000] "HEAD /downloads/product_2 HTTP/1.1" 200 0 "-" "Wget/1.13.4 (linux-gnu)" 28064
|
||||||
|
93.64.134.186 - - [17/May/2015:10:05:51 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 16583
|
||||||
|
54.86.157.236 - - [17/May/2015:10:05:48 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 23208
|
||||||
|
80.70.214.71 - - [17/May/2015:10:05:23 +0000] "HEAD /downloads/product_2 HTTP/1.1" 200 0 "-" "Wget/1.13.4 (linux-gnu)" 1059
|
||||||
|
93.180.71.3 - - [17/May/2015:10:05:22 +0000] "GET /downloads/product_1 HTTP/1.1" 404 333 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 16367
|
||||||
|
195.154.233.202 - - [17/May/2015:10:05:43 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 26788
|
||||||
|
193.192.58.163 - - [17/May/2015:11:05:31 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 6753
|
||||||
|
144.76.137.134 - - [17/May/2015:11:05:00 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 18307
|
||||||
|
54.86.157.236 - - [17/May/2015:11:05:22 +0000] "GET /downloads/product_1 HTTP/1.1" 404 333 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 10520
|
||||||
|
83.161.14.106 - - [17/May/2015:11:05:09 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 5640
|
||||||
|
144.76.151.58 - - [17/May/2015:11:05:16 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9992
|
||||||
|
144.92.16.161 - - [17/May/2015:11:05:06 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 3262
|
||||||
|
195.154.77.170 - - [17/May/2015:11:05:20 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 17687
|
||||||
|
62.75.198.180 - - [17/May/2015:11:05:05 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 18911
|
||||||
|
91.234.194.89 - - [17/May/2015:11:05:29 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 22038
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:28 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 2238
|
||||||
|
188.138.60.101 - - [17/May/2015:11:05:38 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10581
|
||||||
|
62.75.167.106 - - [17/May/2015:11:05:58 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 14869
|
||||||
|
46.4.88.134 - - [17/May/2015:11:05:51 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 6669
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:35 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 12780
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:05 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 24133
|
||||||
|
84.53.65.28 - - [17/May/2015:11:05:25 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 14350
|
||||||
|
152.90.220.17 - - [17/May/2015:11:05:08 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 23513
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:07 +0000] "GET /downloads/product_1 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 31695
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:21 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 12243
|
||||||
|
178.32.54.253 - - [17/May/2015:11:05:44 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 2641
|
||||||
|
54.72.39.202 - - [17/May/2015:11:05:19 +0000] "GET /downloads/product_2 HTTP/1.1" 200 951 "-" "urlgrabber/3.9.1 yum/3.4.3" 27639
|
||||||
|
91.120.61.154 - - [17/May/2015:11:05:03 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 21180
|
||||||
|
37.187.238.39 - - [17/May/2015:11:05:25 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 30661
|
||||||
|
85.214.47.178 - - [17/May/2015:11:05:12 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 20380
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:47 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 11957
|
||||||
|
5.83.131.103 - - [17/May/2015:11:05:10 +0000] "GET /downloads/product_1 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 19230
|
||||||
|
200.6.73.40 - - [17/May/2015:11:05:19 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 4087
|
||||||
|
5.83.131.103 - - [17/May/2015:11:05:45 +0000] "GET /downloads/product_1 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 16383
|
||||||
|
91.121.161.213 - - [17/May/2015:11:05:08 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 11487
|
||||||
|
91.239.186.133 - - [17/May/2015:11:05:40 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 11774
|
||||||
|
50.57.209.92 - - [17/May/2015:11:05:39 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 28472
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:18 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 24011
|
||||||
|
144.92.16.161 - - [17/May/2015:11:05:44 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 26633
|
||||||
|
87.233.156.242 - - [17/May/2015:11:05:33 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 16170
|
||||||
|
94.23.21.169 - - [17/May/2015:11:05:56 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 15992
|
||||||
|
5.83.131.103 - - [17/May/2015:11:05:31 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 20999
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:40 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 23097
|
||||||
|
202.143.95.26 - - [17/May/2015:11:05:30 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 3282
|
||||||
|
202.143.95.26 - - [17/May/2015:11:05:44 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 4869
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:28 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 9310
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:51 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 23547
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:11 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 5516
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:13 +0000] "GET /downloads/product_1 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 26601
|
||||||
|
62.210.138.59 - - [17/May/2015:11:05:23 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 26830
|
||||||
|
144.76.160.62 - - [17/May/2015:11:05:06 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 15405
|
||||||
|
93.190.71.150 - - [17/May/2015:11:05:29 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 16982
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:00 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 6019
|
||||||
|
202.143.95.26 - - [17/May/2015:11:05:29 +0000] "GET /downloads/product_2 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 3822
|
||||||
|
193.192.58.163 - - [17/May/2015:11:05:54 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 13461
|
||||||
|
195.154.233.202 - - [17/May/2015:11:05:46 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 32439
|
||||||
|
80.70.214.71 - - [17/May/2015:11:05:59 +0000] "HEAD /downloads/product_2 HTTP/1.1" 200 0 "-" "Wget/1.13.4 (linux-gnu)" 31402
|
||||||
|
62.75.198.179 - - [17/May/2015:11:05:17 +0000] "GET /downloads/product_2 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 452
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:51 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 25508
|
||||||
|
144.92.16.161 - - [17/May/2015:11:05:39 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 29252
|
||||||
|
195.154.77.170 - - [17/May/2015:11:05:28 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 19649
|
||||||
|
50.57.209.92 - - [17/May/2015:11:05:56 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 24457
|
||||||
|
144.76.117.56 - - [17/May/2015:11:05:49 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 10519
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:36 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 6815
|
||||||
|
144.76.137.134 - - [17/May/2015:11:05:07 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 798
|
||||||
|
188.138.60.101 - - [17/May/2015:11:05:00 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 19441
|
||||||
|
54.172.198.124 - - [17/May/2015:11:05:43 +0000] "GET /downloads/product_2 HTTP/1.1" 200 2582 "-" "urlgrabber/3.9.1 yum/3.4.3" 17903
|
||||||
|
37.187.238.39 - - [17/May/2015:11:05:27 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 3443
|
||||||
|
178.32.54.253 - - [17/May/2015:11:05:03 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9634
|
||||||
|
62.75.198.180 - - [17/May/2015:11:05:16 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 5417
|
||||||
|
62.75.167.106 - - [17/May/2015:11:05:26 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 1055
|
||||||
|
195.210.47.239 - - [17/May/2015:11:05:36 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 4218
|
||||||
|
91.234.194.89 - - [17/May/2015:11:05:48 +0000] "GET /downloads/product_2 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 23355
|
||||||
|
31.22.86.126 - - [17/May/2015:11:05:19 +0000] "GET /downloads/product_1 HTTP/1.1" 404 334 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 29547
|
||||||
|
91.194.188.90 - - [17/May/2015:11:05:42 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Wget/1.13.4 (linux-gnu)" 26988
|
||||||
|
92.50.100.22 - - [17/May/2015:11:05:35 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 13600
|
||||||
|
144.76.151.58 - - [17/May/2015:11:05:45 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 18988
|
||||||
|
93.64.134.186 - - [17/May/2015:11:05:48 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 2281
|
||||||
|
85.214.47.178 - - [17/May/2015:11:05:19 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 16054
|
||||||
|
94.23.21.169 - - [17/May/2015:11:05:11 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 21647
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:31 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 31277
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:20 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 19500
|
||||||
|
91.121.161.213 - - [17/May/2015:11:05:03 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 29579
|
||||||
|
83.161.14.106 - - [17/May/2015:11:05:52 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 1080
|
||||||
|
54.64.16.235 - - [17/May/2015:11:05:43 +0000] "GET /downloads/product_2 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.20.1)" 15057
|
||||||
|
84.53.65.28 - - [17/May/2015:11:05:31 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 5805
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:09 +0000] "GET /downloads/product_1 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 32764
|
||||||
|
50.57.209.92 - - [17/May/2015:11:05:15 +0000] "GET /downloads/product_1 HTTP/1.1" 404 334 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 28248
|
||||||
|
91.239.186.133 - - [17/May/2015:11:05:17 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 32046
|
||||||
|
144.92.16.161 - - [17/May/2015:11:05:30 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 31342
|
||||||
|
62.210.138.59 - - [17/May/2015:11:05:29 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 22861
|
||||||
|
210.245.80.75 - - [17/May/2015:11:05:05 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 32649
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:12 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 11268
|
||||||
|
83.161.14.106 - - [17/May/2015:11:05:55 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 8233
|
||||||
|
87.233.156.242 - - [17/May/2015:11:05:02 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 10052
|
||||||
|
5.83.131.103 - - [17/May/2015:11:05:49 +0000] "GET /downloads/product_1 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 20084
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:05 +0000] "GET /downloads/product_1 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 9007
|
||||||
|
91.120.61.154 - - [17/May/2015:11:05:48 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 8410
|
||||||
|
195.154.233.202 - - [17/May/2015:11:05:55 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 20582
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:56 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 8327
|
||||||
|
193.192.58.163 - - [17/May/2015:11:05:58 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 4041
|
||||||
|
93.190.71.150 - - [17/May/2015:11:05:11 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 26973
|
||||||
|
144.76.160.62 - - [17/May/2015:11:05:20 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 24342
|
||||||
|
50.57.209.92 - - [17/May/2015:11:05:56 +0000] "GET /downloads/product_1 HTTP/1.1" 404 331 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 27744
|
||||||
|
62.75.198.179 - - [17/May/2015:11:05:19 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 2455
|
||||||
|
193.192.59.41 - - [17/May/2015:11:05:55 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 19596
|
||||||
|
195.154.77.170 - - [17/May/2015:11:05:35 +0000] "GET /downloads/product_2 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 23424
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:17 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 4171
|
||||||
|
200.6.73.40 - - [17/May/2015:11:05:26 +0000] "GET /downloads/product_1 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 8274
|
||||||
|
188.138.60.101 - - [17/May/2015:11:05:56 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 2949
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:53 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 5641
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:42 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 28746
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:17 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 18396
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:32 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 17638
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:23 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.17)" 7865
|
||||||
|
144.76.137.134 - - [17/May/2015:11:05:57 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 4280
|
||||||
|
80.70.214.71 - - [17/May/2015:11:05:16 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Wget/1.13.4 (linux-gnu)" 32436
|
||||||
|
144.76.117.56 - - [17/May/2015:11:05:28 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 30048
|
||||||
|
94.23.21.169 - - [17/May/2015:11:05:21 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 6186
|
||||||
|
198.61.216.151 - - [17/May/2015:11:05:16 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 21567
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:11 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 674
|
||||||
|
91.194.188.90 - - [17/May/2015:11:05:32 +0000] "HEAD /downloads/product_2 HTTP/1.1" 200 0 "-" "Wget/1.13.4 (linux-gnu)" 5354
|
||||||
|
62.75.198.180 - - [17/May/2015:11:05:39 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 5345
|
||||||
|
80.91.33.133 - - [17/May/2015:11:05:52 +0000] "GET /downloads/product_1 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 2326
|
||||||
|
31.22.86.126 - - [17/May/2015:12:05:15 +0000] "GET /downloads/product_1 HTTP/1.1" 404 331 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 3114
|
||||||
|
84.53.65.28 - - [17/May/2015:12:05:38 +0000] "GET /downloads/product_2 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 9036
|
||||||
|
144.92.16.161 - - [17/May/2015:12:05:32 +0000] "GET /downloads/product_1 HTTP/1.1" 404 324 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.21)" 9410
|
||||||
|
50.57.209.92 - - [17/May/2015:12:05:38 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 2039
|
||||||
|
5.83.131.103 - - [17/May/2015:12:05:26 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 14852
|
||||||
|
5.83.131.103 - - [17/May/2015:12:05:27 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 71
|
||||||
|
62.75.167.106 - - [17/May/2015:12:05:01 +0000] "GET /downloads/product_2 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 6439
|
||||||
|
178.32.54.253 - - [17/May/2015:12:05:26 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 8721
|
||||||
|
91.121.161.213 - - [17/May/2015:12:05:00 +0000] "GET /downloads/product_2 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 1795
|
||||||
|
91.234.194.89 - - [17/May/2015:12:05:11 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 8556
|
||||||
|
37.187.238.39 - - [17/May/2015:12:05:29 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 17627
|
||||||
|
91.239.186.133 - - [17/May/2015:12:05:38 +0000] "GET /downloads/product_2 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 10970
|
||||||
|
87.233.156.242 - - [17/May/2015:12:05:34 +0000] "GET /downloads/product_2 HTTP/1.1" 404 333 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 409
|
||||||
|
202.143.95.26 - - [17/May/2015:12:05:22 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 10283
|
||||||
|
144.76.151.58 - - [17/May/2015:12:05:25 +0000] "GET /downloads/product_2 HTTP/1.1" 404 333 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 22461
|
||||||
|
62.210.138.59 - - [17/May/2015:12:05:12 +0000] "GET /downloads/product_2 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)" 22736
|
||||||
|
80.91.33.133 - - [17/May/2015:12:05:05 +0000] "GET /downloads/product_1 HTTP/1.1" 404 336 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 21014
|
||||||
|
83.161.14.106 - - [17/May/2015:12:05:48 +0000] "GET /downloads/product_2 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 18047
|
||||||
|
80.91.33.133 - - [17/May/2015:12:05:31 +0000] "GET /downloads/product_1 HTTP/1.1" 404 341 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 25206
|
||||||
|
5.83.131.103 - - [17/May/2015:12:05:21 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 15330
|
||||||
|
80.91.33.133 - - [17/May/2015:12:05:54 +0000] "GET /downloads/product_1 HTTP/1.1" 404 339 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.16)" 8763
|
||||||
|
198.61.216.151 - - [17/May/2015:12:05:59 +0000] "GET /downloads/product_2 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.16~exp12ubuntu10.22)" 11132
|
||||||
|
195.154.77.170 - - [17/May/2015:12:05:05 +0000] "GET /downloads/product_2 HTTP/1.1" 404 338 "-" "Debian APT-HTTP/1.3 (0.9.7.9)" 23768
|
||||||
Loading…
Reference in New Issue