JMXtrans + InfluxDB + Grafana實現Zookeeper性能指標監控

1、整體效果圖

這裏是將集羣所有放在一塊兒,能夠根據本身的審美看怎麼放html

 

2、監控指標

 

 

其中有些指標與第一篇Zookeeper經過四字命令基礎監控(Zabbix)的四字命令的指標是有重複的,兩者選一個則可
 java

3、實現

一、influxdb的安裝

1)設置yum源數據庫

cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

 

2)安裝influxdbapache

yum install influxdb
systemctl start influxdb

 

3)修改配置文件(元數據以及數據存放目錄)json

[root@ip-172-0-0-7 influxDB]# cat /etc/influxdb/influxdb.conf |grep "^\s*[^# \t].*$"
[meta]
  dir = "/influxDB/meta"
[data]
  dir = "/influxDB/data"
  wal-dir = "/influxDB/wal"
  series-id-set-cache-size = 100
[coordinator]
[retention]
[shard-precreation]
[monitor]
[http]
[logging]
[subscriber]
[[graphite]]
[[collectd]]
[[opentsdb]]
[[udp]]
[continuous_queries]
[tls]

 

四、數據目錄受權vim

chown -R influxdb.influxdb /influxDB

 

五、重啓influxdb網絡

systemctl restart influxdb

 

六、建立zookeeper數據庫,以及建立帳號密碼google

CREATE USER "admin" WITH PASSWORD "admin" WITH ALL PRIVILEGES
create database zookeeper

 

二、zookeeper上打開JMX

1)vim ${Zookeeper-Home}/conf/zookeeper-env.sh
JMXLOCALONLY=false
JMXDISABLE=false
JMXPORT=8999
JMXAUTH=false
JMXSSL=false

 

二、重啓Zookeeperurl

./zkServer.sh restart

 

三、JMXtrans的安裝

1)安裝配置jmxtransspa

下載地址https://oss.sonatype.org/content/repositories/snapshots/org/jmxtrans/jmxtrans/ 這裏有最新的版本,用老的版本有一些問題 ;JMXtrans能夠隨意安裝在任何一臺機器上,不是必須安裝在Zookeeper機器上,只要JMXtrans與Zookeeper機器的網絡及端口是通的就能夠

wget https://oss.sonatype.org/content/repositories/snapshots/org/jmxtrans/jmxtrans/271-SNAPSHOT/jmxtrans-271-20190109.091025-10.rpm
yum -y install jmxtrans-271-20190109.091025-10.rpm

 

2)它的目錄文件

/var/lib/jmxtrans
/var/log/jmxtrans
/etc/rc.d/init.d/jmxtrans
/etc/jmxtrans
/usr/share/jmxtrans
/usr/share/jmxtrans/bin/jmxtrans
/usr/share/jmxtrans/lib/org/jmxtrans
/usr/share/jmxtrans/lib/org/jmxtrans/jmxtrans
/usr/bin/jmxtrans
/run/jmxtrans
/run/lock/subsys/jmxtrans

 

3)編輯zookeeper.json文件並放到/var/lib/jmxtrans/目錄

通常咱們的Zookeeper是一個集羣,好比當咱們的Zookeeper爲3臺的時候,則須要弄三份zookeeper.json文件,每一份對應Zookeeper集羣的每一臺機器,經過裏面的host和port對應

 

{
    "servers": [{
        "port": 8999,
        "host": "zookeeper-IP",
        "alias": "zk",
        "queries": [{
            "outputWriters": [{
                "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
                "url": "http://localhost:8086/",
                "database": "zookeeper",
                "username": "admin",
                "password": "admin"
            }],
            "obj": "org.apache.ZooKeeperService:name0=ReplicatedServer_id*",
            "attr": ["QuorumSize"]
        },
        {
            "outputWriters": [{
                "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
                "url": "http://localhost:8086/",
                "database": "zookeeper",
                "username": "admin",
                "password": "admin"
            }],
            "obj": "org.apache.ZooKeeperService:name0=ReplicatedServer_id*,name1=replica*,name2=*",
            "attr": ["MaxClientCnxnsPerHost",
            "MaxRequestLatency",
            "AvgRequestLatency",
            "MinRequestLatency",
            "MaxSessionTimeout",
            "MinSessionTimeout",
            "OutstandingRequests",
            "PacketsReceived",
            "PacketsSent",
            "PendingRevalidationCount",
            "TickTime"]
        },
        {
            "outputWriters": [{
                "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
                "url": "http://localhost:8086/",
                "database": "zookeeper",
                "username": "admin",
                "password": "admin"
            }],
            "obj": "org.apache.ZooKeeperService:name0=ReplicatedServer_id*,name1=replica*,name2=*,name3=InMemoryDataTree",
            "attr": ["NodeCount",
            "WatchCount"]
        },
        {
            "outputWriters": [{
                "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
                "url": "http://localhost:8086/",
                "database": "zookeeper",
                "username": "admin",
                "password": "admin"
            }],
            "obj": "org.apache.ZooKeeperService:name0=ReplicatedServer_id*,name1=replica*,name2=*,name3=Connections,name4=*,name5=*",
            "resultAlias": "Clients",
            "attr": ["AvgLatency",
            "LastLatency",
            "MaxLatency",
            "MinLatency",
            "OutstandingRequests",
            "PacketsReceived",
            "PacketsSent"]
        },
        {
            "outputWriters": [{
                "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
                "url": "http://localhost:8086/",
                "database": "zookeeper",
                "username": "admin",
                "password": "admin"
            }],
            "obj": "org.apache.ZooKeeperService:name0=StandaloneServer_port*",
            "resultAlias": "Clients",
            "attr": ["AvgLatency",
            "LastLatency",
            "MaxLatency",
            "MinLatency",
            "OutstandingRequests",
            "PacketsReceived",
            "PacketsSent",
            "NumAliveConnections"]
        },
        {
            "outputWriters": [{
                "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
                "url": "http://localhost:8086/",
                "database": "zookeeper",
                "username": "admin",
                "password": "admin"
            }],
            "obj": "java.lang:type=Memory",
            "resultAlias": "Memory",
            "attr": ["HeapMemoryUsage",
            "NonHeapMemoryUsage"]
        },
        {
            "outputWriters": [{
                "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
                "url": "http://localhost:8086/",
                "database": "zookeeper",
                "username": "admin",
                "password": "admin"
            }],
            "obj": "java.lang:type=OperatingSystem",
            "resultAlias": "Process",
            "attr": ["OpenFileDescriptorCount",
            "ProcessCpuLoad"]
        },
        {
            "outputWriters": [{
                "@class": "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",
                "url": "http://localhost:8086/",
                "database": "zookeeper",
                "username": "admin",
                "password": "admin"
            }],
            "obj": "java.lang:type=Threading",
            "resultAlias": "Threading",
            "attr": ["ThreadCount"]
        }],
        "numQueryThreads": 2
    }]
    }

 

4)啓動JMXtrans

啓動後,查看日誌/var/log/jmxtrans/jmxtrans.log,看是否啓動成功,如有錯誤則根據對應的錯誤解決就能夠

/usr/share/jmxtrans/bin/jmxtrans start

 

四、Grafna上配置數據源

 

當建立Query,選擇Influxdb數據源後,如有對應的指標出來,代表是OK的

相關文章
相關標籤/搜索