從入門到精通php
預中級html
中級前端
進階java
機房巡檢node
ipmipython
yum -y install OpenIPMI ipmitool
具體參考:https://www.ibm.com/developerworks/cn/linux/l-ipmi/mysql
SNMPlinux
具體參考:http://www.javashuo.com/article/p-ovgteahx-eo.htmlnginx
安裝snmpgit
yum -y install net-snmp net-snmp-libs net-snmp-utils
修改配置
[root@k8s-m1 ~]# grep '^[a-z]' /etc/snmp/snmpd.conf com2sec admin default admin group admin v2c admin view admin included .1 80 access admin "" any noauth exact admin admin none syslocation Unknown (edit /etc/snmp/snmpd.conf) syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf) dontLogTCPWrappersConnects yes
啓動服務
systemctl start snmpd netstat -lntpu |grep 161 udp 0 0 0.0.0.0:161 0.0.0.0:* 17023/snmpd
獲取cpu內存
[root@k8s-m1 ~]# snmpwalk -v2c -c admin 10.201.1.145 .1.3.6.1.4.1.2021.10.1.3 UCD-SNMP-MIB::laLoad.1 = STRING: 0.01 UCD-SNMP-MIB::laLoad.2 = STRING: 0.04 UCD-SNMP-MIB::laLoad.3 = STRING: 0.05 [root@k8s-m1 ~]# snmpget -v2c -c admin 10.201.1.145 .1.3.6.1.4.1.2021.10.1.3.1 UCD-SNMP-MIB::laLoad.1 = STRING: 0.01 [root@k8s-m1 ~]# snmpget -v2c -c admin 10.201.1.145 .1.3.6.1.2.1.25.2.2.0 HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 3880792 KBytes
OID參考文章:https://blog.csdn.net/buster2014/article/details/46925633
參考文章:https://www.cnblogs.com/anyux/p/8195541.html
進程:每一個進程至少有一個線程,每一個進程能夠有多個線程。
負載:單位時間內運行隊列中就緒等待的進程平均值
top
top - 14:44:13 up 5 days, 20:50, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 107 total, 2 running, 105 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3880792 total, 778556 free, 164584 used, 2937652 buff/cache KiB Swap: 0 total, 0 free, 0 used. 3125052 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 虛擬 物理 共享 佔用cpu總時間
lscpu
[root@k8s-m1 ~]# lscpu
cat /proc/loadavg
cat /proc/loadavg 0.00 0.01 0.05 1/134 17383
sysstat包帶的監控
yum -y install sysstat
vmstat 1 10 mpstat 1 10
虛擬內存、SWAP、物理內存
vmstat
vmstat 1 10
free
free -m
3.io
iotop
yum -y install iotop iotop
測試io參考:https://elf8848.iteye.com/blog/2089055
網絡io
iftop
[root@localhost ~]# iftop [root@localhost ~]# iftop -i eth0 -F 10.201.1.32/24
nethogs
yum -y install nethogs nethogs
IP地址 | 服務類型 |
---|---|
10.201.1.145 | server |
10.201.1.146 | agent |
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm yum-config-manager --enable rhel-7-server-optional-rpms
yum install zabbix-server-mysql yum install zabbix-web-mysql
yum -y install mariadb-server systemctl enable mariadb.service systemctl start mariadb.service mysql_secure_installation
建立zabbix庫和受權
mysql -uroot -p<password> mysql> create database zabbix character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
導入數據
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
修改httpd配置
ServerName 127.0.0.1:80 #95行取消註釋
修改Zabbix server配置文件
vi /etc/zabbix/zabbix_server.conf DBPassword=123456 #124行修改zabbix的密碼
systemctl start httpd.service systemctl enable httpd.service systemctl start zabbix-server.service systemctl enable zabbix-server.service netstat -antpu |grep 10051
根據提示完成安裝
提示須要修改時區
vim /etc/httpd/conf.d/zabbix.conf php_value date.timezone Asia/Shanghai #20行修改
用戶名: Admin
密碼:zabbix
yum install zabbix-agent
[root@k8s-n1 yum.repos.d]# grep '^[A-Z]' /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=10.201.1.145 #指定server端 ServerActive=10.201.1.145 #指定server端 Include=/etc/zabbix/zabbix_agentd.d/*.conf
systemctl start zabbix-agent systemctl enable zabbix-agent netstat -antpu |grep 10050
設置完成後能夠測試報警是否生效,關掉80端口
zabbix提供了自帶的mysql監控模板,可是又不少缺陷,須要修改後,才能更好的使用
修改後須要設置變量,更加靈活的監控多實例的mysql服務
[root@k8s-n1 zabbix_agentd.d]# grep '^[A-Z]' /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf UserParameter=mysql.status[*],echo "show global status where Variable_name='$3';" | HOME=/var/lib/zabbix mysql -u$1 -p$2 -N | awk '{print $$2}' UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N' UserParameter=mysql.ping[*],HOME=/var/lib/zabbix mysqladmin -u$1 -p$2 ping | grep -c alive UserParameter=mysql.version,mysql -V
systemctl restart zabbix-agent
[root@k8s-n1 zabbix]# cat zabbix_linux_plugin.sh #!/bin/bash tcp_status_fun(){ TCP_STAT=$1 #netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,state[key]}' > /tmp/netstat.tmp ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > /tmp/netstat.tmp TCP_STAT_VALUE=$(grep "$TCP_STAT" /tmp/netstat.tmp | cut -d ' ' -f2) if [ -z $TCP_STAT_VALUE ];then TCP_STAT_VALUE=0 fi echo $TCP_STAT_VALUE } nginx_status_fun(){ NGINX_PORT=$1 NGINX_COMMAND=$2 nginx_active(){ /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}' } nginx_reading(){ /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' } nginx_writing(){ /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}' } nginx_waiting(){ /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' } nginx_accepts(){ /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}' } nginx_handled(){ /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}' } nginx_requests(){ /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}' } case $NGINX_COMMAND in active) nginx_active; ;; reading) nginx_reading; ;; writing) nginx_writing; ;; waiting) nginx_waiting; ;; accepts) nginx_accepts; ;; handled) nginx_handled; ;; requests) nginx_requests; esac } memcached_status_fun(){ M_PORT=$1 M_COMMAND=$2 echo -e "stats\nquit" | nc 127.0.0.1 "$M_PORT" | grep "STAT $M_COMMAND " | awk '{print $3}' } redis_status_fun(){ R_PORT=$1 R_COMMAND=$2 (echo -en "INFO \r\n";sleep 1;) | nc 10.201.1.146 "$R_PORT" > /tmp/redis_"$R_PORT".tmp REDIS_STAT_VALUE=$(grep ""$R_COMMAND":" /tmp/redis_"$R_PORT".tmp | cut -d ':' -f2) echo $REDIS_STAT_VALUE } main(){ case $1 in tcp_status) tcp_status_fun $2; ;; nginx_status) nginx_status_fun $2 $3; ;; memcached_status) memcached_status_fun $2 $3; ;; redis_status) redis_status_fun $2 $3; ;; *) echo $"Usage: $0 {tcp_status key|memcached_status key|redis_status key|nginx_status key}" esac } main $1 $2 $3
[root@k8s-n1 zabbix_agentd.d]# cat zabbix-linux-plugin.conf UserParameter=linux_status[*],/etc/zabbix/zabbix_linux_plugin.sh "$1" "$2" "$3"
systemctl restart zabbix-agent
百度網盤:https://pan.baidu.com/s/1rYyIdmE6MBKKDNGWzdUj6Q
密碼:aaf0
[root@linux-node2 ~]# vim /etc/nginx/conf.d/nginx-status.conf server { server_name 127.0.0.1; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } }
yum -y install zabbix-java-gateway.x86_64
[root@k8s-m1 ~]# grep '^[A-Z]' /etc/zabbix/zabbix_java_gateway.conf LISTEN_IP="0.0.0.0" LISTEN_PORT=10052 PID_FILE="/var/run/zabbix/zabbix_java.pid" START_POLLERS=5
vim /etc/zabbix/zabbix_server.conf JavaGateway=10.201.1.145 #取消註釋修改 JavaGatewayPort=10052 #取消註釋修改 StartJavaPollers=5 #取消註釋修改
systemctl restart zabbix-server.service systemctl start zabbix-java-gateway
vim /usr/local/tomcat/bin/catalina.sh CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1234 #配置端口 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.201.1.146" #指定本機IP地址
/usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh
wget http://repo.typesafe.com/typesafe/repo/cmdline-jmxclient/cmdline-jmxclient/0.10.3/cmdline-jmxclient-0.10.3.jar
驗證
[root@k8s-n1 ~]# java -jar cmdline-jmxclient-0.10.3.jar - 10.201.1.146:1234 java.lang:type=Memory Attributes: ObjectPendingFinalizationCount: ObjectPendingFinalizationCount (type=int) HeapMemoryUsage: HeapMemoryUsage (type=javax.management.openmbean.CompositeData) NonHeapMemoryUsage: NonHeapMemoryUsage (type=javax.management.openmbean.CompositeData) Verbose: Verbose (type=boolean) ObjectName: ObjectName (type=javax.management.ObjectName) Operations: gc: gc Parameters 0, return type=void
[root@k8s-n1 ~]# java -jar cmdline-jmxclient-0.10.3.jar - 10.201.1.146:1234 java.lang:type=Memory NonHeapMemoryUsage 03/26/2019 09:15:36 +0800 org.archive.jmx.Client NonHeapMemoryUsage: committed: 38191104 init: 2555904 max: -1 used: 36701248
能夠看到已經獲取到值了
win7 32 位java下載地址
百度網盤:https://pan.baidu.com/s/1rYyIdmE6MBKKDNGWzdUj6Q 密碼:aaf0
打開jconsole,就能夠彈出java的管理界面了
https://newcontinuum.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.25/zabbix-3.0.25.tar.gz
將裏面的bin對應系統版本的文件所有複製出來,在到conf中複製一個win的配置文件
LogFile=c:\zabbix\zabbix_agentd.log #指定log存放路徑 Server=10.201.1.145 #指定server端ip ServerActive=10.201.1.145 #主動模式 Hostname=192.168.16.18 #指定本機主機名
cmd命令安裝
C:\zabbix>zabbix_agentd.exe -c zabbix_agentd.win.conf -i
啓動
C:\zabbix>zabbix_agentd.exe -c zabbix_agentd.win.conf -s C:\zabbix>netstat -an
啓用SNMP服務,並配置
兩種方式IP和SNMP
使用這個插件能夠監控到mysql不少詳細參數大概200多個監控項
yum install -y https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-3.noarch.rpm yum install percona-zabbix-templates php php-mysql -y rpm -ql percona-zabbix-templates
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@k8s-m1 ~]# cat /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh #!/bin/sh # The wrapper for Cacti PHP script. # It runs the script every 5 min. and parses the cache file on each following run. # Version: 1.1.8 # # This program is part of Percona Monitoring Plugins # License: GPL License (see COPYING) # Copyright: 2018 Percona # Authors: Roman Vynar ITEM=$1 HOST=localhost DIR=`dirname $0` CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items gg" CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt" if [ "$ITEM" = "running-slave" ]; then # Check for running slave RES=`HOME=~zabbix mysql -uzabbix -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','` #只用修改這行,添加-u -p參數就行。指定用戶和密碼 if [ "$RES" = " Yes, Yes," ]; then echo 1 else echo 0 fi exit elif [ -e $CACHEFILE ]; then # Check and run the script TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_cacti_stats.txt` TIMENOW=`date +%s` if [ `expr $TIMENOW - $TIMEFLM` -gt 300 ]; then rm -f $CACHEFILE $CMD 2>&1 > /dev/null fi else $CMD 2>&1 > /dev/null fi # Parse cache file if [ -e $CACHEFILE ]; then cat $CACHEFILE | sed 's/ /\n/g; s/-1/0/g'| grep $ITEM | awk -F: '{print $2}' else echo "ERROR: run the command manually to investigate the problem: $CMD" fi
vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php $mysql_user = 'zabbix'; #修改30行 $mysql_pass = '123456'; #修改31行
percona提供的xml模板是根據2.0寫的,不適用4.0版本須要修改,我已經修改好了,下載地址:
百度網盤:https://pan.baidu.com/s/1rYyIdmE6MBKKDNGWzdUj6Q 密碼:aaf0
打開php-fpm的pool配置文件,刪除pm.status=指令的註釋:
pm.status_path = /php-fpm_status
把以下配置添加到nginx配置文件:
server { listen 10061; location /php-fpm_status { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
重啓php-fpm和nginx後,嘗試執行以下命令測試:
curl http://127.0.0.1:10061/php-fpm_status
增長自定義key
cat /usr/local/zabbix/etc/zabbix_agentd.conf.d/php-fpm_status.conf UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://127.0.0.1:10061/php-fpm_status?xml" | grep "<$1>" | awk -F'>|<' '{print $$3}'
重啓zabbix客戶端
百度網盤:https://pan.baidu.com/s/1rYyIdmE6MBKKDNGWzdUj6Q 密碼:aaf0
https://www.cnblogs.com/hy007x/p/7736403.html
https://github.com/mjwtc0722/zabbix-lvs-status
https://blog.51cto.com/3241766/2117521
被動模式:此模式爲zabbix默認的工做模式,由zabbix server 向zabbix agent 發出指令獲取數據,zabbix agent被動地去獲取數據並返回給zabbix server,zabbix server會週期性地向agent索取數據。此模式的最大問題就是會增長zabbix server的工做量,在大量的服務器環境下,zabbix server不能及時獲取到最新的數據。
主動模式:即由zabbix agent 主動採集數據並返回給zabbix server,不須要zabbix server 的另行干預,所以使用主動模式能在必定程序上減輕zabbix server的壓力。
[root@k8s-n1 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 #不作日誌切分 StartAgents=0 #關閉被動模式 ServerActive=10.201.1.145 #指定server端IP地址 HostnameItem=system.hostname #server端一會須要填寫這個地方的主機名,默認是獲取本機主機名 Include=/etc/zabbix/zabbix_agentd.d/*.conf
systemctl restart zabbix-agent
先徹底克隆這個模板,重命名爲Template OS Linux active
批量更新items
將這個模板的鏈接的模板也改成主動模式,方法同上
將自動發現,也改成主動模式,並把裏面的items改成主動
查看獲取到的數據
zabbix獲取數據時有時會出現超時,若是一些數據須要執行比較長的時間才能獲取的話,那麼zabbix會出現異常,考慮到這種狀況,zabbix增長了Trapper功能,客戶端本身提交數據給zabbix。
trapper是被監控主機主動發送數據給zabbix server,與主動模式的區別是不須要安裝客戶端;trapper方式發送數據是以主機名處理,不是IP地址,因此主機名要惟一。
tapper工做模式中,使用zabbix監控類型zabbix trapper(能夠稱爲zabbix捕捉器),在zabbix服務器上必須有一個捕捉項目,而後須要配合zabbix_sender把數據推送給zabbix服務器,該程序由zabbix發行版自帶
zabbix_sender是一個命令行工具,能夠用來發送Zabbix服務器處理性能數據。該工具一般用於長時間運行的用戶腳本,用於按期發送可用性和性能數據。
yum -y install zabbix-sender.x86_64
[root@k8s-n1 ~]# zabbix_sender usage: zabbix_sender [-Vhv] {[-zpsI] -ko | [-zpI] -T -i <file> -r} [-c <file>] 參數說明: -c --config <file> 配置文件絕對路徑 -z --zabbix-server <server> zabbix server的IP地址 -p --port <server port> zabbix server端口.默認10051 -s --host <hostname> zabbix 管理界面指定的主機名 -I --source-address <IP address> 源IP -k --key <key> 監控項的key -o --value <key value> key值 -i --input-file <input file> 從文件裏面讀取hostname、key、value 一行爲一條數據,使用空格做爲分隔符,若是主機名帶空格,那麼請使用雙引號包起來 -T --with-timestamps 一行一條數據,空格做爲分隔符: <hostname> <key> <timestamp> <value>,配合 --input-file option,timestamp爲unix時間戳 -r --real-time 將數據實時提交給服務器 -v --verbose 詳細模式, -vv 更詳細
建立主機
建立監控項
[root@k8s-n1 ~]# zabbix_sender -z 10.201.1.145 -s trapper -k trapper-test -o 133 info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000113" sent: 1; skipped: 0; total: 1
查看數據
經過zabbix_sender能夠批量傳遞key值,能夠建立一個文本,每行定義一個key值,可使用不一樣的主機名以及key、key值。
建立一個文本
[root@k8s-n1 ~]# cat 1.txt trapper trapper-test 10 trapper trapper-test 12 trapper trapper-test 15 trapper trapper-test 17 trapper trapper-test 19 trapper trapper-test 13 trapper trapper-test 16 trapper trapper-test 10
[root@k8s-n1 ~]# zabbix_sender -z 10.201.1.145 -s trapper -i 1.txt -vv zabbix_sender [5007]: DEBUG: answer [{"response":"success","info":"processed: 8; failed: 0; total: 8; seconds spent: 0.000334"}] info from server: "processed: 8; failed: 0; total: 8; seconds spent: 0.000334" sent: 8; skipped: 0; total: 8
zabbix web端查看數據
假若有100臺服務器,不想一臺臺主機去添加,能不能讓zabbix自動添加主機呢?固然能夠,網絡發現即是知足這個需求的功能,固然前提條件是全部服務器都已經安裝了agent或者snmp(其實也能夠不用,鑑於咱們大部分功能都用agent,因此請安裝上agent),server端(由server端發起的)掃描配置好的ip段,自動添加host,自動給host link模板,自動加到主機組裏等等。網絡發現功能讓咱們能更快速的部署zabbix、簡化zabbix管理、而且在常常變更的環境裏面也不須要花太多的精力。
[root@k8s-n2 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=10.201.1.145 ServerActive=10.201.1.145 HostnameItem=system.hostname HostMetadata=web Include=/etc/zabbix/zabbix_agentd.d/*.conf
自動註冊由客戶端主動發起,客戶端必須安裝並啓動Agentd,不然沒法被自動註冊添加至主機列表。功能跟網絡發現同樣,但自動註冊的效率比網絡發現的高。
配置文件內容保持跟網絡同樣便可
1.刪除k8s-n2
2.停用網絡發現
3.添加自動註冊動做規則
Zabbix的網絡發現是指zabbix server經過配置好的規則,自動添加host,group,template
Zabbix的主動註冊恰好和網絡發現是相反的,功能基本一致。zabbix agent主動聯繫zabbix server,server自動添加host,group,template
以上兩種方式都是發現host,添加host,而low-level discovery(低級自動發現)更加底層,用於發現item,trigger,graph等等
[root@linux-node2 ~]# mkdir /data/{3307,3308} -p [root@linux-node2 ~]# chown -R mysql.mysql /data [root@linux-node2 ~]# cp /etc/my.cnf /etc/my3307.cnf [root@linux-node2 ~]# vim /etc/my3307.cnf [mysqld] datadir=/data/3307 socket=/data/3307/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 port=3307 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/data/3307/mariadb.log pid-file=/data/3307/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d [root@linux-node2 ~]# cp /etc/my3307.cnf /etc/my3308.cnf [root@linux-node2 ~]# vim /etc/my3308.cnf [mysqld] datadir=/data/3308 socket=/data/3308/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 port=3308 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/data/3308/mariadb.log pid-file=/data/3308/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d
[root@linux-node2 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf [root@linux-node2 ~]# mysqld_safe --defaults-file=/etc/my3307.cnf & [root@linux-node2 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf [root@linux-node2 ~]# mysqld_safe --defaults-file=/etc/my3308.cnf & [root@linux-node2 ~]# netstat -tulnp |grep mysql|awk -F "[ :]+" '{print $4}' 3307 3308 3306
vim discovery_mysql.sh #!/bin/bash #mysql low-level discovery res=`sudo netstat -lntp|awk -F "[ :\t]+" '/mysqld/{print$4}'` port=($res) printf '{' printf '"data":[' for key in ${!port[@]} do if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then printf '{' printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}," else [[ "${key}" -eq "((${#port[@]}-1))" ]] printf '{' printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}" fi done printf ']' printf '}\n'
sh discovery_mysql.sh |python -m json.tool #採用json格式顯示 { "data": [ { "{#MYSQLPORT}": "3307" }, { "{#MYSQLPORT}": "3308" }, { "{#MYSQLPORT}": "3306" } ] }
[root@linux-node2 zabbix_agentd.d]# vim discovery_mysql.conf UserParameter=discovery_mysql,/bin/bash /etc/zabbix/zabbix_agentd.d/scripts/discovery_mysql.sh
[root@linux-node1 ~]# zabbix_get -s linux-node2 -k discovery_mysql #測試server端獲取數據 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) {"data":[]} #這裏報錯是由於netstat -tulnp的參數-p在執行時須要root的權限,這裏使用suid的方式進行受權 [root@linux-node2 ~]# chmod u+s `which netstat` [root@linux-node2 ~]# ll `which netstat` -rwsr-xr-x. 1 root root 155000 8月 3 17:17 /usr/bin/netstat *或者 sed -i '98a zabbix\tALL=(ALL)\tNOPASSWD: /bin/netstat' /etc/sudoers sed -i 's@^Defaults requiretty@#Defaults requiretty@g' /etc/sudoers* [root@linux-node1 ~]# zabbix_get -s linux-node2 -k discovery_mysql {"data":[{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"},{"{#MYSQLPORT}":"3306"}]}
[root@linux-node2 zabbix_agentd.d]# cat userparameter_mysql.conf UserParameter=mysql.status[*],echo "show global status where Variable_name='$2';" | HOME=/var/lib/zabbix mysql -uroot -p123456 -h 127.0.0.1 -P $1 -N | awk '{print $$2}' 修改不一樣端口的mysql密碼: [root@linux-node2 zabbix_agentd.d]# mysqladmin -h 127.0.0.1 -uroot password '123456' -P3306 [root@linux-node2 zabbix_agentd.d]# mysqladmin -h 127.0.0.1 -uroot password '123456' -P3307 [root@linux-node2 zabbix_agentd.d]# mysqladmin -h 127.0.0.1 -uroot password '123456' -P3308 測試是否正常 [root@linux-node2 zabbix_agentd.d]# mysql -uroot -p123456 -h 127.0.0.1 -P3306 -e "use mysql;show GLOBAL VARIABLES like 'port';" +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3306 | +---------------+-------+ [root@linux-node2 zabbix_agentd.d]# mysql -uroot -p123456 -h 127.0.0.1 -P3307 -e "use mysql;show GLOBAL VARIABLES like 'port';" +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3307 | +---------------+-------+ [root@linux-node2 zabbix_agentd.d]# mysql -uroot -p123456 -h 127.0.0.1 -P3308 -e "use mysql;show GLOBAL VARIABLES like 'port';" +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3308 | +---------------+-------+ zabbix_get測試是否能正常獲取數據: [root@linux-node1 ~]# zabbix_get -s linux-node2 -k mysql.status[3306,Bytes_sent] 1808
這裏直接在linux-node2上進行建立
"Configuration"-->"Host"-->"linux-node2"-->"Discovery"-->"Create discovery rule"-->"Add"
建立 Item prototypes,其實就是一個建立一個 item
Item prototypes (0)>>create Item prototypes,按照官方模板來配置。這裏配5個展現
再查看Host中的item項,會多出如下監控項:
查看監控最新數據圖表,便可看到330六、330七、3308的數據庫狀態信息: