diff --git a/Vagrantfile b/Vagrantfile index af4f48eff85d03a80008394eaa6b5ca9adcf784c..aac1cf616663d8f0020aa0d8a5cf0f3e7d911a44 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -30,7 +30,7 @@ require 'yaml' # --infra <infradir> # Set defaults -DEFAULT_INFRA = "streaming" +DEFAULT_INFRA = "full" # Define custom options opts = GetoptLong.new( @@ -93,7 +93,7 @@ Vagrant.configure("2") do |config| instance_config.vm.provision :shell, :path => "test/services/#{host["service_name"]}/install.sh", env: {"REPO_ROOT" => "/vagrant"} # CLMC agent install - instance_config.vm.provision :shell, :path => "scripts/clmc-agent/install.sh", :args => "/vagrant/test/services/#{host["service_name"]}/telegraf_template.conf #{host["location"]} #{host["sfc_id"]} #{host["sfc_id_instance"]} #{host["sf_id"]} #{host["sf_id_instance"]} #{host["ipendpoint_id"]} #{host["influxdb_url"]} #{host["database_name"]}" + instance_config.vm.provision :shell, :path => "scripts/clmc-agent/install.sh", :args => "/vagrant/scripts/clmc-agent/telegraf_template.conf /vagrant/test/services/#{host["service_name"]}/telegraf_template.conf #{host["location"]} #{host["sfc_id"]} #{host["sfc_id_instance"]} #{host["sf_id"]} #{host["sf_id_instance"]} #{host["ipendpoint_id"]} #{host["influxdb_url"]} #{host["database_name"]}" end diff --git a/scripts/clmc-agent/install.sh b/scripts/clmc-agent/install.sh index 9626d91cab2f3814483c477645b8ba370df8d028..e9fd73a628533de287bcc2d6b0e983a72f9271d3 100755 --- a/scripts/clmc-agent/install.sh +++ b/scripts/clmc-agent/install.sh @@ -25,24 +25,29 @@ #///////////////////////////////////////////////////////////////////////// # Install telegraf -if [ "$#" -ne 9 ]; then +if [ "$#" -ne 10 ]; then echo "Error: illegal number of arguments: "$# - echo "Usage: install-clmc-agent.sh TELEGRAF_CONF_FILE LOCATION SFC_ID SFC_ID_INSTANCE SF_ID SF_ID_INSTANCE IP_ENDPOINT_ID INFLUXDB_URL DATABASE_NAME" + echo "Usage: install-clmc-agent.sh TELEGRAF_GENERAL_CONF_FILE TELEGRAF_SERVICE_CONF_FILE LOCATION SFC_ID SFC_ID_INSTANCE SF_ID SF_ID_INSTANCE IP_ENDPOINT_ID INFLUXDB_URL DATABASE_NAME" exit fi -TELEGRAF_CONF_FILE=$1 -LOCATION=$2 -SFC_ID=$3 -SFC_ID_INSTANCE=$4 -SF_ID=$5 -SF_ID_INSTANCE=$6 -IP_ENDPOINT_ID=$7 -INFLUXDB_URL=$8 -DATABASE_NAME=$9 +TELEGRAF_GENERAL_CONF_FILE=$1 +TELEGRAF_SERVICE_CONF_FILE=$2 +LOCATION=$3 +SFC_ID=$4 +SFC_ID_INSTANCE=$5 +SF_ID=$6 +SF_ID_INSTANCE=$7 +IP_ENDPOINT_ID=$8 +INFLUXDB_URL=$9 +DATABASE_NAME=${10} -if [ ! -f $TELEGRAF_CONF_FILE ]; then - echo "Error: Telegraf conf template file not found: "$TELEGRAF_CONF_FILE +if [ ! -f $TELEGRAF_GENERAL_CONF_FILE ]; then + echo "Error: Telegraf conf template file not found: "$TELEGRAF_GENERAL_CONF_FILE + exit +fi +if [ ! -f $TELEGRAF_SERVICE_CONF_FILE ]; then + echo "Error: Telegraf conf service specific file not found: "$TELEGRAF_SERVICE_CONF_FILE exit fi @@ -50,8 +55,10 @@ wget https://dl.influxdata.com/telegraf/releases/telegraf_1.3.2-1_amd64.deb dpkg -i telegraf_1.3.2-1_amd64.deb # Copy configuration -echo "Telegraf config file: " $TELEGRAF_CONF_FILE -cp $TELEGRAF_CONF_FILE /etc/telegraf/telegraf.conf +echo "Telegraf general config file: " $TELEGRAF_GENERAL_CONF_FILE +cp $TELEGRAF_GENERAL_CONF_FILE /etc/telegraf/telegraf.conf +echo "Telegraf service config file: " $TELEGRAF_SERVICE_CONF_FILE +cp $TELEGRAF_SERVICE_CONF_FILE /etc/telegraf/telegraf.d/telegraf.conf echo "INFLUXDB_URL: " $INFLUXDB_URL echo "DATABASE_NAME: " $DATABASE_NAME diff --git a/test/services/apache/telegraf_template.conf b/test/services/apache/telegraf_template.conf index 98141e46c82fc1ec33af4f42fdfade391f7f1c01..dbc14da1ff1d82c878d456ab6f83b8624519f058 100644 --- a/test/services/apache/telegraf_template.conf +++ b/test/services/apache/telegraf_template.conf @@ -1,178 +1,3 @@ -# Telegraf configuration - -# Telegraf is entirely plugin driven. All metrics are gathered from the -# declared inputs, and sent to the declared outputs. - -# Plugins must be declared in here to be active. -# To deactivate a plugin, comment out the name and any variables. - -# Use 'telegraf -config telegraf.conf -test' to see what metrics a config -# file would generate. - -# Global tags can be specified here in key="value" format. -[global_tags] - # location of the data centre - location="{{LOCATION}}" - # media service template id - sfc="{{SFC_ID}}" - # media service instance - sfc_i="{{SFC_ID_INSTANCE}}" - # service function type - sf="{{SF_ID}}" - # service function instance id - sf_i="{{SF_ID_INSTANCE}}" - # ipendpoint id aka surrogate instance - ipendpoint="{{IP_ENDPOINT_ID}}" - -# Configuration for telegraf agent -[agent] - ## Default data collection interval for all inputs - interval = "10s" - ## Rounds collection interval to 'interval' - ## ie, if interval="10s" then always collect on :00, :10, :20, etc. - round_interval = true - - ## Telegraf will cache metric_buffer_limit metrics for each output, and will - ## flush this buffer on a successful write. - metric_buffer_limit = 1000 - ## Flush the buffer whenever full, regardless of flush_interval. - flush_buffer_when_full = true - - ## Collection jitter is used to jitter the collection by a random amount. - ## Each plugin will sleep for a random time within jitter before collecting. - ## This can be used to avoid many plugins querying things like sysfs at the - ## same time, which can have a measurable effect on the system. - collection_jitter = "0s" - - ## Default flushing interval for all outputs. You shouldn't set this below - ## interval. Maximum flush_interval will be flush_interval + flush_jitter - flush_interval = "10s" - ## Jitter the flush interval by a random amount. This is primarily to avoid - ## large write spikes for users running a large number of telegraf instances. - ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s - flush_jitter = "0s" - - ## Logging configuration: - ## Run telegraf in debug mode - debug = false - ## Run telegraf in quiet mode - quiet = false - ## Specify the log file name. The empty string means to log to stdout. - logfile = "/var/log/telegraf/telegraf.log" - - ## Override default hostname, if empty use os.Hostname() - hostname = "" - - -############################################################################### -# OUTPUTS # -############################################################################### - -# Configuration for influxdb server to send metrics to -[[outputs.influxdb]] - # The full HTTP or UDP endpoint URL for your InfluxDB instance. - # Multiple urls can be specified but it is assumed that they are part of the same - # cluster, this means that only ONE of the urls will be written to each interval. - # urls = ["udp://127.0.0.1:8089"] # UDP endpoint example - urls = ["{{INFLUXDB_URL}}"] # required - # The target database for metrics (telegraf will create it if not exists) - database = "{{DATABASE_NAME}}" # required - # Precision of writes, valid values are "ns", "us" (or "µs"), "ms", "s", "m", "h". - # note: using second precision greatly helps InfluxDB compression - precision = "s" - - ## Write timeout (for the InfluxDB client), formatted as a string. - ## If not provided, will default to 5s. 0s means no timeout (not recommended). - timeout = "5s" - # username = "telegraf" - # password = "metricsmetricsmetricsmetrics" - # Set the user agent for HTTP POSTs (can be useful for log differentiation) - # user_agent = "telegraf" - # Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes) - # udp_payload = 512 - - -############################################################################### -# INPUTS # -############################################################################### -# # Read metrics about network interface usage - [[inputs.net]] -# ## By default, telegraf gathers stats from any up interface (excluding loopback) -# ## Setting interfaces will tell it to gather these explicit interfaces, -# ## regardless of status. -# ## -# # interfaces = ["eth0"] - -# Read metrics about cpu usage -[[inputs.cpu]] - ## Whether to report per-cpu stats or not - percpu = true - ## Whether to report total system cpu stats or not - totalcpu = true - ## If true, collect raw CPU time metrics. - collect_cpu_time = false - ## If true, compute and report the sum of all non-idle CPU states. - #report_active = false - - -# Read metrics about disk usage by mount point -[[inputs.disk]] - ## By default, telegraf gather stats for all mountpoints. - ## Setting mountpoints will restrict the stats to the specified mountpoints. - # mount_points = ["/"] - - ## Ignore some mountpoints by filesystem type. For example (dev)tmpfs (usually - ## present on /run, /var/run, /dev/shm or /dev). - ignore_fs = ["tmpfs", "devtmpfs", "devfs"] - - -# Read metrics about disk IO by device -[[inputs.diskio]] - ## By default, telegraf will gather stats for all devices including - ## disk partitions. - ## Setting devices will restrict the stats to the specified devices. - # devices = ["sda", "sdb"] - ## Uncomment the following line if you need disk serial numbers. - # skip_serial_number = false - # - ## On systems which support it, device metadata can be added in the form of - ## tags. - ## Currently only Linux is supported via udev properties. You can view - ## available properties for a device by running: - ## 'udevadm info -q property -n /dev/sda' - # device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"] - # - ## Using the same metadata source as device_tags, you can also customize the - ## name of the device via templates. - ## The 'name_templates' parameter is a list of templates to try and apply to - ## the device. The template may contain variables in the form of '$PROPERTY' or - ## '${PROPERTY}'. The first template which does not contain any variables not - ## present for the device is used as the device name tag. - ## The typical use case is for LVM volumes, to get the VG/LV name instead of - ## the near-meaningless DM-0 name. - # name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME"] - -# Read metrics about memory usage -[[inputs.mem]] - # no configuration - -# # Influx HTTP write listener -[[inputs.http_listener]] - ## Address and port to host HTTP listener on - service_address = ":8186" - - ## timeouts - read_timeout = "10s" - write_timeout = "10s" - - ## HTTPS - #tls_cert= "/etc/telegraf/cert.pem" - #tls_key = "/etc/telegraf/key.pem" - - ## MTLS - #tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] - -# Read Apache status information (mod_status) [[inputs.apache]] ## An array of URLs to gather from, must be directed at the machine ## readable version of the mod_status page including the auto query string. @@ -191,25 +16,4 @@ # ssl_cert = "/etc/telegraf/cert.pem" # ssl_key = "/etc/telegraf/key.pem" ## Use SSL but skip chain & host verification - # insecure_skip_verify = false - -[[inputs.net_response]] - ## Protocol, must be "tcp" or "udp" - ## NOTE: because the "udp" protocol does not respond to requests, it requires - ## a send/expect string pair (see below). - protocol = "tcp" - ## Server address (default localhost) - address = "localhost:80" - ## Set timeout - timeout = "1s" - - ## Set read timeout (only used if expecting a response) - read_timeout = "1s" - - ## The following options are required for UDP checks. For TCP, they are - ## optional. The plugin will send the given string to the server and then - ## expect to receive the given 'expect' string back. - ## string sent to the server - # send = "ssh" - ## expected string in answer - # expect = "ssh" \ No newline at end of file + # insecure_skip_verify = false \ No newline at end of file