ZabbixのJMX監視でWebLogicの監視はできます

ZabbixのWeblogic,JMX監視手順です。

Googleで "zabbix weblogic"と検索すると、最初に某割と有名なセキュリティ系企業のHPで「JMX監視で最新のWebLogicの監視できません」と表示されて、古いZabbixだろうとできないってことはないでしょと思ったので。

zabbix-java-gatewayのJAVAファイル編集しなくても、MBeanにアクセスしなくてもJMX監視自体はできます。
Weblogic 12.2.1.3.0の即席インストール手順も載せています。

#### 前提
・Zabbixサーバは既にZabbixインストール、設定済み
・WeblogicサーバはXで接続できる、またはGUIログインできること。
・ZabbixサーバとWeblogicサーバのselinux無効化
・今回のJMX監視で開放が必要なポート
　Zabbixサーバ側: 10052 Weblogicサーバ側: 12345

## ZabbixサーバにZabbix-Java-Gateway設定
※rootユーザからの作業です
### zabbix-java-gatewayインストール
```
インストール
yum install zabbix-java-gateway

起動
systemctl start zabbix-java-gateway
systemctl enable zabbix-java-gateway
```

### 設定編集
```
vi /etc/zabbix/zabbix_server.conf
※以下編集。

JavaGateway=127.0.0.1 ※zabbix-java-gatewayをzabbixと別サーバにする場合、gatewayサーバのIP
JavaGatewayPort=10052 ※デフォルトポート
StartJavaPollers=3 ※とりあえず3にしておく。
```
### サービス再起動
```
systemctl restart zabbix-server
systemctl restart zabbix-java-gateway
```

## 即席でWeblogicサーバインストール
※新しいWeblogic用サーバで作業。rootユーザからの作業です

### Oracle JDKインストール
以下よりライセンスに同意チェックマークを入れ、jdk-8u211-linux-x64.rpmをダウンロードします。
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
<img width="413" alt="キャプチャ4.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/8db1deb6-39b6-297f-2e5f-0b7fb32ee4b6.png">

ダウンロードしたrpmをサーバに転送し、インストールします。

```
yum localinstall jdk-8u211-linux-x64.rpm
rpm -ivh jdk-8u211-linux-x64.rpm
```

### JDK環境変数設定
```
vi /etc/profile.d/java.sh
※以下記載。

#!/bin/bash
JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
PATH=$JAVA_HOME/bin:$PATH
CATALINA_HOME=/opt/tomcat
export PATH JAVA_HOME CATALINA_HOME

読み込み
. /etc/profile.d/java.sh
```

### X設定
```
DISPLAY=:0.0; export DISPLAY
xhost +
```

### オラクルユーザ作成
```
useradd oracle
passwd oracle

スイッチ
su - oracle
```

### weblogicインストーラダウンロード
以下よりライセンスに同意チェックマークを入れ、とりあえずGenericインストーラをダウンロード。
http://www.oracle.com/technetwork/jp/middleware/weblogic/downloads/index.html
<img width="404" alt="キャプチャ9.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/4098cd92-f812-5b4d-90e0-6965dd994587.png">


oracleユーザのホームディレクトリにインストーラを転送する。

### Weblogicインストーラ実行
```
解凍
unzip fmw_12.2.1.3.0_wls_Disk1_1of1.zip

Oracleユーザ用に一応JAVA_HOME通しておく
echo "export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64" >> ~/.bashrc

読み込み
. ~/.bashrc

X設定(一応Oracleユーザでも)
DISPLAY=:0.0; export DISPLAY
xhost +

インストーラ実行
java -jar fmw_12.2.1.3.0_wls.jar
```
GUIが立ち上がる。とりあえずインベントリディレクトリはそのままで。
<img width="323" alt="キャプチャ3.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/9c546d39-60a0-2790-511d-aa9309be238b.png">

その後「次」か「インストール」を選択でいきます。OracleHomeはドロップダウンから選択できるやつで。
<img width="435" alt="キャプチャ4.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/bbc77f75-be99-322f-82e6-1754ffe080de.png">

Weblogiocインストールに続けて構成ウィザードが立ち上がる。立ち上がらなければ以下で実行する。

```
コンフィグ実行
/home/oracle/Oracle/Middleware/Oracle_Home/oracle_common/common/bin/config.sh
```
基本「次」をクリックでいいですが、とりあえずBasic Weblogicを選択。
<img width="345" alt="キャプチ7ャ.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/6291f465-7b2c-6bb7-e411-1424595f5eac.png">
パスワードも入力。
<img width="425" alt="キャプチャ6.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/912c3ad9-5053-dd09-9d7f-ce4eeab1dbb3.png">
↓画面だと「本番」選択してますが「開発モード」でOKです。
<img width="420" alt="キャプチャ7.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/e17b9b46-657a-616a-0acd-6225f705d481.png">
とりあえず管理サーバだけでOKかと。
<img width="430" alt="キャプチャ8.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/ee5f953b-6f14-a6ac-8760-641c811338c0.png">
SSLの設定も今回はいらないので、後は「次」をクリックし続け終了。

### 環境変数、クラスパス設定
```
MW_HOME設定
echo "export MW_HOME=/home/oracle/Oracle/Middleware/Oracle_Home" >> ~/.bashrc

WLS用変数設定
$MW_HOME/wlserver/server/bin/setWLSEnv.sh
※表示されたPATH,CLASSPATHをbashrcに記載

vi ~/.bashrc

再度読み込み
. ~/.bashrc
```

### 起動停止確認
```
cd $MW_HOME/user_projects/domains/base_domain/bin

起動
./startWebLogic.sh &

ブラウザにて以下指定。設定したID・パスワードでログインできるか確認。
http://WeblogicサーバのIP:7001/console

停止
./stopWebLogic.sh &
```

※その後zabbix-agentをインストールしZabbixサーバからエージェント監視可能な状態にすること(手順について割愛します)。

## WeblogicサーバのJMX監視設定

### ENVファイル編集
```
cd $MW_HOME/user_projects/domains/base_domain/bin/
vi setDomainEnv.sh
※514行目あたり編集
[変更前]
JAVA_OPTIONS="${JAVA_OPTIONS}
export JAVA_OPTIONS
[変更後]
JAVA_OPTIONS="${JAVA_OPTIONS}
-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=12345 
-Dcom.sun.management.jmxremote.rmi.port=12345 
-Djava.rmi.server.hostname=Weblogicサーバ(監視対象)のIP
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false"
export JAVA_OPTIONS

# Weblogic起動
./startWebLogic.sh &

```

## Zabbixコンソールで設定
### Weblogicサーバホスト設定

JMXインターフェースにWeblogicサーバのIPを設定します(ポート12345番で)。
Template JMX Generic などJMX監視のテンプレートを割り当てて更新してください。
![Inkedキャプチャ3_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/c0ba1715-5ce3-cdc6-f12c-92dd32f0fcd4.jpeg)
写真左上のようJMXの部分が緑色になればOKです。

JMX監視関連の値が取得できています(画像はヒープメモリ)。
![Inkedキャプチャ2_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/7794b36a-8b28-0b5c-771d-fcd6d711ef80.jpeg)