Проблемы и события
Только расширения АктивногоШлюза
Обратитесь к описанию обнаружения и анализа проблем , чтобы понять концепции проблем и событий в Ключ-АСТРОМ.
Как отправлять проблемы и события из расширения Ключ-АСТРОМ
Расширения АктивногоШлюза позволяют вам сообщать о проблемах и событиях инфраструктуры для отслеживаемой технологии на уровне устройства. Проблемы и события для группы устройств недоступны.
Чтобы сообщить о проблемах, вы можете использовать следующие методы API:
report_performance_event
report_error_event
report_availability_event
report_resource_contention_event
Для отправки событий вы можете использовать следующие методы API:
report_custom_info_event
report_custom_deployment_event
report_custom_annotation_event
Проблемы и события состоят из заголовка, описания и набора настраиваемых свойств «ключ-значение», которые сообщают важную контекстную информацию. См. Справочник по расширениям .
Чтобы отправить проблему или событие, выполните следующие шаги в исходном коде расширения:
- Создайте группу топологии.
- Создайте элемент (устройство) в этой группе.
- Сообщите о проблеме или событии, используя один из методов, упомянутых выше.
Нет необходимости определять что-либо конкретное в plugin.json
файле.
Ограничения
Существуют некоторые ограничения на отчеты о событиях для защиты сервера от лавины данных:
- Максимальная длина
Title
строки не может превышать 1024 символа; более длинные строки будут обрезаны. - Максимальная длина
Description
строки не может превышать 10240 символов; более длинные строки будут обрезаны. - Максимальное количество элементов в словаре свойств не может превышать 100. Если в метод передается больше элементов, оно автоматически сокращается до 100.
- Максимальная длина
KEY
строки не может быть больше 100; более длинные значения будут обрезаны. - Максимальная длина
VALUE
строки не может превышать 4000; более длинные значения будут обрезаны.
Рабочий пример
В следующем примере показано, как отправлять проблемы и события из расширения:
from ruxit.api.base_plugin import RemoteBasePlugin
import logging
logger = logging.getLogger(__name__)
class DemoPluginRemote(RemoteBasePlugin):
def initialize(self, **kwargs):
config = kwargs['config']
logger.info("Config: %s", config)
self.url = config["url"]
def query(self, **kwargs):
# Create group - provide group id used to calculate unique entity id in dynatrace
# and display name for UI presentation
group = self.topology_builder.create_group(identifier="DemoGroup",
group_name="ActiveGate Demo Group")
# Create node - provide node id used to calculate unique entity id in dynatrace
# and display name for UI presentation
node = group.create_element(identifier="DemoNode",
element_name="ActiveGate Demo Node")
logger.info("Topology: group name=%s, node name=%s", group.name, node.name)
# Push infrastructure problems
node.report_performance_event(title="Performance Event",
description="Use it to focus on some performance issue",
properties={"property_key": "property_value"})
node.report_error_event(title="Error Event",
description="Use it to report some error",
properties={"property_key": "property_value"})
node.report_availability_event(title="Availability Event",
description="Use it to focus on some availability issue",
properties={"property_key": "property_value"})
node.report_resource_contention_event(title="Resources Contention Event",
description="Use it to focus on some resource contention issue",
properties={"property_key": "property_value"})
# Push custom info events
node.report_custom_info_event(title="Custom Info Event",
description="Use it to report some custom info",
properties={"property_key": "property_value"})
node.report_custom_deployment_event(source="demo source",
project="demo plugin",
version="1.001",
ci_link=self.url + "/deployment",
remediation_action_link=self.url + "/remediation",
deployment_name="Demo deployment",
properties={"property_key": "property_value"})
node.report_custom_annotation_event(description="Annotation event",
annotation_type="demo",
source="demo source",
properties={"property_key": "property_value"})
{
"name": "custom.remote.python.demo_events",
"version": "1.009",
"type": "python",
"entity": "CUSTOM_DEVICE",
"processTypeNames": ["PYTHON"],
"technologies": ["ActiveGate Demo Technology"],
"favicon": "https://lh3.googleusercontent.com/gN6iBKP1b2GTXZZoCxhyXiYIAh8QJ_8xzlhEK6csyDadA4GdkEdIEy9Bc8s5jozt1g=w300",
"source": {
"package": "demo_activegate_plugin_events",
"className": "DemoPluginRemote",
"install_requires": ["requests>=2.6.0"],
"activation": "Remote"
},
"configUI": {
"displayName": "ActiveGate Demo Plugin - Events",
"properties": [
{
"key": "url",
"displayName": "URL",
"displayHint": "http://localhost:8769"
}
]
},
"properties": [
{
"key": "url",
"type": "String",
"defaultValue": "http://localhost:8769"
}
],
"metrics": [
{
"entity": "CUSTOM_DEVICE",
"timeseries": {
"key": "counter",
"unit": "Count",
"displayname": "Counter"
}
}
],
"ui": {}
}
Это расширение ежеминутно выдвигает все проблемы и события.
Этот пример включен в Extension SDK и может быть установлен с помощью oneagent_build_plugin
сценария.