Как включить JMX в Websphere?

Я хотел бы использовать JConsole для мониторинга моего приложения Websphere, но я не уверен, как включить JMX.

10.12.2008 18:39:02
12 ОТВЕТОВ

Следующая информация предназначена для Websphere 6.1 в Windows.

Прежде всего, магический URL для подключения к серверу MBean:

service:jmx:iiop://<host>:<port>/jndi/JMXConnector

Если у вас установлена ​​установка Websphere по умолчанию, номер порта JNDI, скорее всего, будет 2809, 2810, ... в зависимости от того, сколько серверов установлено в одной системе и какой конкретный сервер вы хотите подключить. Чтобы быть уверенным, при запуске Websphere, проверьте журналы, поскольку он выведет строку вроде

0000000a RMIConnectorC A   ADMC0026I: The RMI Connector is available at port 2810

Если вы не получили эту строку, откройте консоль администратора Websphere и перейдите к

Серверы приложений> server1> Службы администрирования> JMX-коннекторы

чтобы увидеть, нужно ли вам добавить или изменить конфигурацию.

Вторым важным моментом информации является то, что при выполнении JMX с сервером всегда требуется следующий JAR:

com.ibm.ws.admin.client_6.1.0.jar

Вы можете найти этот JAR в runtimesкаталоге Websphere. Что бы вы ни делали, будь то программный доступ к MBeans в Websphere, использование JConsole и т. Д., Используйте магический URL-адрес и всегда включайте этот JAR-файл.

В оставшейся части этого ответа предположим, что Websphere установлен в D: \ prog \ was61.

Чтобы запустить JConsole, введите следующее:

D:\prog\was61\java\bin>jconsole -J-Djava.class.path=d:\prog\was61\java\lib\tools.jar;D:\prog\was61\runtimes\com.ibm.ws.admin.client_6.1.0.jar

Затем перейдите на вкладку «Дополнительно» и введите волшебный URL JMX. Нажмите connect, и вы должны увидеть, что MBeans появится.

Использование Sun JDK - это совсем другое дело. Вам нужен один дополнительный JAR, который находится в библиотеке IBM JDK, но не в Sun (ibmorb.jar), и, возможно, вам подойдет следующая команда:

C:\Program Files\Java\jdk1.5.0_11\bin>jconsole -J-Djava.class.path="c:\Program Files\Java\jdk1.5.0_11\lib\jconsole.jar";"c:\Program Files\Java\jdk1.5.0_11\lib\tools.jar";D:\prog\was61\runtimes\com.ibm.ws.admin.client_6.1.0.jar;D:\prog\was61\java\jre\lib\ibmorb.jar

Я говорю, может быть, потому что это не сработало для меня. Я получил хорошее сообщение об ошибке jndiUnavailCommErr, так как он ожидал что-то на порту 2809, в то время как моя установка Websphere прослушивает 2810, хотя я правильно указал порт 2810 в URL-адресе JMX. Но если вы адаптируете пути к вашему Sun JDK, это может сработать для вас. Это самое близкое мне соединение с Websphere с использованием Sun JDK.

Последнее замечание: я попробовал решение, основанное на RMI, также есть доступный соединитель SOAP, но не пробовал его.

Как всегда с J2EE, Websphere и прочим: удачи, он вам понадобится.

32
12.07.2012 20:22:34
+1 работал как шарм. Я прошу прощения за боль, которую вы, должно быть, прошли :)
Andre Steingress 28.04.2011 09:22:06
+1 за «удачи, тебе это понадобится» ... Кстати, у меня есть дерево с объектом, но я не вижу свойства из-за ADMN0022E (отсутствуют права или что-то в этом роде) Есть идеи?
poussma 12.03.2014 08:14:12
Возможно, вам придется добавить jconsole.jarв путь к классам также с помощью IBM jconsole.
Flavio 27.05.2014 07:51:19
«Волшебный URL» service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmiработал для меня
Joost 30.06.2015 05:15:53
Я сделал все это, все еще не работал. Я получил вкладку MBeans, но не память.
Berlin Brown 9.10.2016 23:41:54

