Hc_tracer - Управление Tracer
Hc_tracer_declare
Команда позволяет создать трейсер вызова в системе.
Аналог команды в CoCon:
cluster/core/<CORE>/tracer/declare
domain/<DOMAIN>/tracer/declare
Метод HTTP-запроса:
POST
Шаблон HTTP-запроса:
http://host:port/commands/tracer_declare
Код HTTP-ответа:
При выполнении команды HTTP-терминал может ответить следующими сообщениями:
- 200 – в случае успеха;
- 404 – в случае ошибки.
XSD-схема XML-файла запроса/ответа:
trace_common.xsd
Hc_tracer_show
tracer_declare.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="tracer_common.xsd"/>
<!-- in-->
<xs:element name="in">
<xs:complexType>
<xs:sequence>
<xs:element name="request">
<xs:complexType>
<xs:sequence>
<xs:element name="tracer" type="tracerType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- out-->
<xs:element name="out">
<xs:complexType>
<xs:choice>
<xs:element name="ok">
<xs:complexType/>
</xs:element>
<xs:element name="already_defined">
<xs:complexType/>
</xs:element>
<xs:element name="bad_domain">
<xs:complexType/>
</xs:element>
<xs:element name="bad_tracer">
<xs:complexType/>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
В случае успешного ответа возвращается код 200 и ответ </ok>.
Если трейсер с таким именем уже объявлен - возвращается код 200 и ответ </already_defined>.
Если во время создания трейса произошла ошибка - возвращается код 200 и ответ </bad_tracer>.
Пример:
Запрос:
<?xml version="1.0" encoding="UTF-8"?>
<in
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="tracer_declare.xsd">
<request>
<tracer addr="240465" domain="biysk.local" node="core1@ecss1" name="tr1" lifetime="1" iface="*" >
<writers>
<writer xsi:type="fileTracerType" path="1.txt" write_type="write"/>
</writers>
</tracer>
</request>
</in>
Код ответа:
200
Ответ:
<?xml version="1.0"?>
<out
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="tracer_declare.xsd">
<ok/>
</out>
Повторный запрос возвращает код 200, и ответ:
<?xml version="1.0"?>
<out
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="tracer_declare.xsd">
<already_defined/>
</out>
Hc_tracer_show
Команда позволяет посмотреть список tracer-ов, активных в системе.
Аналог команды в CoCon:
cluster/core/<CORE>/tracer/show
domain/<DOMAIN>/tracer/show
Метод HTTP-запроса:
POST
Шаблон HTTP-запроса:
http://host:port/commands/tracer_show
Код HTTP-ответа:
При выполнении команды HTTP-терминал может ответить следующими сообщениями:
- 200 – в случае успеха;
- 404 – в случае ошибки.
XSD-схема XML-файла запроса/ответа:
trace_show.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- writeTypeType -->
<xs:simpleType name="writeTypeType">
<xs:restriction base="xs:string">
<xs:enumeration value="append"/>
<xs:enumeration value="write"/>
</xs:restriction>
</xs:simpleType>
<!-- baseTracerType-->
<xs:complexType name="baseTracerType" abstract="true"/>
<!-- udpTracerType-->
<xs:complexType name="udpTracerType">
<xs:complexContent>
<xs:extension base="baseTracerType">
<xs:attribute name="host" type="xs:string" use="required"/>
<xs:attribute name="port" type="xs:integer" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- fileTracerType-->
<xs:complexType name="fileTracerType">
<xs:complexContent>
<xs:extension base="baseTracerType">
<xs:attribute name="path" type="xs:string" use="required"/>
<xs:attribute name="write_type" type="writeTypeType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- mysqlTracerType-->
<xs:complexType name="mysqlTracerType">
<xs:complexContent>
<xs:extension base="baseTracerType">
<xs:attribute name="db" type="xs:string" use="required"/>
<xs:attribute name="user" type="xs:string" use="required"/>
<xs:attribute name="passwd" type="xs:string" use="required"/>
<xs:attribute name="host" type="xs:string" use="required"/>
<xs:attribute name="port" type="xs:integer" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- tracerType-->
<xs:complexType name="tracerType">
<xs:sequence>
<xs:element name="writers">
<xs:complexType>
<xs:sequence>
<xs:element name="writer" type="baseTracerType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="created" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="second" type="xs:integer" use="required"/>
<xs:attribute name="minute" type="xs:integer" use="required"/>
<xs:attribute name="hour" type="xs:integer" use="required"/>
<xs:attribute name="day" type="xs:integer" use="required"/>
<xs:attribute name="month" type="xs:integer" use="required"/>
<xs:attribute name="year" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="domain" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="node" type="xs:string" use="required"/>
<xs:attribute name="iface" type="xs:string" use="optional"/>
<xs:attribute name="addr" type="xs:string" use="optional"/>
<xs:attribute name="lifetime" type="xs:integer" use="optional"/>
</xs:complexType>
</xs:schema>
tracer_common.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="tracer_common.xsd"/>
<!-- in-->
<xs:element name="in">
<xs:complexType>
<xs:sequence>
<xs:element name="request">
<xs:complexType>
<xs:attribute name="domain" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- out-->
<xs:element name="out">
<xs:complexType>
<xs:sequence>
<xs:element name="tracers">
<xs:complexType>
<xs:sequence>
<xs:element name="tracer" type="tracerType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример:
Запрос: http://192.168.1.21:9999/commands/tracer_show
<?xml version="1.0" encoding="UTF-8"?>
<in
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="tracer_show.xsd">
<request domain="biysk.local"/>
</in>
Код ответа:
200
Ответ:
<?xml version="1.0"?>
<out
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="tracer_show.xsd">
<tracers>
<tracer name="tr1" domain="biysk.local" node="core1@ecss1" lifetime="1" iface="*" addr="240465">
<writers>
<writer xs:type="fileTracerType" path="1.txt" write_type="write"/>
</writers>
<created second="43" minute="52" hour="7" day="28" month="6" year="2019"/>
</tracer>
</tracers>
</out>
Hc_tracer_remove
Команда позволяет удалить из системы tracer по имени.
Аналог команды в CoCon:
cluster/core/<CORE>/tracer/remove
domain/<DOMAIN>/tracer/remove
Метод HTTP-запроса:
POST
Шаблон HTTP-запроса:
http://host:port/commands/tracer_remove
Код HTTP-ответа:
При выполнении команды HTTP-терминал может ответить следующими сообщениями:
- 204 – в случае успеха;
- 404 – в случае ошибки.
XSD-схема XML-файла запроса/ответа:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="tracer_common.xsd"/>
<!-- in-->
<xs:element name="in">
<xs:complexType>
<xs:sequence>
<xs:element name="request">
<xs:complexType>
<xs:attribute name="domain" type="xs:string" use="required"/>
<xs:attribute name="tracer" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример:
Запрос:
http://192.168.1.21:9999/commands/tracer_remove
<?xml version="1.0" encoding="UTF-8"?>
<in
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="tracer_remove.xsd">
<request domain="biysk.local" tracer="tr1"/>
</in>
Код ответа:
204