Первая годовщина открытого исходного кода Arthas, Star 16K, на чем мы настаивали?

Java

источник

Недавно я увидел очень популярное название "Open Source XX Years, Star XXX, How I Persevered".

Увидев такое название, я вдруг понял, что Arthas с открытым исходным кодом всего год с сентября 2018, и как раз в это крутое осеннее время делать подведение итогов и обзор.

Arthas

ArthasЭто инструмент диагностики Java с открытым исходным кодом от Alibaba, который очень нравится разработчикам.

Оглядываясь назад на историю Arthas Stars, можно сказать, что она быстро росла и в настоящее время превысила 16 тысяч.

Arthas Github Star历史曲线

Спасибо за вашу поддержку, давление и мотивацию. За последний год с открытым исходным кодом Arthas выпустил 7 версий Release, и мы придерживались трех пунктов:

  • Постоянно повышайте удобство использования
  • Продолжайте добавлять полезные команды
  • Получите силу от сообщества открытого исходного кода и отдайте его сообществу

Постоянно повышайте удобство использования

Arthas всегда ставил простоту использования на первое место.После открытия исходного кода мы внесли следующие улучшения:

  • Разработка загрузчика Arthas, поддержка унифицированного интерфейса Windows/Linux/Mac
  • Шелковистое автоматическое завершение, ссылаясь на опыт jshell
  • Эффективное историческое сопоставление команд,Up/Downнепосредственный
  • Улучшенное сопоставление поиска по классам, улучшенная поддержка лямбда-выражений и внутренних классов.
  • Улучшить механизм перенаправления
  • Поддержка JDK 9/10/11
  • Поддержка докера
  • Поддержка установки пакетов rpm/deb

Хотя мы приложили большие усилия для простоты использования, мы обнаружили, что во многих случаях пользователям сложно начать работу, поэтому мы обращаемся к интерактивному учебному пособию k8s и запускаем онлайн-учебное пособие Артаса:

С помощью базового руководства вы можете шаг за шагом приступить к работе в интерактивном терминале, а с помощью расширенного руководства вы сможете глубоко понять случаи устранения неполадок Arthas.

Кроме того, чтобы облегчить масштабное развертывание пользователей, мы реализовали функции туннельного сервера и отчетов о пользовательских данных:

  • Добавьте туннельный сервер для унифицированного управления подключениями агента.
  • Добавлена ​​функция отчетов о пользовательских данных для облегчения управления и контроля безопасности.

Продолжайте добавлять полезные команды

Arthas претендует на роль диагностического инструмента для Java-приложений, поэтому мы должны быть достойны этого лозунга. После открытия исходного кода Артас продолжил добавлять более 10 команд.

  • выполнение произвольного кода командой ognl
  • mc онлайн-компилятор памяти
  • переопределить код горячего обновления командной строки
  • команда logger для просмотра всех конфигураций регистратора в приложении одним щелчком мыши
  • sysprop Просмотр свойств системы обновления
  • sysenv Просмотр переменных среды
  • vmoption Просмотр варианта обновления виртуальной машины
  • logger Просмотр конфигурации регистратора, уровень обновления
  • mbean Просмотр информации о JMX
  • снимок памяти кучи heapdump

Две функции выделены ниже.

jad/mc/redefine единый онлайн-код горячего обновления

отОнлайн-учебник АртасавнутреннийUserControllerНапример:

  1. Декомпилировать код с помощью jad

    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
    
  2. Скомпилировать код с помощью vim

    Когда идентификатор пользователя меньше 1, он также возвращается нормально, не вызывая исключения:

        @GetMapping("/user/{id}")
        public User findUserById(@PathVariable Integer id) {
            logger.info("id: {}" , id);
    
            if (id != null && id < 1) {
                return new User(id, "name" + id);
                // throw new IllegalArgumentException("id < 1");
            } else {
                return new User(id, "name" + id);
            }
        }
    
  3. использоватьmcкоманда для компиляции модифицированногоUserController.java

    $ mc /tmp/UserController.java -d /tmp
    Memory compiler output:
    /tmp/com/example/demo/arthas/user/UserController.class
    Affect(row-cnt:1) cost in 346 ms
    
  4. использоватьredefineкоманда, потому что код может обновляться в горячем режиме

    $ redefine /tmp/com/example/demo/arthas/user/UserController.class
    redefine success, size: 1
    

Просмотрите конфигурацию с помощью команды logger и измените уровень

Когда веб-сайт находится под большим давлением (например, Double 11), одной из мер по смягчению последствий является изменение уровня журнала приложения на ERROR. Тогда есть два вопроса:

  • Для сложных приложений может быть несколько систем журналов, так какая конфигурация системы журналов действительно действует?
  • Как динамически изменять уровень логгера онлайн?

пройти черезloggerкоманду, вы можете просмотреть подробную информацию о конфигурации регистратора в приложении, напримерFileAppenderвыходной файл,AsyncAppenderлиblocking.

[arthas@2062]$ logger
 name                                   ROOT
 class                                  ch.qos.logback.classic.Logger
 classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
 classLoaderHash                        2a139a55
 level                                  INFO
 effectiveLevel                         INFO
 additivity                             true
 codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
 appenders                              name            CONSOLE
                                        class           ch.qos.logback.core.ConsoleAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        target          System.out
                                        name            APPLICATION
                                        class           ch.qos.logback.core.rolling.RollingFileAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        file            app.log
                                        name            ASYNC
                                        class           ch.qos.logback.classic.AsyncAppender
                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                        classLoaderHash 2a139a55
                                        blocking        false
                                        appenderRef     [APPLICATION]

Вы также можете изменить уровень регистратора онлайн:

[arthas@2062]$ logger --name ROOT --level debug
update logger level success.

Получите силу от сообщества открытого исходного кода и отдайте его сообществу

Спасибо 67 участникам

Поскольку Arthas был открытым исходным кодом, в общей сложности 67 участников, спасибо за их вклад:

Arthas Contributors

Сообщество представило ряд улучшений, некоторые пункты перечислены ниже (неполные):

  • Большинство английских документов переведено
  • Команда trace поддерживает номера строк
  • Формат упаковки поддерживает rpm/deb
  • Улучшите приглашение командной строки, чтобыarthas@pid
  • Улучшить поддержку окон
  • УвеличиватьmbeanЗаказ
  • Улучшить работу с веб-консолью

Кроме того, 83 компании/организации зарегистрировали свою информацию об использовании, и другие пользователи могут зарегистрироваться:

Arthas Users

Проект здоровья

На основе Артаса также появилось несколько новых проектов, вот два из них:

  • Bistoury: проект Qunar с открытым исходным кодом, который интегрирует Arthas
  • arthas-mvel: форк, использующий скрипты MVEL

Совместное использование пользовательского кейса

В процессе использования Arthas для устранения неполадок большинство пользователей поделились большим количеством процессов расследования и опыта. Добро пожаловать, чтобы поделиться.

Arthas用户案例分享

Вернуть в открытый исходный код

Сам Arthas использует код многих проектов с открытым исходным кодом.В ходе процесса открытого исходного кода мы вносили улучшенный код в netty, ognl, cfr и т. д. и отдавали его в апстрим.

постскриптум

Девиз Артаса при создании брошюры:

«Рука, дарящая розы, продержится долго»

Я надеюсь, что Артас сможет помочь большему количеству пользователей решить проблемы в будущем, и я также надеюсь, что большинство разработчиков смогут внести больше улучшений и предложений для Артаса.

Наконец, есть лотерея.Вы можете переслать статью, оставить сообщение о себе и Артасе на фоне паблика или сделать предложения Артасу.Приз - свитер от Артаса:

Arthas卫衣

публика

Добро пожаловать в рубрику Hengyun Broken Ridge, посвященную Java, Spring Boot, Arthas, Dubbo.

横云断岭的专栏