Посмотрите на следующий простой способ подключения jconsole к Websphere 6.1.

У меня работает (Solaris, был 6.1, Sun JVM), также работает с Visual VM

Наслаждайтесь !

1
23.02.2009 18:09:02
Можно ли по-прежнему получать доступ к компонентам WebSphere JMX с помощью этого решения, чтобы получать информацию о сервлетах и ​​пулах соединений?
eljenso 23.02.2009 18:29:17
Ссылка здесь, и метод работает: ecovations.de/blog/?p=99 . Не могу подключиться с удаленной jconsole, хотя ... не знаю почему. Только локальная консоль.
djangofan 15.06.2012 18:41:23

Я не мог заставить это работать. Все, что я получил, было

Соединение с именем пользователя @ service: jmx: iiop // localhost: 2809 / jndi / JMXConnector не удалось. Хотите попробовать еще раз?

Тем не менее, я сделал это, сделав следующее:

  1. Добавьте «-Djavax.management.builder.initial = -Dcom.sun.management.jmxremote» к общему аргументу JVM.
  2. Добавьте эти строки в WebSphere / AppServer / java / jre / lib / management / management.properties
com.sun.management.jmxremote.port = 9999
com.sun.management.jmxremote.authenticate = ложь
com.sun.management.jmxremote.ssl = ложь

Но никто из полезных mbeans не появляется ..?

5
23.07.2009 14:51:47
@ Томми - ты получил что-то интересное? Я имею в виду без всяких дополнительных банок / IIOP Mumbo-Jumbo ...
Chris 19.06.2013 14:13:01
@ Крис Нет, никогда не заставлял его работать так, как я хотел. Закончилось использованием сервлета PMI, поставляемого с WAS, затем синтаксического анализа xml и построения графика с помощью Munin. Работает отлично
Tommy 2.07.2013 15:04:46

Я обнаружил, что для подключения к WAS 6.1 с использованием JConsole Sun JDK, в дополнение к com.ibm.ws.admin.client_6.1.0.jarфайлу JAR, мне нужно было также включить следующие 3 JAR-файла в путь загрузочного класса при запуске JConsole: -

ibmorbapi.jar
ibmorb.jar
ibmcfw.jar

Их можно найти в каталоге java \ jre \ lib веб-сферы.

Например, в Windows, если вы скопируете все четыре JAR, перечисленных выше, в каталог по вашему выбору (я скопировал их в C: \ packages \ was61-jmx в приведенном ниже примере), вы можете использовать пакетный файл, подобный следующему запустить JConsole: -

set JAVA_HOME=C:\Progra~1\Java\jdk1.5.0_20
set WAS6.1_JARS=C:\packages\was61-jmx

set BOOTJARS=%WAS6.1_JARS%\ibmorbapi.jar
set BOOTJARS=%BOOTJARS%;%WAS6.1_JARS%\ibmorb.jar
set BOOTJARS=%BOOTJARS%;%WAS6.1_JARS%\ibmcfw.jar

set CLASSPATH=%WAS6.1_JARS%\com.ibm.ws.admin.client_6.1.0.jar
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\tools.jar
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\jconsole.jar


%JAVA_HOME%\bin\jconsole  -J-Xbootclasspath/p:%BOOTJARS% -J-Djava.class.path=%CLASSPATH%

Это сработало для меня для jdk 1.5 и 1.6 версий Sun Jconsole.

4
9.10.2009 19:03:51

Может быть, это немного оффтоп, но я нашел способ подключения к серверу WAS 7.0 JMX из JConsole. Никакой настройки сервера не требуется, никакого AppClient, только некоторые JAR-файлы и небольшая настройка клиента.

Используйте следующий скрипт

@echo off 
set HOST=<host>
set PORT=2809

set WAS_HOME=D:/Programy/IBM/WebSphere/AppServer

set THIS_DIR=E:/Home/Bogus/Pulpit

