Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added a new Telegraf input for events and session-records (t128_tank) #58

Conversation

shriyanshk128T
Copy link

@shriyanshk128T shriyanshk128T commented Sep 27, 2023

Description

In order to translate session-records and events to native telegraf we decided to create a new input telegraf called t128_tank

Required for all PRs:

  • Signed CLA.
  • Associated README.md updated.
  • Has appropriate unit tests.
  • Manual Testing & ScreenGrabs
  • Update Docker Command with flags

Command

./scripts/docker-env build --clean --no-cache --version ${value} --release ${value}

Testing

  • Given no index file, we read from the beginning of the topic
  • Given an index file, we read from that point in the topic
  • Given an index file location where the file doesn’t exist, the file is created and written as lines are processed
  • Given an index file with an index beyond what is currently in TANK, the reader identifies the boundary fault and starts from the beginning of the topic
  • Verify the behavior when TANK is not running
  • Verify the behavior when TANK goes from running to stopped
  • Verify the behavior when TANK goes from not running to running
  • Tagpass for session_records and events

Testcase 1 config & output

[inputs]
[[inputs.t128_tank]]
topic="events"
[outputs]
[[outputs.file]]
files=["/home/centos/tank.txt"]
2023-10-13T17:50:52Z I! Starting Telegraf 1.22.10-a05488d6
2023-10-13T17:50:52Z I! Loaded inputs: t128_tank
2023-10-13T17:50:52Z I! Loaded aggregators:
2023-10-13T17:50:52Z I! Loaded processors:
2023-10-13T17:50:52Z I! Loaded outputs: file
2023-10-13T17:50:52Z I! Tags enabled: host=t137-dut3.openstacklocal
2023-10-13T17:50:52Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"t137-dut3.openstacklocal", Flush Interval:10s
2023-10-13T17:50:52Z E! [inputs.t128_tank] starting events tank read from index 0
t128_tank,host=t137-dut3.openstacklocal,index=581 message="events,collector_id=auditd,node=westB,subtype=authentication,type=admin event_detail=\"node=t137-dut3.openstacklocal type=USER_AUTH msg=audit(1697214079.153:8859): pid=19533 uid=0 auid=4294967295 ses=4294967295 msg='op=pubkey acct=\\\"centos\\\" exe=\\\"/usr/sbin/sshd\\\" hostname=? addr=172.18.15.253 terminal=ssh res=failed'\",fail_reason=\"pubkey\",permitted=f,user=\"centos\" 1697214079153008859" 1697219452346984804

Testcase 2 config & output

