You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by me...@apache.org on 2020/08/16 02:00:03 UTC

[apisix] branch master updated: feat(prometheus): add prometheus metrics `node_info`(hostname) (#2063)

This is an automated email from the ASF dual-hosted git repository.

membphis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new 7525f1f  feat(prometheus): add prometheus metrics `node_info`(hostname)  (#2063)
7525f1f is described below

commit 7525f1fcc93de1d9dd4767124359198eb053177a
Author: nic-chen <33...@users.noreply.github.com>
AuthorDate: Sun Aug 16 09:59:55 2020 +0800

    feat(prometheus): add prometheus metrics `node_info`(hostname)  (#2063)
    
    * using a new metric `node_info` to store the hostname
---
 apisix/plugins/prometheus/exporter.lua | 10 ++++++++++
 t/plugin/prometheus.t                  | 10 ++++++++++
 2 files changed, 20 insertions(+)

diff --git a/apisix/plugins/prometheus/exporter.lua b/apisix/plugins/prometheus/exporter.lua
index 8e6d74d..82ccf45 100644
--- a/apisix/plugins/prometheus/exporter.lua
+++ b/apisix/plugins/prometheus/exporter.lua
@@ -78,6 +78,11 @@ function _M.init()
     metrics.etcd_reachable = prometheus:gauge("etcd_reachable",
             "Config server etcd reachable from APISIX, 0 is unreachable")
 
+
+    metrics.node_info = prometheus:gauge("node_info",
+            "Info of APISIX node",
+            {"hostname"})
+
     metrics.etcd_modify_indexes = prometheus:gauge("etcd_modify_indexes",
             "Etcd modify index for APISIX keys",
             {"key"})
@@ -98,6 +103,7 @@ function _M.init()
     metrics.bandwidth = prometheus:counter("bandwidth",
             "Total bandwidth in bytes consumed per service in APISIX",
             {"type", "route", "service", "node"})
+
 end
 
 
@@ -265,6 +271,8 @@ function _M.collect()
     etcd_modify_index()
 
     -- config server status
+    local vars = ngx.var or {}
+    local hostname = vars.hostname or ""
     local config = core.config.new()
     local version, err = config:server_version()
     if version then
@@ -276,6 +284,8 @@ function _M.collect()
                        "processing metrics endpoint: ", err)
     end
 
+    metrics.node_info:set(1, gen_arr(hostname))
+
     local res, _ = config:getkey("/routes")
     if res and res.headers then
         clear_tab(key_values)
diff --git a/t/plugin/prometheus.t b/t/plugin/prometheus.t
index 3a7d5c7..9a43def 100644
--- a/t/plugin/prometheus.t
+++ b/t/plugin/prometheus.t
@@ -773,3 +773,13 @@ GET /apisix/prometheus/metrics
 qr/apisix_etcd_modify_indexes\{key="x_etcd_index"\} \d+/
 --- no_error_log
 [error]
+
+
+
+=== TEST 43: fetch the prometheus metric data -- hostname
+--- request
+GET /apisix/prometheus/metrics
+--- response_body eval
+qr/apisix_node_info\{hostname=".*"\} 1/
+--- no_error_log
+[error]