set CLIENTSAS=-Dcom.ibm.CORBA.ConfigURL=file:/%THIS_DIR%/sas.client.props
set PROVIDER=-Djava.naming.provider.url=corbaname:iiop:%HOST%:%PORT% 

set PROPS=
set PROPS=%PROPS% %CLIENTSAS%
set PROPS=%PROPS% %PROVIDER%

set CLASSPATH=
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\java\lib\tools.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\runtimes\com.ibm.ws.admin.client_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\runtimes\com.ibm.ws.ejb.thinclient_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\runtimes\com.ibm.ws.orb_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\java\lib\jconsole.jar

set URL=service:jmx:iiop://%HOST%:%PORT%/jndi/JMXConnector

@echo on

:: %WAS_HOME%\java\bin\
java -classpath %CLASSPATH% %PROPS% sun.tools.jconsole.JConsole %URL%

Если на целевом сервере отключена административная защита, закомментируйте строки CLIENTSAS и PROVIDER.

Если защита включена, вам также потребуется файл sas.client.props, который будет помещен в каталог THIS_DIR. Файл шаблона находится в каталоге WAS_profile \ properties. Вам придется сделать небольшую настройку. Вот выдержка из моего sas.client.props

com.ibm.CORBA.securityEnabled=true

com.ibm.CORBA.authenticationTarget=BasicAuth
com.ibm.CORBA.authenticationRetryEnabled=true
com.ibm.CORBA.authenticationRetryCount=3
com.ibm.CORBA.validateBasicAuth=true
com.ibm.CORBA.securityServerHost=
com.ibm.CORBA.securityServerPort=
com.ibm.CORBA.loginTimeout=300
com.ibm.CORBA.loginSource=prompt

com.ibm.CORBA.loginUserid=
com.ibm.CORBA.loginPassword=

com.ibm.CORBA.krb5ConfigFile=
com.ibm.CORBA.krb5CcacheFile=

com.ibm.CSI.performStateful=true

com.ibm.CSI.performClientAuthenticationRequired=false
com.ibm.CSI.performClientAuthenticationSupported=true

# SET ALL THE FOLLOWING VALUES TO FALSE

com.ibm.CSI.performTLClientAuthenticationRequired=false
com.ibm.CSI.performTLClientAuthenticationSupported=false

com.ibm.CSI.performTransportAssocSSLTLSRequired=false
com.ibm.CSI.performTransportAssocSSLTLSSupported=false

com.ibm.CSI.performMessageIntegrityRequired=false
com.ibm.CSI.performMessageIntegritySupported=false

com.ibm.CSI.performMessageConfidentialityRequired=false
com.ibm.CSI.performMessageConfidentialitySupported=false

# COMMENT THIS OUT
#com.ibm.ssl.alias=DefaultSSLSettings


com.ibm.CORBA.requestTimeout=180

ХОРОШО :)

После подключения появится всплывающее окно входа в систему. Введите имя пользователя и пароль администратора (user & pw не требуются в диалоговом окне подключения в JConsole)

Вы можете запустить JConsole из IBM JDK или Sun JDK. Для IBM никаких других настроек не требуется. Однако для Sun вам может понадобиться поместить файл orb.properties в ваш домашний каталог. Файл можно найти в com.ibm.ws.ejb.thinclient_7.0.0.jar.

6
12.02.2010 16:47:05

Вы можете найти правильный порт для подключения на сервере приложений WebSphere в разделе Связь -> Порты. Порт, связанный с BOOTSTRAP_ADDRESS, позволяет вам подключаться.

1
14.05.2010 15:18:43

Это просто. Просто запустите Websphere со следующими параметрами JMX:

-Djavax.management.builder.initial= 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=1099

Затем запустите JConsole или VisualVM и подключитесь к localhost: 1099

Так как мне не разрешено публиковать пробный снимок экрана, я публикую информацию из визуальной «обзорной вкладки».

