JDK - Java Development Kit комплект разработчика приложений на языке Java
Он включает в себя среду выполнения Java (JRE), интерпретатор / загрузчик (Java), компилятор (javac), архиватор (jar), генератор документации (Javadoc) и другие инструменты, необходимые для разработки Java.
JRE расшифровывается как «среда выполнения Java» и может также записываться как «Java RTE». Среда выполнения Java предоставляет минимальные требования для выполнения приложения Java; он состоит из виртуальной машины Java (JVM), базовых классов и вспомогательных файлов .
JVM - JAVA виртуальная машина, когда вы пишете команду java в командной строке для запуска класса java, создается экземпляр JVM
Установка JAVA JDK
Для 11 версии и выше
Показать
Debian JAVA
JRE
apt-get install default-jre
JDK
apt-get install default-jdk
nano /etc/apt/sources.list
прописать
deb http://repos.azulsystems.com/debian stable main
Прописать ключ к репозиторию
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
Обновление списков пакетов
apt-get update
Установка
apt-get install zulu-14
Путь
/usr/lib/jvm/zulu-14-amd64/bin/
Проверка версии
java -version
openjdk version "14.0.1" 2020-04-14
OpenJDK Runtime Environment Zulu14.28+21-CA (build 14.0.1+8)
OpenJDK 64-Bit Server VM Zulu14.28+21-CA (build 14.0.1+8, mixed mode, sharing)
переключитесь с Oracle Java на OpenJDK или какую-либо другую сборку JDK,
поскольку Oracle теперь использует коммерческую лицензию, и вы можете
использовать Java бесплатно только для разработки и тестирования,
но для использования в производственной среде требуется плата.
https://www.linuxuprising.com/2019/06/n ... buntu.html
Платная лицензия в коммерческих целях
Перейди в директорию
cd /var/cache/oracle-jdk11-installer-local/
Скачать исходник
wget ******Oracle Java 11 .tar.g
После можно установить:
oracle-java11-installer-local
oracle-java11-set-default-local
Создайте учетную запись Oracle по адресу https://profile.oracle.com/myprofile/ac ... count.jspx и войдите в систему
Загрузите архив Oracle JDK 11 .tar.gz.
Убедитесь, что загружаемая версия Oracle JDK совпадает с версией пакета oracle-java11-installer-local
Например, установщик в настоящее время версии 11.0.6, поэтому его можно использовать для установки Oracle JDK 11.0.6.
3. Создайте mkdir /var/cache/oracle-jdk11-installer-local/ папку и скопируйте в нее папку Oracle JDK 11 .tar.gz.
Например, создайте mkdir /var/cache/oracle-jdk11-installer-local/ папку
и скопируйте cp jdk-11.0.3_linux-x64_bin.tar.gz в эту папку (из текущего каталога), используя:
Очистите старый oracle-java11-installer пакет, если он был установлен
apt purge oracle-java11-installer
nano /etc/apt/sources.list
Добавить
deb http://ppa.launchpad.net/linuxuprising/java/ubuntu focal main
Прописать ключ к репозиторию
apt-get install dirmngr
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 73C3DB2A
Обновить список пакетов
apt-get update
Установка
apt-get install oracle-java11-installer-local
#apt-get install oracle-java14-installer
Если ошибки при установке
#cd /var/lib/dpkg/info | rm paket.*нужный пакет
rm /var/lib/dpkg/info/oracle-java11-installer-local.postinst -f
dpkg --configure oracle-java11-installer-local
#apt-get -f install
#cd /var/cache/debconf | rm *.dat
Повторная Установка
apt-get install oracle-java11-set-default-local
Еще пример установки
Установите последнюю версию OpenJDK
nano /etc/apt/sources.list
прописать
deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main
deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main
# deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
# deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
Обновляем список пакетов apt-get update
Производим установку apt-get install oracle-java8-installer
Прописываем путь на переменную java
echo "export JAVA_HOME=/usr/lib/jvm/java-8-amd64/" >> ~/.bashrc
echo "export JAVA_HOME=/usr/lib/jvm/java-8-oracle/" >> ~/.bashrc
. ~/.bashrc
Установка пакета zabbix JAVA Шлюза
Zabbix Java gateway - это демон написанный на языке Java. Когда Zabbix сервер хочет знать значение конкретного JMX счетчика узла сети, он опрашивает Zabbix Java gateway, который используя API управления JMX опрашивает интересующее удаленное приложение.
Оф. документация Java-шлюз Java gateway
3 Способа: apt-get install, скачать пакет вручную и установить, из исходного кода.
1.
apt-get install zabbix-java-gateway
Файл конфигурации
nano /etc/zabbix/zabbix_java_gateway.conf
Код: Выделить всё
#Это файл конфигурации для Zabbix Java Gateway..
#Он создается сценариями startup.sh и shutdown.sh..
### Опция: zabbix прослушивает IP zabbix.listenIP
# IP-адрес для прослушивания.
#
# Обязательный: нет
# По умолчанию:
# LISTEN_IP="0.0.0.0"
### Опция: zabbix прослушивает порт zabbix.listenPort
# Порт для прослушивания.
#
# Обязательный: нет
# Диапазон: 1024-32767
# По умолчанию:
# LISTEN_PORT=10052
### Опция zabbix.pidFile
# Имя PID-файла.
# Если опущено, Zabbix Java Gateway запускается как консольное приложение.
#
# Обязательный: нет
# По умолчанию:
# PID_FILE=
PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"
### Опция: zabbix.startPollers
# Количество рабочих потоков для запуска.
#
# Обязательный: нет
# Диапазон: 1-1000
# По умолчанию:
# START_POLLERS=5
### Опция: zabbix.timeout
# Как долго ждать сетевых операций.
#
# Обязательный: нет
# Диапазон: 1-30
# По умолчанию:
# TIMEOUT=3
# раскомментируйте, чтобы включить удаленный мониторинг стандартных объектов JMX на самом Zabbix Java Gateway
#JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345
# -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
service zabbix-java-gateway restart
Добавление в автозагрузку
systemctl enable zabbix-java-gateway
2.
Установка пакета вручную:
Репозиторий заббикса выбираем свою ОС и версию zabbix
Скачиваем пакет
Код: Выделить всё
wget http://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix/zabbix-java-gateway_3.4.7-1+jessie_all.deb
dpkg -i zabbix-java-gateway_3.4.7-1+jessie_all.deb
dpkg -i ./, zabbix-java-gateway_3.4.7-1+jessie_all.deb
apt-get install ./,zabbix-java-gateway_3.4.7-1+jessie_all.deb
Файл конфигурации
nano /etc/zabbix/zabbix_java_gateway.conf
Перезапуск службы
service zabbix-java-gateway restart
Добавление в автозагрузку
systemctl enable zabbix-java-gateway
При установке из пакета управление происходит при помощи сервиса!
Старт
service zabbix-java-gateway start
Перезапуск службы
service zabbix-java-gateway restart
Остановка
service zabbix-java-gateway stop
3.
Установка из Исходного кода
Установка Java gateway
Обзор файлов Конфигурация Настройка
Более подробно про установку из исходного когда можно посмотреть тут Установка Заббикс 4.2 из исходного кода
Скачиваем
Код: Выделить всё
wget https://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix/zabbix_3.4.7.orig.tar.gz
rm -f zabbix_3.4.7.orig.tar.gz - удаляем архив
cd /root/zabbix-3.4.7/
--enable-java Включить сборку Zabbix Java gateway
./configure --enable-java --prefix=$PREFIX
./configure --enable-java
make
make install
Если установка происходила при помощи исходного кода , то управление будет при помощи 2х скриптов!
Настраиваем ZABBIX JAVA
Пути на настройки могут различаться проверьте с корня диском поиском куда у вас установилось zabbix_java
find ./ -name zabbix_java
./usr/local/sbin/zabbix_java
Оф. Настройки Zabbix Java gateway
Задаем настройки
nano /usr/local/sbin/zabbix_java/settings.sh
или
nano /sbin/zabbix_java/settings.sh
Предлагается настроить следующие параметры:
LISTEN_IP="192.168.175.111"
LISTEN_PORT=10052
PID_FILE="/tmp/zabbix_java.pid"
START_POLLERS=5
settings.sh у меня настроен так
Код: Выделить всё
#Это файл конфигурации для Zabbix Java Gateway..
#Он создается сценариями startup.sh и shutdown.sh..
### Опция: zabbix прослушивает IP zabbix.listenIP
# IP-адрес для прослушивания.
#
# Обязательный: нет
# По умолчанию:
# LISTEN_IP="0.0.0.0"
### Опция: zabbix прослушивает порт zabbix.listenPort
# Порт для прослушивания.
#
# Обязательный: нет
# Диапазон: 1024-32767
# По умолчанию:
# LISTEN_PORT=10052
### Опция zabbix.pidFile
# Имя PID-файла.
# Если опущено, Zabbix Java Gateway запускается как консольное приложение.
#
# Обязательный: нет
# По умолчанию:
# PID_FILE=
PID_FILE="/tmp/zabbix_java.pid"
### Опция: zabbix.startPollers
# Количество рабочих потоков для запуска.
#
# Обязательный: нет
# Диапазон: 1-1000
# По умолчанию:
# START_POLLERS=5
### Опция: zabbix.timeout
# Как долго ждать сетевых операций.
#
# Обязательный: нет
# Диапазон: 1-30
# По умолчанию:
# TIMEOUT=3
# раскомментируйте, чтобы включить удаленный мониторинг стандартных объектов JMX на самом Zabbix Java Gateway
#JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345
# -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
или
nano /sbin/zabbix_java/startup.sh - скрипт запуска
startup.sh
Код: Выделить всё
#!/bin/sh
cd `dirname $0`
. ./settings.sh
if [ -n "$PID_FILE" -a -f "$PID_FILE" ]; then
PID=`cat "$PID_FILE"`
if ps -p "$PID" > /dev/null 2>&1; then
echo "Zabbix Java Gateway уже запущен"
exit 1
fi
rm -f "$PID_FILE"
fi
JAVA=${JAVA:-java}
JAVA_OPTIONS="$JAVA_OPTIONS -server"
if [ -z "$PID_FILE" ]; then
JAVA_OPTIONS="$JAVA_OPTIONS -Dlogback.configurationFile=logback-console.xml"
fi
CLASSPATH="lib"
for jar in lib/*.jar bin/*.jar; do
CLASSPATH="$CLASSPATH:$jar"
done
ZABBIX_OPTIONS=""
if [ -n "$PID_FILE" ]; then
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dzabbix.pidFile=$PID_FILE"
fi
if [ -n "$LISTEN_IP" ]; then
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dzabbix.listenIP=$LISTEN_IP"
fi
if [ -n "$LISTEN_PORT" ]; then
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dzabbix.listenPort=$LISTEN_PORT"
fi
if [ -n "$START_POLLERS" ]; then
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dzabbix.startPollers=$START_POLLERS"
fi
if [ -n "$TIMEOUT" ]; then
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dzabbix.timeout=$TIMEOUT"
fi
tcp_timeout=${TIMEOUT:=3}000
ZABBIX_OPTIONS="$ZABBIX_OPTIONS -Dsun.rmi.transport.tcp.responseTimeout=$tcp_timeout"
COMMAND_LINE="$JAVA $JAVA_OPTIONS -classpath $CLASSPATH $ZABBIX_OPTIONS com.zabbix.gateway.JavaGateway"
if [ -n "$PID_FILE" ]; then
# проверьте, что файл PID может быть создан
touch "$PID_FILE"
if [ $? -ne 0 ]; then
echo "Zabbix Java Gateway не запустился: невозможно создать файл PID"
exit 1
fi
# запускаем шлюз и выводим в консоль красивые ошибки
STDOUT=`$COMMAND_LINE & echo $! > "$PID_FILE"`
if [ -n "$STDOUT" ]; then
echo "$STDOUT"
fi
# убедиться, что шлюз успешно запущен
PID=`cat "$PID_FILE"`
ps -p "$PID" > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Zabbix Java Gateway не запустился"
rm -f "$PID_FILE"
exit 1
fi
else
exec $COMMAND_LINE
fi
или
nano /sbin/zabbix_java/shutdown.sh - скрипт завершения
shutdown.sh
Код: Выделить всё
#!/bin/sh
cd `dirname $0`
. ./settings.sh
if [ -n "$PID_FILE" ]; then
if [ -f "$PID_FILE" ]; then
PID=`cat "$PID_FILE"`
if ps -p "$PID" > /dev/null 2>&1; then
kill "$PID"
for i in 1 2 3 4 5; do
sleep 1
ps -p "$PID" > /dev/null 2>&1
if [ $? -ne 0 ]; then
exit 0
fi
done
echo "Zabbix Java Gateway не остановился"
exit 1
fi
rm -f "$PID_FILE"
fi
echo "Zabbix Java Gateway не работает"
exit 1
else
echo "Zabbix Java Gateway не настроен как демон: переменная \$PID_FILE не установлена"
exit 1
fi
/usr/local/sbin/zabbix_java/startup.sh - запуск
/usr/local/sbin/zabbix_java/shutdown.sh - стоп
или
/sbin/zabbix_java/startup.sh - запуск
/sbin/zabbix_java/shutdown.sh - стоп
Запускаем
/usr/local/sbin/zabbix_java/startup.sh
Настройка конфигурации Zabbix Server:
nano /usr/local/etc/zabbix_server.conf
Параметры
JavaGateway=192.168.175.111
JavaGatewayPort=10052
StartJavaPollers=5
Рекомендуется выставить значение StartJavaPollers меньшим или равным START_POLLERS, в противном случае могут возникнуть ситуации, когда потоков Java gateway может не хватить для обслуживания входящих запросов; в таких случаях Java gateway использует ThreadPoolExecutor.CallerRunsPolicy, что означает, что основной поток будет обрабатывать входящий запрос и временно не будет принимать никакие новые запросы.
service zabbix-server restart - перезапуск заббикс сервера для применения настроек
Некоторые возможные пути расположения zabbix_java
/etc/init.d/zabbix-java-gateway
/etc/logrotate.d/zabbix-java-gateway
/usr/sbin/zabbix_java
/root/zabbix-3.4.6/src/zabbix_java
/usr/share/doc/zabbix-java-gateway
/usr/share/zabbix-java-gateway
Через прокси На стороне Узла
Приложению не требуется никакого дополнительного программного обеспечения, оно просто должно быть запущено с опцией командной строки -Dcom.sun.management.jmxremote Tomcat — контейнер сервлетов с открытым исходным кодом, разрабатываемый Apache Software Foundation. Реализует спецификацию сервлетов, спецификацию JavaServer Pages и JavaServer Faces. Написан на языке Java. Tomcat позволяет запускать веб-приложения и содержит ряд программ для самоконфигурирования.
JMX мониторинг zabbix Включение удаленного JMX мониторинга для Java приложений
Еще примеры настроек:
habr Непрерывный мониторинг JVM с помощью Zabbix
Tomcat JMX под Windows
Tomcat JMX под Windows
Показать
Отредактировать файл bin/setenv.bat следующим образом:
set CATALINA_OPTS=%CATALINA_OPTS% ^
-Dcom.sun.management.jmxremote ^
-Djava.rmi.server.hostname=192.168.10.10 ^
-Dcom.sun.management.jmxremote.ssl=false ^
-Dcom.sun.management.jmxremote.port=7777 ^
-Dcom.sun.management.jmxremote.authenticate=true ^
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password ^
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access
Здесь в параметре java.rmi.server.hostname необходимо указать реальный IP адрес или DNS имя компьютера, на котором запущен сервер, в параметре com.sun.management.jmxremote.port - порт для подключения инструментов JMX.
Отредактировать файл conf/jmxremote.access. Он должен содержать имена пользователей, которые будут подключаться к JMX, и их уровень доступа. Например:
admin readwrite
Отредактировать файл conf/jmxremote.password. Он должен содержать пароли пользователей JMX, например:
admin admin
Файл паролей должен иметь разрешение на чтение только для пользователя, от имени которого работает сервер Tomcat. Настроить права можно следующим образом:
Открыть командную строку и перейти в каталог conf.
Выполнить команду:
cacls jmxremote.password /P "domain_name\user_name":R
где domain_name\user_name - домен и имя пользователя.
После выполнения данной команды файл в Проводнике будет отмечен изображением замка.
Если Tomcat установлен как служба Windows, то для службы должен быть задан вход в систему с учетной записью, имеющей права на файл jmxremote.password. Кроме того, следует иметь в виду, что в этом случае файл bin/setenv.bat не используется, и соответствующие параметры запуска JVM должны быть заданы в приложении, настраивающем службу.
set CATALINA_OPTS=%CATALINA_OPTS% ^
-Dcom.sun.management.jmxremote ^
-Djava.rmi.server.hostname=192.168.10.10 ^
-Dcom.sun.management.jmxremote.ssl=false ^
-Dcom.sun.management.jmxremote.port=7777 ^
-Dcom.sun.management.jmxremote.authenticate=true ^
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password ^
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access
Здесь в параметре java.rmi.server.hostname необходимо указать реальный IP адрес или DNS имя компьютера, на котором запущен сервер, в параметре com.sun.management.jmxremote.port - порт для подключения инструментов JMX.
Отредактировать файл conf/jmxremote.access. Он должен содержать имена пользователей, которые будут подключаться к JMX, и их уровень доступа. Например:
admin readwrite
Отредактировать файл conf/jmxremote.password. Он должен содержать пароли пользователей JMX, например:
admin admin
Файл паролей должен иметь разрешение на чтение только для пользователя, от имени которого работает сервер Tomcat. Настроить права можно следующим образом:
Открыть командную строку и перейти в каталог conf.
Выполнить команду:
cacls jmxremote.password /P "domain_name\user_name":R
где domain_name\user_name - домен и имя пользователя.
После выполнения данной команды файл в Проводнике будет отмечен изображением замка.
Если Tomcat установлен как служба Windows, то для службы должен быть задан вход в систему с учетной записью, имеющей права на файл jmxremote.password. Кроме того, следует иметь в виду, что в этом случае файл bin/setenv.bat не используется, и соответствующие параметры запуска JVM должны быть заданы в приложении, настраивающем службу.
Я включил следующий параметр в remote tomcat catalina.sh:
-Djava.rmi.server.hostname=<host ip>
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9004 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=1616
-Dcom.sun.management.jmxremote.rmi.port=1616
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=localhost
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcatalina.home=d:\sitex\tomcat7
-Dcatalina.base=d:\sitex\tomcat7
-Djava.endorsed.dirs=d:\sitex\tomcat7\endorsed
-Djava.io.tmpdir=d:\sitex\tomcat7\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=d:\sitex\tomcat7\conf\logging.properties
-Djava.rmi.server.hostname=192.168.621.56
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.host=localhost
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.rmi.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.local.only=false
С паролем
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=$CATALINA_BASE/conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access
Максоры в шаблон
{$AJP_PORT} 8009
{$CONNECTOR_MODE} bio
{$HTTPS_PORT} 8443
{$HTTP_PORT} 8080
jmx["Catalina:type=ThreadPool,name=\"http-bio-8080\"",maxThreads]
jmx["Catalina:type=ThreadPool,name=\"http-bio-8080\"",currentThreadsBusy]
jmx["Catalina:type=ThreadPool,name=\"http-bio-8080\"",currentThreadCount]
jmx["Catalina:type=Server",serverInfo]
jmx["Catalina:type=ProtocolHandler,port=8080",compression]
Изменить
Properties in creation order type=GlobalRequestProcessor,name="http-apr-8080"
jmx["Catalina:type=GlobalRequestProcessor,name=\"http-apr-8080\"",bytesReceived]
Instead of
jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",bytesReceived]
bio 8080
jmx["Catalina:type=GlobalRequestProcessor,name=\"http-{$CONNECTOR_MODE}-{$HTTP_PORT}\"",bytesReceived]
you should use:
jmx["Catalina:type=GlobalRequestProcessor,name=\"http-bio-8080\"",bytesReceived]
Для тестирования с Windows можно скачать JDK
Например тут Загрузка Java или oracle technologies
Для запуска при старте сервера или при зависании нужно делать старт или рестарт.
Для этого сделано действие на перезапуск java в zabbix , при срабатывании триггера JMX недоступно
Выполняются команды перезапуска/запуска
/sbin/zabbix_java/shutdown.sh
/sbin/zabbix_java/startup.sh