[inputs]
[[inputs.t128_tank]]
topic="events"
index_file="/var/lib/128T-cloud-intel-agent/index/cloud_events.index"
[outputs]
[[outputs.file]]
files=["/home/centos/tank.txt"]
[root@t137-dut3 centos]# telegraf --config sample.conf
2023-10-13T18:31:54Z I! Starting Telegraf 1.22.10-a05488d6
2023-10-13T18:31:54Z I! Loaded inputs: t128_tank
2023-10-13T18:31:54Z I! Loaded aggregators:
2023-10-13T18:31:54Z I! Loaded processors:
2023-10-13T18:31:54Z I! Loaded outputs: file
2023-10-13T18:31:54Z I! Tags enabled: host=t137-dut3.openstacklocal log_level=debugf
2023-10-13T18:31:54Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"t137-dut3.openstacklocal", Flush Interval:10s
2023-10-13T18:31:54Z E! [inputs.t128_tank] starting events tank read from index 87
2023-10-13T18:31:54Z E! [inputs.t128_tank] encountered error while parsing lines in events output, will not attempt to parse more lines: parsed boundary fault: next available index is 588
2023-10-13T18:31:54Z E! [inputs.t128_tank] events read routine exited with error: parsed boundary fault: next available index is 588
2023-10-13T18:31:59Z E! [inputs.t128_tank] starting events tank read from index 588
^C2023-10-13T18:32:43Z E! [inputs.t128_tank] events reader done
2023-10-13T18:32:43Z E! [inputs.t128_tank] encountered error while parsing lines in events output, will not attempt to parse more lines: found empty newline in events tank stream, continuing
2023-10-13T18:32:43Z E! [inputs.t128_tank] events read routine exited with error: found empty newline in events tank stream, continuing
2023-10-13T18:32:43Z I! [agent] Hang on, flushing any cached metrics before shutdown
2023-10-13T18:32:43Z I! [agent] Stopping running outputs
[root@t137-dut3 centos]# tail -f tank.txt
t128_tank,host=t137-dut3.openstacklocal,index=588,log_level=debugf message="events,collector_id=auditd,node=westB,subtype=ntp_adjustment,type=system event_detail=\"node=t137-dut3.openstacklocal type=SYSCALL msg=audit(1697216526.571:8918): arch=c000003e syscall=159 success=yes exit=0 a0=5626b096a980 a1=1 a2=0 a3=5626b09fa55c items=0 ppid=1 pid=7236 auid=4294967295 uid=38 gid=38 euid=38 suid=38 fsuid=38 egid=38 sgid=38 fsgid=38 tty=(none) ses=4294967295 comm=\\\"ntpd\\\" exe=\\\"/usr/sbin/ntpd\\\" key=\\\"128T\\\" old_time=2023-10-13T17:02:06.571000Z new_time=2023-10-13T17:02:06Z\",new_date_time=\"2023-10-13T17:02:06Z\",user=\"ntp\" 1697216526571008918" 1697221919544233297

Testcase 3 config & output

[inputs]
[[inputs.t128_tank]]
topic="events"
index_file="/home/centos/test.index"
[outputs]
[[outputs.file]]
files=["/home/centos/tank.txt"]
t128_tank,host=t137-dut3.openstacklocal,index=553 message="events,collector_id=auditd,node=westB,subtype=authentication,type=admin event_detail=\"node=t137-dut3.openstacklocal type=USER_AUTH msg=audit(1697197701.648:8589): pid=2800 uid=0 auid=1000 ses=73 msg='op=PAM:authentication grantors=pam_rootok acct=\\\"root\\\" exe=\\\"/usr/bin/su\\\" hostname=t137-dut3.openstacklocal addr=? terminal=pts/2 res=success'\",permitted=t,user=\"root\" 1697197701648008589" 1697197770714886723

Testcase 4 config & output

[inputs]
[[inputs.t128_tank]]
topic="events"
index_file="/home/centos/test.index"
[outputs]
[[outputs.file]]
files=["/home/centos/tank.txt"]
[root@t137-dut3 centos]# tail -f tank.txt
t128_tank,host=t137-dut3.openstacklocal,index=588,log_level=debugf message="events,collector_id=auditd,node=westB,subtype=ntp_adjustment,type=system event_detail=\"node=t137-dut3.openstacklocal type=SYSCALL msg=audit(1697216526.571:8918): arch=c000003e syscall=159 success=yes exit=0 a0=5626b096a980 a1=1 a2=0 a3=5626b09fa55c items=0 ppid=1 pid=7236 auid=4294967295 uid=38 gid=38 euid=38 suid=38 fsuid=38 egid=38 sgid=38 fsgid=38 tty=(none) ses=4294967295 comm=\\\"ntpd\\\" exe=\\\"/usr/sbin/ntpd\\\" key=\\\"128T\\\" old_time=2023-10-13T17:02:06.571000Z new_time=2023-10-13T17:02:06Z\",new_date_time=\"2023-10-13T17:02:06Z\",user=\"ntp\" 1697216526571008918" 1697221776118475567
[root@t137-dut3 centos]# telegraf --config sample.conf
2023-10-13T18:29:31Z I! Starting Telegraf 1.22.10-a05488d6
2023-10-13T18:29:31Z I! Loaded inputs: t128_tank
2023-10-13T18:29:31Z I! Loaded aggregators:
2023-10-13T18:29:31Z I! Loaded processors:
2023-10-13T18:29:31Z I! Loaded outputs: file
2023-10-13T18:29:31Z I! Tags enabled: host=t137-dut3.openstacklocal log_level=debugf
2023-10-13T18:29:31Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"t137-dut3.openstacklocal", Flush Interval:10s
2023-10-13T18:29:31Z E! [inputs.t128_tank] starting events tank read from index 701
2023-10-13T18:29:31Z E! [inputs.t128_tank] encountered error while parsing lines in events output, will not attempt to parse more lines: parsed boundary fault: next available index is 588
2023-10-13T18:29:31Z E! [inputs.t128_tank] events read routine exited with error: parsed boundary fault: next available index is 588
2023-10-13T18:29:36Z E! [inputs.t128_tank] starting events tank read from index 588
^C2023-10-13T18:30:27Z E! [inputs.t128_tank] events reader done
2023-10-13T18:30:27Z I! [agent] Hang on, flushing any cached metrics before shutdown
2023-10-13T18:30:27Z I! [agent] Stopping running outputs
[root@t137-dut3 centos]#

