一、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