diff --git a/Vagrantfile b/Vagrantfile index a22f8450c9a39959c966ddaaa9e08ce9db448575..32bc37d17befdcac5cc3c80aee560c4deea6c1dc 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -22,6 +22,32 @@ #// Created for Project : FLAME #// #///////////////////////////////////////////////////////////////////////// +# Define ipendpoint configuration parameters + +ipendpoints = { + "ipendpoint1" => { + :ip_address => "192.168.50.11", + :location => "DC1", + :sfc_id => "MS_Template_1", + :sfc_id_instance => "MS_I1", + :sf_id => "adaptive_streaming", + :sf_id_instance => "adaptive_streaming_I1", + :ipendpoint_id => "adaptive_streaming_I1_ipendpoint1", + :influxdb_url => "http://192.168.50.10:8086", + :database_name => "CLMCMetrics" + }, + "ipendpoint2" => { + :ip_address => "192.168.50.12", + :location => "DC2", + :sfc_id => "MS_Template_1", + :sfc_id_instance => "MS_I1", + :sf_id => "adaptive_streaming", + :sf_id_instance => "adaptive_streaming_I1", + :ipendpoint_id => "adaptive_streaming_I1_ipendpoint2", + :influxdb_url => "http://192.168.50.10:8086", + :database_name => "CLMCMetrics" + } +} Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" @@ -52,8 +78,7 @@ Vagrant.configure("2") do |config| end config.vm.define "ipendpoint1" do |my| - - config.vm.network :private_network, ip: "192.168.50.11", virtualbox__intnet: "clmc-net" + config.vm.network :private_network, ip: "#{ipendpoints['ipendpoint1'][:ip_address]}", virtualbox__intnet: "clmc-net" my.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--memory", 512] @@ -61,20 +86,20 @@ Vagrant.configure("2") do |config| end # Install CLMC agent 1 - config.vm.provision :shell, :path => 'scripts/influx/install-clmc-agent.sh', :args => "/vagrant/scripts/influx/telegraf_ipendpoint1.conf" + config.vm.provision :shell, :path => 'scripts/influx/install-clmc-agent.sh', :args => "/vagrant/scripts/influx/telegraf_ipendpoint_template.conf #{ipendpoints['ipendpoint1'][:location]} #{ipendpoints['ipendpoint1'][:sfc_id]} #{ipendpoints['ipendpoint1'][:sfc_id_instance]} #{ipendpoints['ipendpoint1'][:sf_id]} #{ipendpoints['ipendpoint1'][:sf_id_instance]} #{ipendpoints['ipendpoint1'][:ipendpoint_id]} #{ipendpoints['ipendpoint1'][:influxdb_url]} #{ipendpoints['ipendpoint1'][:database_name]}" end config.vm.define "ipendpoint2" do |my| - config.vm.network :private_network, ip: "192.168.50.12", virtualbox__intnet: "clmc-net" + config.vm.network :private_network, ip: "#{ipendpoints['ipendpoint2'][:ip_address]}", virtualbox__intnet: "clmc-net" my.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--memory", 512] v.customize ["modifyvm", :id, "--cpus", 1] end - # Install CLMC agent 2 - config.vm.provision :shell, :path => 'scripts/influx/install-clmc-agent.sh', :args => "/vagrant/scripts/influx/telegraf_ipendpoint2.conf" + # Install CLMC agent + config.vm.provision :shell, :path => 'scripts/influx/install-clmc-agent.sh', :args => "/vagrant/scripts/influx/telegraf_ipendpoint_template.conf #{ipendpoints['ipendpoint2'][:location]} #{ipendpoints['ipendpoint2'][:sfc_id]} #{ipendpoints['ipendpoint2'][:sfc_id_instance]} #{ipendpoints['ipendpoint2'][:sf_id]} #{ipendpoints['ipendpoint2'][:sf_id_instance]} #{ipendpoints['ipendpoint2'][:ipendpoint_id]} #{ipendpoints['ipendpoint2'][:influxdb_url]} #{ipendpoints['ipendpoint2'][:database_name]}" end end diff --git a/scripts/influx/install-clmc-agent.sh b/scripts/influx/install-clmc-agent.sh index 4a49b802a1271c1d2cd3b603a653ee1345f3fea2..ab3d0bdcecd807e2323da45807e62c8eb2a17060 100755 --- a/scripts/influx/install-clmc-agent.sh +++ b/scripts/influx/install-clmc-agent.sh @@ -25,11 +25,46 @@ #///////////////////////////////////////////////////////////////////////// # Install telegraf +if [ "$#" -ne 9 ]; 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" + 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 + +if [ ! -f $TELEGRAF_CONF_FILE]; then + echo "Error: Telegraf conf template file not found: "$TELEGRAF_CONF_FILE + exit +fi + 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 -cp $1 /etc/telegraf/telegraf.conf +echo "Telegraf config file: " $TELEGRAF_CONF_FILE +cp $TELEGRAF_CONF_FILE /etc/telegraf/telegraf.conf + +echo "INFLUXDB_URL: " $INFLUXDB_URL +echo "DATABASE_NAME: " $DATABASE_NAME + +# Replace template parameters +sed -i 's/{{LOCATION}}/'$LOCATION'/g' /etc/telegraf/telegraf.conf +sed -i 's/{{SFC_ID}}/'$SFC_ID'/g' /etc/telegraf/telegraf.conf +sed -i 's/{{SFC_ID_INSTANCE}}/'$SFC_ID_INSTANCE'/g' /etc/telegraf/telegraf.conf +sed -i 's/{{SF_ID}}/'$SF_ID'/g' /etc/telegraf/telegraf.conf +sed -i 's/{{SF_ID_INSTANCE}}/'$SF_ID_INSTANCE'/g' /etc/telegraf/telegraf.conf +sed -i 's/{{IP_ENDPOINT_ID}}/'$IP_ENDPOINT_ID'/g' /etc/telegraf/telegraf.conf +sed -i 's|{{INFLUXDB_URL}}|'$INFLUXDB_URL'|g' /etc/telegraf/telegraf.conf +sed -i 's/{{DATABASE_NAME}}/'$DATABASE_NAME'/g' /etc/telegraf/telegraf.conf # Start telegraf systemctl start telegraf \ No newline at end of file diff --git a/scripts/influx/telegraf_ipendpoint1.conf b/scripts/influx/telegraf_ipendpoint1.conf deleted file mode 100644 index 7844869d3dff11c749c209facb63b284e4556dbc..0000000000000000000000000000000000000000 --- a/scripts/influx/telegraf_ipendpoint1.conf +++ /dev/null @@ -1,116 +0,0 @@ -# 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="DC1" - sfc="MS_Template_1" - sfc_i="MS_I1" - sf="adaptive_streaming" - sf_i="adaptive_streaming_I1" - ipendpoint="adaptive_streaming_I1_ipendpoint1" - -# 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 = "G:/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 = ["http://192.168.50.10:8086"] # required - # The target database for metrics (telegraf will create it if not exists) - database = "CLMCMetrics" # 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 -[[outputs.file]] - ## Files to write to, "stdout" is a specially handled file. - files = ["stdout", "/tmp/metrics.out"] - - ## Data format to output. - ## Each data format has its own unique set of configuration options, read - ## more about them here: - ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md - data_format = "influx" - - -############################################################################### -# INPUTS # -############################################################################### -# # 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"] - \ No newline at end of file diff --git a/scripts/influx/telegraf_ipendpoint2.conf b/scripts/influx/telegraf_ipendpoint2.conf deleted file mode 100644 index e0d62af95e5fa42e7462441b263dc295c428b26f..0000000000000000000000000000000000000000 --- a/scripts/influx/telegraf_ipendpoint2.conf +++ /dev/null @@ -1,116 +0,0 @@ -# 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="DC2" - sfc="MS_Template_1" - sfc_i="MS_I1" - sf="adaptive_streaming" - sf_i="adaptive_streaming_I1" - ipendpoint="adaptive_streaming_I1_ipendpoint2" - -# 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 = "G:/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 = ["http://192.168.50.10:8086"] # required - # The target database for metrics (telegraf will create it if not exists) - database = "CLMCMetrics" # 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 -[[outputs.file]] - ## Files to write to, "stdout" is a specially handled file. - files = ["stdout", "/tmp/metrics.out"] - - ## Data format to output. - ## Each data format has its own unique set of configuration options, read - ## more about them here: - ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md - data_format = "influx" - - -############################################################################### -# INPUTS # -############################################################################### -# # 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"] - \ No newline at end of file