PID: 12568
Хост: localhost
Основной класс: <неизвестно>
Аргументы: <нет>
JVM: IBM J9 VM (2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20100808 (JIT включен)
J9VM - 20100629_60535_lHdSMr
JIT - 20100623_16197_r8
GC - 20100211_AA)
Java: версия 1.5.0, производитель IBM Corporation
Домашняя страница Java: C: \ Program Files \ IBM \ SDP \ runtimes \ base_v61 \ java \ jre
Флаги JVM: <нет>
Дамп кучи на OOME: отключен
9
13.01.2012 02:09:02
это помогло мне, мне пришлось добавить эти же параметры в консоль websphere Servers/Application servers/server1/Java y gestión de procesos/Definición de proceso/Máquina virtual Java/Argumentos de JVM genéricos(извините, это на испанском, я тоже предпочитаю английскую версию, но кто-то на ibm должен был подумать, что мы, носители испанского языка, предпочли бы безбожный перевод) , надеюсь, что это все равно кому-то поможет
jambriz 15.03.2012 18:40:04
На самом деле, это не работает. Я попробовал это, добавив эти параметры в параметр D_ARGS в файле startServer.sh. Затем подключается на 1099, и он показывает только данные для процесса администрирования websphere и не отображает информацию для процесса приложения.
djangofan 15.06.2012 17:38:40
Имеет смысл, что это не будет работать, потому что WebSphere работает на IBM JDK и, следовательно, пакеты в com.sun. * Не существуют, верно?
djangofan 13.11.2012 20:54:47
работал для меня ... пожалуйста, обратите внимание, что после -Djavax.management.builder.initial = добавить пробел
Samih A 21.10.2013 09:59:53

Вы не можете установить требуемые системные свойства через консоль WAS, поскольку она не позволяет указывать пустые значения. Вместо этого вы должны вставить следующее в конец «server.xml»:

<systemProperties xmi:id="Property_1315391623828" name="com.sun.management.jmxremote" value="" required="false"/>    <systemProperties xmi:id="Property_1315327918140" name="com.sun.management.jmxremote.port" value="1235" required="false"/>
<systemProperties xmi:id="Property_1315327935281" name="com.sun.management.jmxremote.authenticate" value="false" required="false"/>
<systemProperties xmi:id="Property_1315327948046" name="com.sun.management.jmxremote.ssl" value="false" required="false"/>
<systemProperties xmi:id="Property_1315390852859" name="javax.management.builder.initial" value="" required="false"/>
2
7.09.2011 12:41:27

Вы можете попробовать следующее, он использует адаптер протокола SOAP. Я думаю, что это максимально возможная конфигурация.

#!/bin/sh 
current_dir=`dirname "$0"`

HOSTNAME=host.fqdn
PORT=2809

WAS_HOME=/opt/IBM/WebSphere/AppServer
WAS_PROFILE=$WAS_HOME/profiles/AppSrv01
WAS_RUNTIMES=$WAS_HOME/runtimes

WAS_LIB=$WAS_HOME/java/lib
JAVA_HOME=$WAS_HOME/java



CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/jconsole.jar:$WAS_RUNTIMES/com.ibm.ws.admin.client_7.0.0.jar:$WAS_LIB/ibmcfw.jar 

TARGET=service:jmx:soap://$HOSTNAME:$PORT/jndi/JMXConnector

CP="-J-Djava.class.path=$CLASSPATH"
SSL_SERVER_KEY="-J-Djavax.net.ssl.keyStore=$WAS_PROFILE/etc/DummyServerKeyFile.jks -J-Djavax.net.ssl.keyStorePassword=WebAS"
SSL_TRUST_STORE="-J-Djavax.net.ssl.trustStore=$WAS_PROFILE/etc/DummyServerTrustFile.jks -J-Djavax.net.ssl.trustStorePassword=WebAS"
SSL_OPTS="-J-Dcom.ibm.SSL.ConfigURL=file:$WAS_PROFILE/properties/ssl.client.props"
SOAP_OPTS="-J-Dcom.ibm.SOAP.ConfigURL=file:$WAS_PROFILE/properties/soap.client.props"
WAS_OPTS="-J-Dwas.install.root=$WAS_HOME -J-Djava.ext.dirs=$WAS_HOME/plugins:$WAS_HOME/lib:$WAS_HOME/plugins/com.ibm.ws.security.crypto_6.1.0:$WAS_HOME/lib:$JAVA_HOME/jre/lib/ext"