Testcase 5

systemctl stop tank
2023-10-13T18:38:12Z E! [inputs.t128_tank] events read routine exited with error: found empty newline in events tank stream, continuing
2023-10-13T18:38:17Z E! [inputs.t128_tank] starting events tank read from index 87
2023-10-13T18:38:17Z E! [inputs.t128_tank] encountered error while parsing lines in events output, will not attempt to parse more lines: found empty newline in events tank stream, continuing
...
...
...
2023-10-13T18:37:32Z E! [inputs.t128_tank] events read routine exited with error: found empty newline in events tank stream, continuing
2023-10-13T18:37:37Z E! [inputs.t128_tank] starting events tank read from index 87
2023-10-13T18:37:37Z E! [inputs.t128_tank] encountered error while parsing lines in events output, will not attempt to parse more lines: found empty newline in events tank stream, continuing
2023-10-13T18:37:37Z E! [inputs.t128_tank] events read routine exited with error: found empty newline in events tank stream, continuing

This is what the stdout file stopped at -

t128_tank,host=t137-dut3.openstacklocal,index=631,log_level=debugf message="events,collector_id=auditd,node=westB,subtype=authentication,type=admin event_detail=\"node=t137-dut3.openstacklocal type=USER_AUTH msg=audit(1697222201.649:9467): pid=13060 uid=0 auid=1000 ses=92 msg='op=PAM:authentication grantors=pam_rootok acct=\\\"root\\\" exe=\\\"/usr/bin/su\\\" hostname=t137-dut3.openstacklocal addr=? terminal=pts/4 res=success'\",permitted=t,user=\"root\" 1697222201649009467" 1697222322393544749

Testcase 6

systemctl restart tank
2023-10-13T18:40:56Z E! [inputs.t128_tank] encountered error while parsing lines in events output, will not attempt to parse more lines: found empty newline in events tank stream, continuing
2023-10-13T18:40:56Z E! [inputs.t128_tank] events read routine exited with error: found empty newline in events tank stream, continuing
2023-10-13T18:41:01Z E! [inputs.t128_tank] starting events tank read from index 87
2023-10-13T18:41:01Z E! [inputs.t128_tank] encountered error while parsing lines in events output, will not attempt to parse more lines: parsed boundary fault: next available index is 588
2023-10-13T18:41:01Z E! [inputs.t128_tank] events read routine exited with error: parsed boundary fault: next available index is 588
2023-10-13T18:41:06Z E! [inputs.t128_tank] starting events tank read from index 588

Stopped at

t128_tank,host=t137-dut3.openstacklocal,index=632,log_level=debugf message="events,collector_id=auditd,node=westB,subtype=authentication,type=admin event_detail=\"node=t137-dut3.openstacklocal type=USER_AUTH msg=audit(1697222354.640:9484): pid=14378 uid=0 auid=1000 ses=87 msg='op=PAM:authentication grantors=pam_rootok acct=\\\"root\\\" exe=\\\"/usr/bin/su\\\" hostname=t137-dut3.openstacklocal addr=? terminal=pts/3 res=success'\",permitted=t,user=\"root\" 1697222354640009484" 1697222466531085921

