Я ищу совет о том, как проанализировать файл и выбрать определенные поля. Затем выбранные поля должны быть включены в API pu sh для отдельной системы с помощью curl.
Сложность заключается в том, что количество необходимых полей может меняться при каждом заполнении файла. Однако я могу использовать ключи "key"
и значения, указанные после этого в "value"
.
Так что в следующем примере я хочу захватить эти значения (хотя отдельное сообщение может иметь больше или меньше) :
{
"result": {
"problems": [{
"id": "8103182743126107297_1579010239089V2",
"startTime": 1579010239089,
"endTime": -1,
"displayName": "297",
"impactLevel": "INFRASTRUCTURE",
"status": "OPEN",
"severityLevel": "AVAILABILITY",
"commentCount": 0,
"tagsOfAffectedEntities": [{
"context": "CONTEXTLESS",
"key": "JBOSS"
}, {
"context": "CONTEXTLESS",
"key": "AC"
}, {
"context": "CONTEXTLESS",
"key": "Host Name",
"value": "servernameX.com"
}, {
"context": "CONTEXTLESS",
"key": "Tomcat"
}],
"rankedImpacts": [{
"entityId": "PROCESS_GROUP_INSTANCE-2XXXE58A78A142D7",
"entityName": "service Tomcat *",
"severityLevel": "AVAILABILITY",
"impactLevel": "INFRASTRUCTURE",
"eventType": "PROCESS_UNAVAILABLE"
}, {
"entityId": "PROCESS_GROUP_INSTANCE-A2F65660B538D9CF",
"entityName": "JBoss EAP",
"severityLevel": "AVAILABILITY",
"impactLevel": "INFRASTRUCTURE",
"eventType": "PROCESS_UNAVAILABLE"
}],
"affectedCounts": {
"INFRASTRUCTURE": 2,
"SERVICE": 0,
"APPLICATION": 0,
"ENVIRONMENT": 0
},
"recoveredCounts": {
"INFRASTRUCTURE": 0,
"SERVICE": 0,
"APPLICATION": 0,
"ENVIRONMENT": 0
},
"hasRootCause": true
}],
"monitored": {
"INFRASTRUCTURE": 235,
"SERVICE": 19,
"APPLICATION": 1,
"ENVIRONMENT": 1
}
}
}
Затем ... как только эти значения будут получены, преобразуйте их в новую строку JSON, например, такую (изменится только значение "Host"
):
{
"State": "OPEN",
"ProblemID": "55555",
"ImpactedEntity": "Alert from Maintenance Window",
"ProblemTitle": "Process unavailable",
"Host": "captured value 1(JBOSS), captured value 2(AC), captured value 3(HostName), captured value 4(servernameX.com),captured value 5(Tomcat), "
}
Мне нужно вписать их в POST и выполнить его.
curl -v -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '(the JSON above)' 'http://serverA.com/?apiKey=8675309:p'
Это ящик Linux, и у меня есть python 2.7 на нем
Итак, подведем итог:
Нам нужно проанализировать плоский файл для значений интереса (назовите его file.x Количество значений может варьироваться, но всегда есть ключевое слово / s для идентификации)
Нам нужно взять эти значения, представляющие интерес, и поместить их в оператор CURL
, который выполняет API pu sh (формат указан выше)
Как это можно сделать быть достигнутым? В конечном счете, я планирую это в задаче cron для разных времен. Пожалуйста, советуйте и благодарим всех вас так любезно!