This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch branch-2.7
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/branch-2.7 by this push:
new 032b861 AMBARI-24837. Make Grafana connection attempts and retry
delay configurable (#2557)
032b861 is described below
commit 032b861386e81c6d071cacc771e57e6480754d3e
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Mon Oct 29 21:43:05 2018 +0100
AMBARI-24837. Make Grafana connection attempts and retry delay configurable
(#2557)
---
.../0.1.0/configuration/ams-grafana-env.xml | 22 +++++++++
.../0.1.0/package/scripts/metrics_grafana.py | 3 +-
.../0.1.0/package/scripts/metrics_grafana_util.py | 54 +++++++++++-----------
.../AMBARI_METRICS/0.1.0/package/scripts/params.py | 3 ++
4 files changed, 55 insertions(+), 27 deletions(-)
diff --git
a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-env.xml
b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-env.xml
index b05d73b..60323ba 100644
---
a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-env.xml
+++
b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-grafana-env.xml
@@ -99,4 +99,26 @@ export AMS_GRAFANA_PID_DIR={{ams_grafana_pid_dir}}
</value>
<on-ambari-upgrade add="true"/>
</property>
+ <property>
+ <name>metrics_grafana_connect_retry_delay</name>
+ <value>20</value>
+ <display-name>Grafana connect retry delay</display-name>
+ <description>The time in seconds after which connection to Grafana is
retried in case of failure</description>
+ <value-attributes>
+ <type>int</type>
+ <minimum>1</minimum>
+ </value-attributes>
+ <on-ambari-upgrade add="false"/>
+ </property>
+ <property>
+ <name>metrics_grafana_connect_attempts</name>
+ <value>15</value>
+ <display-name>Grafana connect attempts</display-name>
+ <description>The number of attempts for connection to Grafana</description>
+ <value-attributes>
+ <type>int</type>
+ <minimum>1</minimum>
+ </value-attributes>
+ <on-ambari-upgrade add="false"/>
+ </property>
</configuration>
diff --git
a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana.py
b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana.py
index 387b018..baad306 100644
---
a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana.py
+++
b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana.py
@@ -22,7 +22,6 @@ from resource_management import Script, Execute
from resource_management.libraries.functions import format
from status import check_service_status
from ams import ams
-from metrics_grafana_util import create_ams_datasource, create_ams_dashboards,
create_grafana_admin_pwd
from resource_management.core.logger import Logger
from resource_management.core import sudo
@@ -54,6 +53,8 @@ class AmsGrafana(Script):
else:
Logger.info("Grafana Server has started with pid:
{0}".format(sudo.read_file(pidfile).strip()))
+ from metrics_grafana_util import create_ams_datasource,
create_ams_dashboards, create_grafana_admin_pwd
+
#Set Grafana admin pwd
create_grafana_admin_pwd()
# Create datasource
diff --git
a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana_util.py
b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana_util.py
index d6964ad..53679c4 100644
---
a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana_util.py
+++
b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/metrics_grafana_util.py
@@ -35,8 +35,6 @@ import ambari_simplejson as json
import ambari_commons.network as network
import os
-GRAFANA_CONNECT_TRIES = 15
-GRAFANA_CONNECT_TIMEOUT = 20
GRAFANA_SEARCH_BUILTIN_DASHBOARDS = "/api/search?tag=builtin"
GRAFANA_DATASOURCE_URL = "/api/datasources"
GRAFANA_USER_URL = "/api/user"
@@ -46,14 +44,15 @@ METRICS_GRAFANA_DATASOURCE_NAME = "AMBARI_METRICS"
Server = namedtuple('Server', [ 'protocol', 'host', 'port', 'user', 'password'
])
def perform_grafana_get_call(url, server):
+ import params
+
grafana_https_enabled = server.protocol.lower() == 'https'
response = None
ca_certs = None
if grafana_https_enabled:
- import params
ca_certs = params.ams_grafana_ca_cert
- for i in xrange(0, GRAFANA_CONNECT_TRIES):
+ for i in xrange(0, params.grafana_connect_attempts):
try:
conn = network.get_http_connection(
server.host,
@@ -73,10 +72,10 @@ def perform_grafana_get_call(url, server):
Logger.info("Http response: %s %s" % (response.status, response.reason))
break
except (httplib.HTTPException, socket.error) as ex:
- if i < GRAFANA_CONNECT_TRIES - 1:
- time.sleep(GRAFANA_CONNECT_TIMEOUT)
+ if i < params.grafana_connect_attempts - 1:
Logger.info("Connection to Grafana failed. Next retry in %s seconds."
- % (GRAFANA_CONNECT_TIMEOUT))
+ % (params.grafana_connect_retry_delay))
+ time.sleep(params.grafana_connect_retry_delay)
continue
else:
raise Fail("Ambari Metrics Grafana update failed due to: %s" % str(ex))
@@ -85,6 +84,8 @@ def perform_grafana_get_call(url, server):
return response
def perform_grafana_put_call(url, id, payload, server):
+ import params
+
response = None
data = None
userAndPass = b64encode('{0}:{1}'.format(server.user, server.password))
@@ -94,10 +95,9 @@ def perform_grafana_put_call(url, id, payload, server):
ca_certs = None
if grafana_https_enabled:
- import params
ca_certs = params.ams_grafana_ca_cert
- for i in xrange(0, GRAFANA_CONNECT_TRIES):
+ for i in xrange(0, params.grafana_connect_attempts):
try:
conn = network.get_http_connection(
server.host,
@@ -113,10 +113,10 @@ def perform_grafana_put_call(url, id, payload, server):
conn.close()
break
except (httplib.HTTPException, socket.error) as ex:
- if i < GRAFANA_CONNECT_TRIES - 1:
- time.sleep(GRAFANA_CONNECT_TIMEOUT)
+ if i < params.grafana_connect_attempts - 1:
Logger.info("Connection to Grafana failed. Next retry in %s seconds."
- % (GRAFANA_CONNECT_TIMEOUT))
+ % (params.grafana_connect_retry_delay))
+ time.sleep(params.grafana_connect_retry_delay)
continue
else:
raise Fail("Ambari Metrics Grafana update failed due to: %s" % str(ex))
@@ -125,6 +125,8 @@ def perform_grafana_put_call(url, id, payload, server):
return (response, data)
def perform_grafana_post_call(url, payload, server):
+ import params
+
response = None
data = None
userAndPass = b64encode('{0}:{1}'.format(server.user, server.password))
@@ -135,10 +137,9 @@ def perform_grafana_post_call(url, payload, server):
ca_certs = None
if grafana_https_enabled:
- import params
ca_certs = params.ams_grafana_ca_cert
- for i in xrange(0, GRAFANA_CONNECT_TRIES):
+ for i in xrange(0, params.grafana_connect_attempts):
try:
Logger.info("Connecting (POST) to %s:%s%s" % (server.host, server.port,
url))
conn = network.get_http_connection(
@@ -147,26 +148,26 @@ def perform_grafana_post_call(url, payload, server):
grafana_https_enabled, ca_certs,
ssl_version=Script.get_force_https_protocol_value()
)
-
+
conn.request("POST", url, payload, headers)
response = conn.getresponse()
Logger.info("Http response: %s %s" % (response.status, response.reason))
if response.status == 401: #Intermittent error thrown from Grafana
- if i < GRAFANA_CONNECT_TRIES - 1:
- time.sleep(GRAFANA_CONNECT_TIMEOUT)
+ if i < params.grafana_connect_attempts - 1:
Logger.info("Connection to Grafana failed. Next retry in %s seconds."
- % (GRAFANA_CONNECT_TIMEOUT))
+ % (params.grafana_connect_retry_delay))
+ time.sleep(params.grafana_connect_retry_delay)
continue
data = response.read()
Logger.info("Http data: %s" % data)
conn.close()
break
except (httplib.HTTPException, socket.error) as ex:
- if i < GRAFANA_CONNECT_TRIES - 1:
- time.sleep(GRAFANA_CONNECT_TIMEOUT)
+ if i < params.grafana_connect_attempts - 1:
Logger.info("Connection to Grafana failed. Next retry in %s seconds."
- % (GRAFANA_CONNECT_TIMEOUT))
+ % (params.grafana_connect_retry_delay))
+ time.sleep(params.grafana_connect_retry_delay)
continue
else:
raise Fail("Ambari Metrics Grafana update failed due to: %s" % str(ex))
@@ -175,15 +176,16 @@ def perform_grafana_post_call(url, payload, server):
return (response, data)
def perform_grafana_delete_call(url, server):
+ import params
+
grafana_https_enabled = server.protocol.lower() == 'https'
response = None
ca_certs = None
if grafana_https_enabled:
- import params
ca_certs = params.ams_grafana_ca_cert
- for i in xrange(0, GRAFANA_CONNECT_TRIES):
+ for i in xrange(0, params.grafana_connect_attempts):
try:
conn = network.get_http_connection(
server.host,
@@ -202,10 +204,10 @@ def perform_grafana_delete_call(url, server):
Logger.info("Http response: %s %s" % (response.status, response.reason))
break
except (httplib.HTTPException, socket.error) as ex:
- if i < GRAFANA_CONNECT_TRIES - 1:
- time.sleep(GRAFANA_CONNECT_TIMEOUT)
+ if i < params.grafana_connect_attempts - 1:
Logger.info("Connection to Grafana failed. Next retry in %s seconds."
- % (GRAFANA_CONNECT_TIMEOUT))
+ % (params.grafana_connect_retry_delay))
+ time.sleep(params.grafana_connect_retry_delay)
continue
else:
raise Fail("Ambari Metrics Grafana update failed due to: %s" % str(ex))
diff --git
a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
index 81a1e2b..70a4ec8 100644
---
a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
+++
b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params.py
@@ -183,6 +183,9 @@ ams_grafana_cert_file =
default("/configurations/ams-grafana-ini/cert_file", '/e
ams_grafana_cert_key = default("/configurations/ams-grafana-ini/cert_key",
'/etc/ambari-metrics/conf/ams-grafana.key')
ams_grafana_ca_cert = default("/configurations/ams-grafana-ini/ca_cert", None)
+grafana_connect_attempts =
max(int(default('/configurations/ams-grafana-env/metrics_grafana_connect_attempts',
15)), 1)
+grafana_connect_retry_delay =
max(int(default('/configurations/ams-grafana-env/metrics_grafana_connect_retry_delay',
20)), 1)
+
ams_hbase_home_dir = "/usr/lib/ams-hbase/"
ams_hbase_init_check_enabled =
default("/configurations/ams-site/timeline.metrics.hbase.init.check.enabled",
True)