Распределенная система слежения на базе SkyWalking - услуги микромониторинга

Java

В предыдущей статье мы построили распределенную среду трассировки на базе SkyWalking, а сегодня поговорим об использовании SkyWalking для мониторинга наших микросервисов (DUBBO)

Сервисный кейс

Предположим, у вас есть микросервис заказов со следующими компонентами

  • Подтаблица базы данных MySQL (2 набора)
  • Продюсер (2 шт.) dubbo-provider
  • потребительский даббо-потребитель

Топология сети следующая

image

Ключевой код производителя

@Service
public class OrderServiceImpl implements OrderService {

    @Autowired
    protected OrderMapper orderMapper;

    @Override
    public OrderVO getById(long id) {
        OrderVO orderVO = new OrderVO();
        Order order = orderMapper.selectById(id);
        BeanUtils.copyProperties(order,orderVO);
        return orderVO;
    }
}

код ключа потребителя

@RestController
public class OrderController {

    @Reference(retries = 0)
    private OrderService orderService;

    @GetMapping("/order/{id}")
    public OrderVO getOrder(@PathVariable long id){
        return orderService.getById(id);
    }

}

запуск монитора

  • использоватьjavaagentначать продюсер

    -javaagent:E:\讯飞开发工具\skywalking\agent\skywalking-agent.jar -Dskywalking.agent.service_name=dubbo-provider -Dskywalking.collector.backend_service=192.168.136.129:11800

    -javaagent:E:\讯飞开发工具\skywalking\agent\skywalking-agent.jar -Dskywalking.agent.service_name=dubbo-provider2 -Dskywalking.collector.backend_service=192.168.136.129:11800

  • Стартовые потребители
    -javaagent:E:\讯飞开发工具\skywalking\agent\skywalking-agent.jar -Dskywalking.agent.service_name=dubbo-consumer -Dskywalking.collector.backend_service=192.168.136.129:11800

  • фиктивный запрос
    Доступ в браузереhttp://localhost:9090/order/1184489161562816511, несколько вызовов, чтобы загрузка вступила в силу; измените параметр идентификатора заказа, чтобы вызов охватывал разные базы данных

  • Просмотр эффекта
    Посетить адрес наблюдения за ходьбой по небуhttp://192.168.136.129:8080/Проверьте эффект мониторинга

    image
    приборная доска
    image
    топология сети
    image
    журнал ошибок
    image
    Запрос трассировки

интеграция журналов

В этой части давайте сначала рассмотрим принцип цепочки вызовов:

  • Когда поступает запрос, генерируется глобальный TraceID, и вся цепочка вызовов может быть соединена последовательно через TraceID, а TraceID представляет собой запрос.
  • В дополнение к TraceID, SpanID также требуется для записи вызывающих отношений родитель-потомок. Каждая служба записывает Parent id и Span id, с помощью которых может быть организована связь родитель-потомок в полной цепочке вызовов.
  • Чтобы просмотреть полный вызов, вам нужно только найти все записи вызовов в соответствии с TraceID, а затем организовать отношения родитель-потомок всего вызова по Parent id и Span id.

Именно потому, что TraceID так важен, мы надеемся, что TraceID этой цепочки вызовов может быть выведен в файл журнала.Как только обнаружен ненормальный вызов, мы можем напрямую искать TraceID на платформе анализа журнала, чтобы получить все связанные журналы, что значительно повышает нашу способность эффективно решать проблемы.

Процесс интеграции (log4j2)

  • Ввести пакет журнала log4j2

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    
  • Представляем инструментарий ПО

     <!--SW trace 跟踪-->
    <dependency>
        <groupId>org.apache.skywalking</groupId>
        <artifactId>apm-toolkit-log4j-2.x</artifactId>
        <version>6.4.0</version>
    </dependency>
    
  • Измените формат отображения журнала log4j2.xml.
    %d [%traceId] %-5p %c{1}:%L - %m%n

  • Запустить приложение, соблюдайте консоль

    image

    Только начинается, когда приобретение меньше, чем TraceID, поэтому TID отображается как N/A, вызывает запрос, после него снова начинается смотреть консоль, найти логи, на всех ссылках отмечен TraceID.

    image

С помощью нескольких простых шагов вы можете добавить мониторинг цепочки вызовов в свои микросервисы. Почему бы вам не попробовать?

Статьи по Теме:
Распределенная система слежения на базе SkyWalking - Environment Construction

SpringBoot2.1.9+dubbo2.7.3+Nacos1.1.4 создайте свою микросервисную систему

Для получения дополнительной информации, пожалуйста, обратите внимание на публичный номер: JAVA Daily Record

微信公众号