COMMAND="$JAVA_HOME/bin/jconsole $CP $SSL_SERVER_KEY $SSL_TRUST_STORE $SSL_OPTS $SOAP_OPTS $WAS_OPTS $TARGET"

exec $COMMAND

Кредиты моему коллеге Йероену за первоначальную версию скрипта с использованием IIOP (я пробую SOAP в надежде, что он будет работать с Hyperic)

0
4.10.2011 14:01:17

Я также боролся за несколько часов, чтобы заставить это работать, и я нашел решение. Ключевой вопрос здесь заключается в SSL - клиент должен использовать правильные ключи для установления SSL-соединения с сервером. Это включает указание на правильное расположение хранилища доверенных сертификатов и пароль хранилища доверенных сертификатов, как описано здесь . Лучший способ настроить среду - вызвать setupCmdLine.sh (в Windoze это setupCmdLine.bat) для соответствующего сервера, а затем вызвать jconsole следующим образом:

#!/bin/bash

WAS_HOME=/opt/IBM/WebSphere/AppServer

# setup server-specific env variables
. $WAS_HOME/profiles/AppSrv01/bin/setupCmdLine.sh

HOST=localhost
PORT=9100

CLASSPATH=$JAVA_HOME/lib/jconsole.jar
CLASSPATH=$CLASSPATH:$WAS_HOME/runtimes/com.ibm.ws.admin.client_8.5.0.jar
CLASSPATH=$CLASSPATH:$WAS_HOME/runtimes/com.ibm.ws.ejb.thinclient_8.5.0.jar
CLASSPATH=$CLASSPATH:$WAS_HOME/runtimes/com.ibm.ws.orb_8.5.0.jar

$JAVA_HOME/bin/jconsole \
    -J-Djava.class.path=$CLASSPATH\
    -J$CLIENTSAS\
    -J$CLIENTSSL\
    service:jmx:iiop://$HOST:$PORT/jndi/JMXConnector
3
7.09.2012 06:27:00

Хорошо. Есть два способа сделать это: один с использованием соединителя SOAP, другой с использованием соединителя RMi / IIOP.

Для SOAP вам нужно выполнить настройку WAS, чтобы добавить новый PORT и другие аргументы JVM, описанные выше. Но все, что вы получаете, когда JConsole подключается к серверу, - это основные метрики JVM.

С RMI вы получаете все, что предоставляет WebSphere. Все MBeans! Единственное предостережение: если ваша WAS JVM находится за брандмауэром - вам нужно открыть порт, чтобы получить к нему доступ с вашего рабочего стола. Но вы можете запустить это через X11 прямо с хоста сервера приложений!

Я использовал JDK7 на своем рабочем столе Windows XP для подключения к WAS 7.0 с включенной глобальной безопасностью. Я взял сценарий из ответа № 4 выше и использовал его в качестве отправной точки. Вот моя версия этого:

@echo off 
set HOST=<put hostname here>
set PORT=<put JVM's BOOTSTRAP_PORT here>

set WAS_HOME=C:\jconsole
set JAVA_HOME=C:\glassfish3\jdk7
set PROPS_DIR=C:\jconsole\properties

set CLIENTSAS=-Dcom.ibm.CORBA.ConfigURL=file:/%PROPS_DIR%/sas.client.props
set CLIENTSSL=-Dcom.ibm.SSL.ConfigURL=file:/%PROPS_DIR%/ssl.client.props
set PROVIDER=-Djava.naming.provider.url=corbaname:iiop:%HOST%:%PORT% 

set PROPS=
set PROPS=%PROPS% %CLIENTSAS% %CLIENTSSL% %PROVIDER%

set CLASSPATH=
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\com.ibm.ws.admin.client_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\com.ibm.ws.ejb.thinclient_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\com.ibm.ws.orb_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\jconsole.jar
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\tools.jar

set URL=service:jmx:iiop://%HOST%:%PORT%/jndi/JMXConnector