Started at after restart

t128_tank,host=t137-dut3.openstacklocal,index=633,log_level=debugf message="events,collector_id=auditd,node=westB,subtype=authentication,type=admin event_detail=\"node=t137-dut3.openstacklocal type=USER_AUTH msg=audit(1697222526.701:9502): pid=15679 uid=0 auid=1000 ses=87 msg='op=PAM:authentication grantors=pam_rootok acct=\\\"root\\\" exe=\\\"/usr/bin/su\\\" hostname=t137-dut3.openstacklocal addr=? terminal=pts/3 res=success'\",permitted=t,user=\"root\" 1697222526701009502" 1697222526837302373

Testcase 7

systemctl start tank
t128_tank,host=t137-dut3.openstacklocal,index=632,log_level=debugf message="events,collector_id=auditd,node=westB,subtype=authentication,type=admin event_detail=\"node=t137-dut3.openstacklocal type=USER_AUTH msg=audit(1697222354.640:9484): pid=14378 uid=0 auid=1000 ses=87 msg='op=PAM:authentication grantors=pam_rootok acct=\\\"root\\\" exe=\\\"/usr/bin/su\\\" hostname=t137-dut3.openstacklocal addr=? terminal=pts/3 res=success'\",permitted=t,user=\"root\" 1697222354640009484" 1697222354712038750

Testcase for TagPass

config without tagpass

[global_tags]
log_level = "debugf"
[inputs]
[[inputs.t128_tank]]
topic = "session_records"
index_file = "/home/centos/newtest.index"
[outputs]
[[outputs.file]]
files = ["/home/centos/tank.json"]
data_format = "json"

Output

{"fields":{"message":"events,collector_id=auditd,node=westB,subtype=authentication,type=admin event_detail=\"node=t137-dut3.openstacklocal type=USER_AUTH msg=audit(1697478822.552:10896): pid=6607 uid=0 auid=4294967295 ses=4294967295 msg='op=success acct=\\\"centos\\\" exe=\\\"/usr/sbin/sshd\\\" hostname=? addr=172.18.15.253 terminal=ssh res=success'\",permitted=t,user=\"centos\" 1697478822552010896"},"name":"t128_tank","tags":{"host":"t137-dut3.openstacklocal","index":"897","log_level":"debugf","type":"admin"},"timestamp":1697483882}
{"fields":{"message":"events,collector_id=auditd,node=westB,subtype=ntp_adjustment,type=system event_detail=\"node=t137-dut3.openstacklocal type=SYSCALL msg=audit(1697479334.596:10929): arch=c000003e syscall=159 success=yes exit=0 a0=5626b096a980 a1=1 a2=0 a3=5626b09fa55c items=0 ppid=1 pid=7236 auid=4294967295 uid=38 gid=38 euid=38 suid=38 fsuid=38 egid=38 sgid=38 fsgid=38 tty=(none) ses=4294967295 comm=\\\"ntpd\\\" exe=\\\"/usr/sbin/ntpd\\\" key=\\\"128T\\\" old_time=2023-10-16T18:02:14.596000Z new_time=2023-10-16T18:02:14Z\",new_date_time=\"2023-10-16T18:02:14Z\",user=\"ntp\" 1697479334596010929"},"name":"t128_tank","tags":{"host":"t137-dut3.openstacklocal","index":"898","log_level":"debugf","type":"system"},"timestamp":1697483882}

config with tagpass

[global_tags]
log_level = "debugf"
[inputs]
[[inputs.t128_tank]]
topic = "events"
index_file = "/home/centos/newtest.index"
[inputs.t128_tank.tagpass]
type = ["alarm", "admin"]
[outputs]
[[outputs.file]]
files = ["/home/centos/tank.json"]
data_format = "json"

Output

