завить, разбить строку и выйти при необходимости - PullRequest
0 голосов
/ 04 декабря 2018

Это вывод при запуске curl --silent localhost:9091/health

# HELP metrics_qollector_ttt_health_check The status of ttt.
# TYPE metrics_qollector_ttt_health_check gauge
metrics_qollector_ttt_health_check 1.0
# HELP metrics_qollector_database_health_check The status of the database.
# TYPE metrics_qollector_database_health_check gauge
metrics_qollector_database_health_check 1.0
# HELP metrics_qollector_health_checks_latency_seconds Health check latency in seconds.
# TYPE metrics_qollector_health_checks_latency_seconds summary
metrics_qollector_health_checks_latency_seconds_count{method="runtime",} 1.0
metrics_qollector_health_checks_latency_seconds_sum{method="runtime",} 9.51166E-4

Мне нужно кипятить bash-скрипт, который проверяет, metrics_qollector_ttt_health_check == "1.0" или metrics_qollector_database_health_check == "1.0" тогда exit 0; иначе exit 1;

То, что я пытался сделать, это следующее

#!/usr/bin/env bash

set -e

HEALTHSTATUS=$(curl --silent localhost:9091/health)

for item in ${HEALTHSTATUS}
    if [[ item[0] = "metrics_qollector_ttt_health_check" && item[1] = "1.0" ]  || [ item[0] = "metrics_qollector_database_health_check" && item[1] "1.0" ]]; then
        exit 0;
    else
        exit 1;
done

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

У вас есть так много способов сделать это, но вот один:

#!/bin/bash

STATUS=$(curl --silent http://localhost:9091/health | egrep "^metrics_qollector_ttt_health_check |^metrics_qollector_database_health_check ")

EXIT_STATUS=$(echo $STATUS | awk '{if(NF == 4) { if(($2 == 0) || ($4 == 0)) {print "0"} else {print "1"} } else {print "2"}}')

exit $EXIT_STATUS

awk должен проанализировать ваши значения с плавающей запятой (1.0) для числовых значений для сравнения.Он также проверяет, есть ли у вас обе метрики.

коды выхода скрипта :

0 - как минимум одно из значений - 0,0

1 -Ни одно из значений не равно 0.0

2 - если по какой-то причине у вас нет одного или обоих показателей в вашем API здоровья

0 голосов
/ 04 декабря 2018

grep -q выходит со статусом 0, если совпадение найдено, и существует со статусом 1, если совпадение не найдено.Вы можете заменить весь ваш скрипт следующим однострочником:

curl --silent localhost:9091/health |
grep -Eq '^metrics_qollector_(ttt|database)_health_check 1\.0$'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...