@echo on

%JAVA_HOME%\bin\java -classpath %CLASSPATH% %PROPS% sun.tools.jconsole.JConsole %URL%

WAS_HOME - это просто каталог, в котором у меня есть те JAR-файлы IBM, которые я скачал из моих двоичных файлов WebSphere (из Solaris). Я также создал два подкаталога там: свойства и хранилище ключей . В поддиректории свойств я поместил мои sas.client.props и ssl.client.props, также загруженные из рабочей ячейки WAS7 (я снял ее с DM). В подкаталог хранилища ключей я поместил файлы key.p12 и trust.p12, также загруженные из ячейки WAS7. Убедитесь, что у них есть правильные сертификаты! Если те из WAS / etc не работают - попробуйте те из $ {CONFIG_ROOT} / cell /. Измените файл ssl.client.props, чтобы убедиться, что путь к файлам p12 правильный!

Теперь, чтобы это работало, вы также должны загрузить следующее из ваших двоичных файлов WAS:

WAS_BIN_HOME/java/jre/lib/endorsed

Поместите весь этот каталог в каталог jre / lib вашего SUN JDK . Это учитывает ошибки провайдера IBM JSSE2 и тому подобное. Кроме того, получите следующие три файла из WAS_BIN_HOME / java / jre / lib / security :

java.security
local_policy.jar
US_export_policy.jar

Я только что переписал те, что шли с JDK от SUN, с теми, что я взял у IBM.

Также в sas.client.props обязательно введите ID пользователя и пароль, аналогично тому, как вы это делаете в soap.client.props. Вы можете закодировать пароль таким же образом. Это необходимо для преодоления BasicAuth Global Security.

Я думаю это все. PS Я не профессионал в Windows, поэтому, если есть более понятный способ сделать это - пожалуйста, поделитесь им.

0
28.03.2013 17:46:56

от http://malliktalksjava.in/2010/07/26/enable-jmx-remote-port-in-websphere/

  1. Войдите в консоль администратора веб-сферы любого профиля (сервера), ярлык будет доступен в меню «Пуск».

    • Развертывание PerfServletApp.ear приложения , если не развернут уже.
    • Проверьте , развернут ли PerfServletApp.ear :
      • Exapnd Приложения +> Типы приложений +> WebSphere Enterpise Приложения
      • Если нет, нажмите Новое приложение .
    • Перейдите из каталога WebSphere -> AppServer -> InstallableApps .
    • (СЛЕДУЙТЕ ШАГАМ.)
  2. Включите данные PMI и включите всю статистику.

    • На левой панели (внизу) выберите Мониторинг и настройка +> Инфраструктура мониторинга производительности (PMI).
    • На вкладке « Конфигурация » включите PMI .
    • На этой вкладке « Конфигурация » и « Среда выполнения » задайте « Вся статистика» . Затем сохраните изменения.
  3. Установить аргумент JVM

    • В разделе Серверы +> Типы серверов +> Серверы приложений WebSphere , затем -> [имя-сервера] +> Определение процесса -> Виртуальная машина Java
    • Установите универсальный аргумент jvm для включения

      -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote

    в показывает список серверов. нажмите на сервер, который вы хотите.

    • В правой панели -> Инфраструктура сервера -> Java и управление процессами нажмите на Определение процесса , снова на вкладке Дополнительные свойства конфигурации выберите Виртуальная машина Java . поставьте -Djavax.management.builder.initial= -Dcom.sun.management.jmxremoteв поле Generic Jvm Argument и сохраните изменения.
  4. Чтобы включить удаленный порт JMX, откройте следующий файл свойств и добавьте следующий код. В [WebSphere-directory] \ AppServer \ java \ jre \ lib \ management \ management.properties добавьте:

    com.sun.management.jmxremote.port=9001
    com.sun.management.jmxremote.ssl=false
    com.sun.management.jmxremote.authenticate=false
  5. Сохраните основные данные, остановите сервер и запустите сервер для загрузки изменений.

2
21.07.2016 18:54:19