zabbix監控之進階

一、zabbix分佈式監控proxy

# 在一臺純淨的linux上安裝zabbix-proxy
yum install  zabbix-proxy-mysql  mariadb-server -y
# mysql中創庫,授權
mysql> 略 
cd /usr/share/doc/zabbix-proxy-mysql-4.0.16/
gzip -d schema.sql.gz 
mysql zabbix_proxy -uzabbix -p123456 < schema.sql 
mysql zabbix_proxy -uzabbix -p123456 -e 'show tables;'
vim /etc/zabbix/zabbix_proxy.conf 
ProxyMode=0
Server=10.0.0.71
ServerPort=10051
Hostname=sh_proxy
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=123456
HeartbeatFrequency=60
ConfigFrequency=60
DataSenderFrequency=1
​
	systemctl restart zabbix-proxy.service 

在這裏插入圖片描述

二、zabbix監控jvm原理

[root@zabbix01 app]# tar xf apache-tomcat-8.5.50.tar.gz 
[root@zabbix01 app]# tar xf jdk-8u221-linux-x64.tar.gz 
[root@zabbix01 app]# ln -s jdk1.8.0_221/ jdk
[root@zabbix01 app]# ln -s apache-tomcat-8.5.50/ tomcat
[root@zabbix01 app]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib
[root@zabbix01 app]# . /etc/profile
[root@zabbix01 app]# java -version
[root@zabbix01 app]# /app/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /app/tomcat
Using CATALINA_HOME:   /app/tomcat
Using CATALINA_TMPDIR: /app/tomcat/temp
Using JRE_HOME:        /usr/local/jdk
Using CLASSPATH:       /app/tomcat/bin/bootstrap.jar:/app/tomcat/bin/tomcat-juli.jar
Tomcat started.
vim /app/apache-tomcat-8.0.27/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=10.0.0.12 -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
以下操作忽略:
[root@zabbix01 ~]# rm -rf /app/tomcat/webapps/*
[root@zabbix01 ~]# mv jenkins.war /app/tomcat/webapps/ROOT.war

在這裏插入圖片描述

zabbix-server端:
[root@zabbix ~]# yum install zabbix-java-gateway -y
[root@zabbix04 ~]# vim /etc/zabbix/zabbix_java_gateway.conf
 35 START_POLLERS=5
[root@zabbix04 ~]# vim /etc/zabbix/zabbix_server.conf 
288 JavaGateway=127.0.0.1
296 JavaGatewayPort=10052
304 StartJavaPollers=5
[root@zabbix04 ~]# systemctl restart zabbix-server.service 
[root@zabbix04 ~]# systemctl restart zabbix-java-gateway.service 

在這裏插入圖片描述
在這裏插入圖片描述

三、zabbix低級自動

a:什麼是低級自動發現(low level discovery)
低級自動發現(LLD)提供了一種在計算機上爲不同實體自動創建監控項,觸發器和圖形的方法。

b:爲什麼要用低級自動發現
低級自動發現特別適合用於監控那些有規律,又有差異的監控對象。例如A主機有3個掛載分區,B主機有4個掛載分區,c主機有5個掛載分區,每個分區掛載目錄還不一樣,現在要求,監控每一個分區的磁盤總容量,剩餘容量,使用容量,block剩餘百分比,inode使用百分比,這時候使用普通的zabbix模板根本無法監控發現

c:zabbix模板自帶的低級自動發現有哪些?
在這裏插入圖片描述
在這裏插入圖片描述
d:增加一個監控項原型
在這裏插入圖片描述

# 修改agent配置文件
[root@zabbix01 ~]# cat /etc/zabbix/zabbix_agentd.d/net.conf 
UserParameter=net.if.mac[*],ifconfig $1|awk 'NR==4{print $$2}'

在這裏插入圖片描述
e:創建一個低級自動發現規則
第一個特殊key:定義低級自動發現規則,輸出格式爲json:例如:{“data”:[{"{#IFNAME}":“eth0”},{"{#IFNAME}":“eth1”},{"{#IFNAME}":“lo”}]}
第二個key: 監控項原型,取值

第一步:修改agent配置文件
# agent配置文件
[root@zabbix01 ~]# cat /etc/zabbix/zabbix_agentd.d/discovery_container.conf 
UserParameter=discovery_container,/bin/bash /opt/discovery_container.sh
UserParameter=container_mem_per[*],/usr/bin/docker stats --no-stream |grep "$1"|awk '{print $$8}'|tr -d '%'
# 低級自動發現腳本:

#!/bin/bash
port=($(/usr/bin/docker ps -a|grep -v "CONTAINER ID"|awk '{print $NF}'))
printf '{\n'
printf '\t"data":[\n'
   for key in ${!port[@]}
       do
           if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
              printf '\t {\n'
              printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"},\n"
           else [[ "${key}" -eq "((${#port[@]}-1))" ]]
              printf '\t {\n'
              printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"}\n"
           fi
   done
              printf '\t ]\n'
              printf '}\n'
第二步:測試取值
[root@zabbix ~]# zabbix_get -s 10.4.7.17 -k discovery_container
{
    "data":[
     {
            "{#CONTAINERNAME}":"7a4552bf6b07"},
     {
            "{#CONTAINERNAME}":"4081845226ee"},
     {
            "{#CONTAINERNAME}":"9d73c4fc6eb4"},
     {
            "{#CONTAINERNAME}":"7c7aadff9e11"},
     {
            "{#CONTAINERNAME}":"bbf5e3e231e0"}
     ]
}
​
[root@zabbix ~]# zabbix_get -s 10.4.7.17 -k container_mem_per[bbf5e3e231e0]
0.12

第三步:web界面創建規則和監控項原型
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

四、zabbix性能優化

1)針對mysql,寫多讀少  mariadb 5.5 innodb  升級 mysql 5.7 tokudb
2)去掉無用監控項,增加監控項的取值間隔,減少歷史數據保存週期
3)把被動模式修改爲主動模式,增加zabbix-proxy
4)針對於zabbix-server進程調優,誰忙,就加大它的進程數量
5)針對於zabbix-server緩存調優,誰的剩餘內存少,就加大它的緩存值
6)針對zabbix 歷史數據和趨勢圖的表,進行週期性分表( 分表)

五、zabbix api

調用api,發起一個http請求

#獲取認證
curl -X POST -H "Content-Type: application/json" -d '
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1,
    "auth": null
}'  http://10.0.0.71/zabbix/api_jsonrpc.php
​
{"jsonrpc":"2.0","result":"5fce40fb14005e696d26873c88b83465","id":1}
#創建主機
curl -X POST -H "Content-Type: application/json" -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "oldboy",
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "10.0.0.8",
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "15"
            }
        ],
        "templates": [
            {
                "templateid": "10272"
            },
            {
                "templateid": "10001"
            }
        ]
    },
    "auth": "5fce40fb14005e696d26873c88b83465",
    "id": 1
}
'  http://10.0.0.71/zabbix/api_jsonrpc.php
curl -X POST -H "Content-Type: application/json" -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10295"
    ],
    "auth": "5fce40fb14005e696d26873c88b83465",
    "id": 1
}
'  http://10.0.0.71/zabbix/api_jsonrpc.php
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章