{"fields":{"message":"events,collector_id=auditd,node=westB,subtype=authentication,type=admin event_detail=\"node=t137-dut3.openstacklocal type=USER_AUTH msg=audit(1697483171.999:11696): pid=7894 uid=0 auid=4294967295 ses=4294967295 msg='op=success acct=\\\"centos\\\" exe=\\\"/usr/sbin/sshd\\\" hostname=? addr=172.18.15.253 terminal=ssh res=success'\",permitted=t,user=\"centos\" 1697483171999011696"},"name":"t128_tank","tags":{"host":"t137-dut3.openstacklocal","index":"928","log_level":"debugf","type":"admin"},"timestamp":1697483995}
{"fields":{"message":"events,collector_id=auditd,node=westB,subtype=authentication,type=admin event_detail=\"node=t137-dut3.openstacklocal type=USER_AUTH msg=audit(1697483837.498:11806): pid=13399 uid=0 auid=4294967295 ses=4294967295 msg='op=pubkey acct=\\\"centos\\\" exe=\\\"/usr/sbin/sshd\\\" hostname=? addr=172.18.15.253 terminal=ssh res=failed'\",fail_reason=\"pubkey\",permitted=f,user=\"centos\" 1697483837498011806"},"name":"t128_tank","tags":{"host":"t137-dut3.openstacklocal","index":"929","log_level":"debugf","type":"admin"},"timestamp":1697483995}

@shriyanshk128T shriyanshk128T marked this pull request as draft September 27, 2023 18:30
@shriyanshk128T shriyanshk128T changed the title t128 tank plugin barebones for event and session records Added a new Telegraf input for events and session-records Oct 2, 2023
Copy link
Collaborator

@gregschrock gregschrock left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this compile? I see some things that I question. It's pretty difficult to review incremental changes like this with no context about what is expected to work and what isn't or about what has and has yet to be addressed.

@shriyanshk128T shriyanshk128T force-pushed the WAN-2371-m-3-translate-session-records-and-events-to-new-event-input branch from 6a14e84 to 4b0627a Compare October 12, 2023 13:55
WAN-2371 #time 2h
@shriyanshk128T shriyanshk128T marked this pull request as ready for review October 12, 2023 23:50
Copy link

@agrawalkaushik agrawalkaushik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm! need @gregschrock's approval before merge though!

Copy link
Collaborator

@gregschrock gregschrock left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

close

Copy link
Collaborator

@gregschrock gregschrock left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would still like to see unit tests for this input

var errBoundaryFault *boundaryFault
if err != nil && errors.As(err, &errBoundaryFault) {
r.log.Debugf("detected boundary fault, restarting %s tank read from index %d", r.topic, errBoundaryFault.nextAvailableIndex.value)
go r.read(mainCtx, readCtx, errBoundaryFault.nextAvailableIndex)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I missed it earlier. read shouldn't take two contexts. Since the read context is created from the main context (readCtx, readCtxCancel := context.WithCancel(mainCtx)), canceling the main context will also cancel the read context. So you don't need to pass both.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh actually missed this just now!! didn't realize this while pushing! thanks for catching.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P.S. working on unit tests!

}
}

err = os.WriteFile(indexPath, []byte(index.string()), 0644)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use 0600

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

want to keep it accessible by owner I am assuming?

var collectedMessages []IndexedMessage
for _, message := range messages {
if message.IsValid() {
collectedMessages = append(collectedMessages, *message)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not great that we're copying all these messages here. Can we drop invalid messages inside parseLines and just pass everything back to sendChan here?

@@ -143,6 +144,12 @@ def parse_args():
action="store_true",
)

build_parser.add_argument(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the clean flag could be used for this purpose too. nbd though

@gregschrock
Copy link
Collaborator

Please use the "Squash and Merge" option when merging this change.
Screenshot 2023-10-13 at 2 54 33 PM

WAN-2371 #time 30m
}

func (r *Reader) read(readCtx context.Context, startingIndex index) {
r.log.Errorf("starting %s tank read from index %d", r.topic, startingIndex.value)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't an error log and will be hit a lot. I'd say this is a debug log

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good catch; maybe useful as an info log? I'm not sure

err := os.WriteFile(plugin.IndexFile, []byte(testcase.IndexFileContent), 0755)
assert.NoError(t, err)
}
reader := NewReader(plugin.ServerAddress, plugin.PortNumber, plugin.Topic, plugin.IndexFile, testcase.DefaultIndex, testutil.Logger{}, &acc).withTankReadCommandContext(testcase.TankReadCommandContext)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reformat this line

NewReader(
	plugin.ServerAddress,
	plugin.PortNumber,
	plugin.Topic,
	plugin.IndexFile,
	testcase.DefaultIndex,
	testutil.Logger{},
	&acc,
).withTankReadCommandContext(testcase.TankReadCommandContext)

select {
case <-time.After(5 * time.Second):
t.Log("no messages received")
case <-ctx.Done():
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't right. Nothing cancels this context, so you'll always end up waiting for 5 seconds.

err := os.WriteFile(plugin.IndexFile, []byte(testcase.IndexFileContent), 0755)
assert.NoError(t, err)
}
reader := NewReader(plugin.ServerAddress, plugin.PortNumber, plugin.Topic, plugin.IndexFile, testcase.DefaultIndex, testutil.Logger{}, &acc).withTankReadCommandContext(testcase.TankReadCommandContext)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reformat

}{
{
Name: "input-message-with-newline",
InputMessage: "seq=8:type=LINK_UP, Timestamp=2022-03-25T00:00:00Z,Raw=hello\nworld",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is fine for the test I guess, but it's not actually a valid Influx line

}
reader := NewReader(plugin.ServerAddress, plugin.PortNumber, plugin.Topic, plugin.IndexFile, testcase.DefaultIndex, testutil.Logger{}, &acc).withTankReadCommandContext(testcase.TankReadCommandContext)
var receivedErrorMessage string
go func() {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why go routine? and why sleep?

@agrawalkaushik agrawalkaushik merged commit f8e7cf1 into feature/new-plugins-to-reduce-python-overhead Oct 17, 2023
@gregschrock gregschrock deleted the WAN-2371-m-3-translate-session-records-and-events-to-new-event-input branch October 17, 2023 10:33
@gregschrock gregschrock changed the title Added a new Telegraf input for events and session-records Added a new Telegraf input for events and session-records (t128_tank) Oct 25, 2023
gregschrock added a commit that referenced this pull request Nov 2, 2023
* Sqaushed commits

WAN-2321 #time 10m

* addressed pr comments and added a testcase

WAN-2321 #time 10m

* Added a new Telegraf input for LTE (#56)

* Added a new Telegraf input for events and session-records (#58)

* Updated T128_peer_path Tags (#64)

* Updated t128_tank to parse the messages (#63)

* added a parser to parse data and send as metrics

WAN-2496 #time 30m

* added a new config option and updated the logic

WAN-2496 #time 30m

* addressed more comments and simplified logic

WAN-2496 #time 20m

* addressed comments

WAN-2496 #time 5m

* updated the index-file config

WAN-2496 #time 5m

* fixed an issue with last index not being saved

WAN-2496 #time 15m

* addressed pr comments

WAN-2496 #time 30m

* added data precision

WAN-2496 #time 30m

* addressed more comments

WAN-2496 #time 1h

* addressed comments and test for lastobserved value

WAN-2496 #time 20m

* added testcase

WAN-2496 #time 20m

* addressed comments

WAN-2496 #time 15m

* Fix timestamp precision adjustments

WAN-2496 #time 1h

---------

Co-authored-by: Greg Schrock <gschrock@juniper.net>

* Update README.md for lte-collector

* Update README.md for peer path collector

---------

Co-authored-by: Shriyansh Kothari <shriyanshk@juniper.net>
Co-authored-by: Kaushik Agrawal <60372242+agrawalkaushik@users.noreply.github.com>
Co-authored-by: Shriyansh Kothari <100544034+shriyanshk128T@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants