источник
Недавно я увидел очень популярное название "Open Source XX Years, Star XXX, How I Persevered".
Увидев такое название, я вдруг понял, что Arthas с открытым исходным кодом всего год с сентября 2018, и как раз в это крутое осеннее время делать подведение итогов и обзор.
Arthas
Это инструмент диагностики Java с открытым исходным кодом от Alibaba, который очень нравится разработчикам.
- Гитхаб:GitHub.com/Alibaba/art…
- Документация:alibaba.github.io/arthas
Оглядываясь назад на историю Arthas Stars, можно сказать, что она быстро росла и в настоящее время превысила 16 тысяч.
Спасибо за вашу поддержку, давление и мотивацию. За последний год с открытым исходным кодом 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
Например:
-
Декомпилировать код с помощью jad
jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
-
Скомпилировать код с помощью 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); } }
-
использовать
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
-
использовать
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 участников, спасибо за их вклад:
Сообщество представило ряд улучшений, некоторые пункты перечислены ниже (неполные):
- Большинство английских документов переведено
- Команда trace поддерживает номера строк
- Формат упаковки поддерживает rpm/deb
- Улучшите приглашение командной строки, чтобы
arthas@pid
- Улучшить поддержку окон
- Увеличивать
mbean
Заказ - Улучшить работу с веб-консолью
Кроме того, 83 компании/организации зарегистрировали свою информацию об использовании, и другие пользователи могут зарегистрироваться:
Проект здоровья
На основе Артаса также появилось несколько новых проектов, вот два из них:
- Bistoury: проект Qunar с открытым исходным кодом, который интегрирует Arthas
- arthas-mvel: форк, использующий скрипты MVEL
Совместное использование пользовательского кейса
В процессе использования Arthas для устранения неполадок большинство пользователей поделились большим количеством процессов расследования и опыта. Добро пожаловать, чтобы поделиться.
Вернуть в открытый исходный код
Сам Arthas использует код многих проектов с открытым исходным кодом.В ходе процесса открытого исходного кода мы вносили улучшенный код в netty, ognl, cfr и т. д. и отдавали его в апстрим.
постскриптум
Девиз Артаса при создании брошюры:
«Рука, дарящая розы, продержится долго»
Я надеюсь, что Артас сможет помочь большему количеству пользователей решить проблемы в будущем, и я также надеюсь, что большинство разработчиков смогут внести больше улучшений и предложений для Артаса.
Наконец, есть лотерея.Вы можете переслать статью, оставить сообщение о себе и Артасе на фоне паблика или сделать предложения Артасу.Приз - свитер от Артаса:
публика
Добро пожаловать в рубрику Hengyun Broken Ridge, посвященную Java, Spring Boot, Arthas, Dubbo.