Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prometheus-node-exporter-lua remove zero values #24016

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,27 @@ _log() {
start_service() {
. /lib/functions/network.sh

local interface port bind4 bind6
local interface port bind4 bind6 omit_zero_values

config_load prometheus-node-exporter-lua.main
config_get keepalive "main" http_keepalive 70
config_get interface "main" listen_interface "loopback"
config_get port "main" listen_port 9100
config_get omit_zero_values "main" omit_zero_values 0

[ "$interface" = "*" ] || {
network_get_ipaddr bind4 "$interface"
network_get_ipaddr bind4 "$interface"
network_get_ipaddr6 bind6 "$interface"
[ -n "$bind4$bind6" ] || {
_log "defering start until listen interface $interface becomes ready"
return 0
}
}
}

procd_open_instance

[ "$omit_zero_values" -eq 1 ] && procd_set_param env OMIT_ZERO_VALUES=1

procd_set_param command /usr/sbin/uhttpd -f -c /dev/null -l / -L /usr/bin/prometheus-node-exporter-lua
[ $keepalive -gt 0 ] && procd_append_param command -k $keepalive

Expand All @@ -46,8 +49,7 @@ start_service() {
procd_close_instance
}

service_triggers()
{
service_triggers() {
local interface

procd_add_reload_trigger "prometheus-node-exporter-lua"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@

socket = require("socket")

-- get configs

local omit_zero_values = os.getenv("OMIT_ZERO_VALUES") == "1"

-- Parsing

function space_split(s)
Expand All @@ -22,7 +26,7 @@ function get_contents(filename)
local f = io.open(filename, "rb")
local contents = ""
if f then
contents = f:read "*a"
contents = f:read("*a")
f:close()
end

Expand All @@ -34,8 +38,8 @@ end
function print_metric(metric, labels, value)
local label_string = ""
if labels then
for label,value in pairs(labels) do
label_string = label_string .. label .. '="' .. value .. '",'
for label, value in pairs(labels) do
label_string = label_string .. label .. '="' .. value .. '",'
end
label_string = "{" .. string.sub(label_string, 1, -2) .. "}"
end
Expand All @@ -45,7 +49,9 @@ end
function metric(name, mtype, labels, value)
output("# TYPE " .. name .. " " .. mtype)
local outputter = function(labels, value)
print_metric(name, labels, value)
if not (omit_zero_values and tonumber(value) == 0) then
print_metric(name, labels, value)
end
end
if value then
outputter(labels, value)
Expand All @@ -67,10 +73,10 @@ end
function run_all_collectors(collectors)
local metric_duration = metric("node_scrape_collector_duration_seconds", "gauge")
local metric_success = metric("node_scrape_collector_success", "gauge")
for _,cname in pairs(collectors) do
for _, cname in pairs(collectors) do
if col_mods[cname] ~= nil then
local duration, success = timed_scrape(col_mods[cname])
local labels = {collector=cname}
local labels = { collector = cname }
metric_duration(labels, duration)
metric_success(labels, success)
end
Expand All @@ -80,7 +86,7 @@ end
-- Web server-specific functions

function handle_request(env)
if env.PATH_INFO ~= '/metrics' then
if env.PATH_INFO ~= "/metrics" then
uhttpd.send("Status: 404 Not Found\r\n")
uhttpd.send("Server: lua-metrics\r\n")
uhttpd.send("Content-Type: text/plain\r\n\r\n")
Expand All @@ -91,7 +97,7 @@ function handle_request(env)
uhttpd.send("Content-Type: text/plain; version=0.0.4\r\n\r\n")
local cols = {}
for c in env.QUERY_STRING:gmatch("collect[^=]*=([^&]+)") do
cols[#cols+1] = c
cols[#cols + 1] = c
end
if #cols == 0 then
cols = col_names
Expand All @@ -107,12 +113,14 @@ col_names = {}
ls_fd = io.popen("ls -1 /usr/lib/lua/prometheus-collectors/*.lua")
for c in ls_fd:lines() do
c = c:match("([^/]+)%.lua$")
col_mods[c] = require('prometheus-collectors.'..c)
col_names[#col_names+1] = c
col_mods[c] = require("prometheus-collectors." .. c)
col_names[#col_names + 1] = c
end
ls_fd:close()

output = function (str) uhttpd.send(str.."\n") end
output = function(str)
uhttpd.send(str .. "\n")
end

if arg ~= nil then
output = print
Expand Down