https://github.com/argoeu/ams-consumer

AMS consumer

https://github.com/argoeu/ams-consumer

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.5%) to scientific vocabulary

Keywords

ams argo-messaging
Last synced: 9 months ago · JSON representation

Repository

AMS consumer

Basic Info
  • Host: GitHub
  • Owner: ARGOeu
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 143 KB
Statistics
  • Stars: 0
  • Watchers: 6
  • Forks: 3
  • Open Issues: 2
  • Releases: 4
Topics
ams argo-messaging
Created about 9 years ago · Last pushed 11 months ago
Metadata Files
Readme Changelog

README.md

argo-ams-consumer

Description

argo-ams-consumer component fetchs metric results from ARGO Messaging Service and writes them into avro serialized files. Files are written on daily basis and represent full daily log of metric results formed and sent from Nagios monitoring instances. It is functioning as unix service/daemon and it's multi-tenant aware meaning that multiple instances of it can be spawned on the same machine where each instance can be configured for specific tenant.

Component is mainly serving for redundancy/backup of metric results within ARGO framework in case of erroneous behaviour of Flink/HBase stack.

Installation

Component is supported on Centos 7. RPM packages and all needed dependencies are available in ARGO repositories so installation of component simply narrows down to installing a package:

yum install -y argo-ams-consumer 

For its functioning, component depends on: - argo-ams-library - interaction with ARGO Messaging Service - avro - avro serialization of messages' payload - python-argparse - ease build and parse of command line arguments - python-daemon - ease daemonizing of component

| File Types | Destination | |------------------- |----------------------------------------------------| | Configuration | /etc/argo-ams-consumer/ams-consumer.conf | | Avro Schema | /etc/argo-ams-consumer/metric_data.avsc | | Daemon component | /usr/bin/ams-consumerd | | Service unit | /usr/lib/systemd/system/ams-consumer@.service | | Target (units group) | /usr/lib/systemd/system/ams-consumers.target | | Pid files | /var/run/argo-ams-consumer/ | | Log files | /var/log/argo-ams-consumer/ | | Daily logs | /var/lib/argo-ams-consumer/ |

Configuration

Configuration is done in one file ams-consumer.conf that is splitted in several sections, [General], [AMS], [MsgRetention], [Output].

General

[General]
LogName = argo-ams-consumer
ReportWritMsgEveryHours = 24
AvroSchema = /etc/argo-ams-consumer/metric_data.avsc
  • Logname defines name of argo-ams-consumer tenant instance appearing in logs
  • ReportWritMsgEveryHours for given number of hours instruct component to report how many messages it fetched. Number will be reported in log files.
  • AvroSchema defines the format of messages (fields and values)

AMS

[AMS]
Host = messaging-devel.argo.grnet.gr
Project = EGI
Token = EGITOKEN
Subscriptions = sub1
PullMsgs = 100
PullIntervalSec = 3
ConnectionTimeout = 180
PullRetry = 5
PullRetrySleep = 60
  • Host is FQDN of Argo Messaging Service instance
  • Project represents tenant within Argo Messaging Service
  • Subscription is the name of bucket containing metric results of interest
  • Token is authorization credential needed for pull operation on subscription
  • PullMsgs is a number of messages that will be fetched in single request
  • PullIntervalSec is interval between two pull requests and can be specified as fraction of second
  • ConnectionTimeout represents time window within that request must be served
  • PullRetry is number of retries for a single pull request that may fail because of connection problems and other hiccups that may occur
  • PullRetrySleep represents time in seconds after next pull will be tried

MsgRetention

Section defines the time window within the messages will be considered valid and fetched from subscription.

[MsgRetention]
PastDaysOk = 3
FutureDaysOk = 1
  • PastDaysOk defines the number of past days
  • FutureDaysOk defines the number of future days to consider

Output

[Output]
Directory = /var/lib/argo-ams-consumer
Filename = argo-consumer_log_DATE.avro
ErrorFilename = argo-consumer_error_log_DATE.avro
  • Directory is path to directory where avro files with metric results for given day will be stored
  • Filename is name of the avro file that will be created for each day. DATE is a placeholder in form of <year>_<month>_<day>
  • ErrorFilename is name of the avro file that will contain metric results fetched outside of allowed message retention defined in previous section

Configuration - multitenancy

Each tenant is represented with its own set of metric results meaning that AMS consumer needs to be configured with their specific subscription and different output directory where their data will be stored. Consumer is functioning as a unix service and multiple instances of it can be spawned if consumer is started with different config file, each tied to specific tenant. Name of pid file created for each instance of consumer is tied to filename of passed config and multiple instances of consumer with the same config file will be prevented. So if one wants to spawn a new consumer for new tenant, procedure is this: 1) created separate config file /etc/argo-ams-consumer/ams-consumer-tenant.conf with changed settings in [AMS] and [Output] section at least: - change Project, Subscription, Token - change output directory to /var/lib/argo-ams-consumer-tenant/ that needs to be manually created before 2) edit SystemD target that references and groups all units /usr/lib/systemd/system/ams-consumers.target by adding new unit in Requires=... ams-consumer@tenant.service ... 3) reload SystemD configuration to register changes in target - systemctl daemon-reload 4) start new unit with systemctl start ams-consumers.target

Owner

  • Name: ARGOeu
  • Login: ARGOeu
  • Kind: organization

Α team working with the latest technologies about accounting, monitoring, messaging and eSeal Capabilities

GitHub Events

Total
  • Push event: 3
  • Pull request event: 7
  • Create event: 2
Last Year
  • Push event: 3
  • Pull request event: 7
  • Create event: 2

Dependencies

setup.py pypi