Logstash에서 Wildfly의 JMX 정보 얻기
9257 단어 ElasticsearchWildflyLogstash
소개
Logstash에서 Wildfly JMX 정보를 얻는 환경을 구축하고 사용해보십시오.
환경
사용한 환경은 다음과 같습니다.
사용한 환경은 다음과 같습니다.
「 ElasticStack 7.8 환경 구축 」로 구축한 환경을 이용하고 있습니다.
Wildfly를 원격에서 JMX로 연결할 수 있도록 설정
원격에서 JMX에 연결할 수 있도록 Wildfly를 설정합니다.
다음 구성 파일을 수정합니다.
먼저 원격 구성을 허용하기 위해 다음과 같이 [use-management-endpoint="true"]를 추가합니다.
standalone.xml
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
<expose-resolved-model/>
<expose-expression-model/>
<remoting-connector use-management-endpoint="true"/>
</subsystem>>
그런 다음 원격 연결을 허용하기 위해 다음과 같이 수정합니다.
"192.168.10.126"은 환경에 맞게 외부에서 연결할 수 있는 IP 주소를 지정합니다.
standalone.xml
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:192.168.10.126}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:192.168.10.126}"/>
</interface>
</interfaces>
마지막으로 Wildfly를 시작합니다.
부팅 후 jconsole을 사용하여 외부에서 연결할 수 있는지 확인합니다.
jconsole에서 Wildfly에 연결하는 경우 다음과 같이 jboss-cli-client.jar을 지정해야합니다.
다음 예제는 Windows에서 연결하는 경우의 명령입니다.
%JAVA_HOME%/bin/jconsole -J-Djava.class.path=%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/jconsole.jar;C:\jboss-cli-client.jar
jconsole에서 새 연결 대상을 지정합니다. 사용자 이름과 암호는 Wildfly로 미리 만든 사용자를 지정합니다.
연결할 수 있으면 jconsole은 다음과 같이 표시됩니다.
Logstash 설정
먼저 logstash-input-jmx를 설치하려면 다음 명령을 실행합니다.
# /usr/share/logstash/bin/logstash-plugin install logstash-input-jmx
실행 후 Wildfly JMX에 대한 설정을 만듭니다. 설정은 이하의 공식 사이트를 참고로 실시했습니다.
# /usr/share/logstash/bin/logstash-plugin install logstash-input-jmx
# vi /etc/logstash/conf.d/wildfly-jmx.conf
input {
jmx {
path => "/etc/logstash/jmx"
polling_frequency => 60
type => "jmx"
nb_thread => 4
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "wildflyjmx-%{+YYYY.MM.dd}"
}
}
위의 설정에서 JMX의 접속, 취득하는 데이터를 기재하는 설정의 패스를 지정했습니다. (/etc/logstash/jmx)
다음과 같은 JSON 파일을 새로 만듭니다.
"url"과 "host"가 중복되어 있지만 둘 다 설정하지 않으면 오류가 발생했으므로 그대로 두었습니다.
사실은 "url"이 없어도 접속할 수 있을 것입니다만, Wildfly의 경우는 프로토콜에 remote+http를 사용하고 있기 (위해)때문에, 이러한 설정으로 되어 있습니다.
queries의 부분이 JMX로 취득하는 데이터가 됩니다.
/etc/logstash/jmxconf
{
"url": "service:jmx:remote+http://192.168.10.126:9990",
"host" : "192.168.10.126",
"port" : 9990,
"username" : "testadmin",
"password": "XXXXXXXX!",
"alias" : "wildflyserver1",
"queries" : [
{
"object_name" : "jboss.as.expr:data-source=ExampleDS,subsystem=datasources,statistics=pool",
"attributes" : [ "ActiveCount", "AvailableCount" ],
"object_alias" : "DataSource.Pool"
} ]
}
구성 후 logstash 명령으로 설정이 올바른지 확인하십시오.
# /usr/share/logstash/bin/logstash --config.test_and_exit -f /etc/logstash/conf.d/wildfly-jmx.conf
[INFO ] 2020-08-03 10:48:03.357 [LogStash::Runner] Reflections - Reflections took 84 ms to scan 1 urls, producing 21 keys and 41 values
Configuration OK
[INFO ] 2020-08-03 10:48:03.922 [LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
문제가 없으면 logstash 명령으로 시작해보십시오.
# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/wildfly-jmx.conf
여기서 다음 오류가 발생했습니다.
[ERROR] 2020-08-04 05:23:25.083 [Ruby-0-Thread-15: :1] jmx - Unsupported protocol: remote+http
[ERROR] 2020-08-04 05:23:25.084 [Ruby-0-Thread-15: :1] jmx - javax.management.remote.JMXConnectorFactory.newJMXConnector(javax/management/remote/JMXConnectorFactory.java:359)
remote+http가 지원되지 않는다는 오류인 것 같습니다.
jconsole로 접속했을 때에 jboss-cli-client.jar를 지정했으므로, 마찬가지로 설정해 기동했는데 에러가 해소되었습니다.
# export LS_JAVA_OPTS=-Xbootclasspath/a:/opt/wildfly-20.0.1.Final/bin/client/jboss-cli-client.jar
# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/wildfly-jmx.conf
Kibana에서 JMX로 얻은 정보 표시
Kibana의 [Discover]에서 확인하면 다음과 같이 얻은 정보가 표시되었습니다.
다만, Jmx input plugin 에 이하와 같이 기재가 있었습니다만, metric_value_number가 아니고 metric_value_string이 되어 버렸습니다. 원인 불명.
When returned metrics value type is number/boolean it is stored in metric_value_number event field otherwise it is stored in metric_value_string event field.
참고
Reference
이 문제에 관하여(Logstash에서 Wildfly의 JMX 정보 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mkyz08/items/928ff9089ce971470ef0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)