1、####################################################################################php
2019-05-03T00:56:36.941840Z mysqld_safe mysqld from pid file /data/mysqld.pid endedmysql
[root@zabbix-server bin]# mysqld_safe --defaults-file=/etc/my.cnfweb
2019-05-03T00:59:06.392254Z mysqld_safe Logging to '/data/mysqld.log'.sql
2019-05-03T00:59:06.395674Z mysqld_safe Logging to '/data/mysqld.log'.數據庫
2019-05-03T00:59:06.424562Z mysqld_safe Starting mysqld daemon with databases from /datavim
^Zwindows
[1]+ Stopped mysqld_safe --defaults-file=/etc/my.cnfsocket
[root@zabbix-server bin]# bg 1測試
[1] + mysqld_safe --defaults-file=/etc/my.cnf &字體
若是仍是啓動不起來,那就是權限問題,賦予數據目錄相關權限:chown -R mysql:mysql ./
2、###################################################################################
[root@dbserver-6 data]# mysql -uroot -p123 -s /usr/local/mysql/data/mysql.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
[root@dbserver-6 data]# mysql -uroot -p123 -S /usr/local/mysql/data/mysql.sock
mysql>
三、####################################################################################
[root@dbserver-6 zabbix_agentd.conf.d]# zabbix_get -s 172.16.20.1 -k cpu_number
zabbix_get [11636]: Check access restrictions in Zabbix agent configuration
被監控端的zabbix_agentd.conf配置文件裏的server_name沒有修改,應該修改爲被監控端的主機名Hostname=rh-mysql-1
真正緣由是要在server端運行該命令[root@zabbix-server etc]# zabbix_get -s 172.16.20.1 -p 10050 -k "cpu_number"
4
4、####################################################################################
[root@rh-mysql-1 ~]# mysql -uroot -p123 -S /usr/local/mysql/data/mysql.sock --show-warnings=false -Ne "show variables like 'innodb_buffer_pool_size';" 2>/dev/null | awk '{print $2}'
134217728
[root@zabbix-server bin]# zabbix_get -s rh-mysql-1 -k buffer_pool_wait_free
agent端單獨測試執行命令沒問題,server端zabbix_get監控項鍵值時,返回值爲空,在zabbix監控網頁端配置自定義監控項,顯示不支持字符類型,
由於我設置的類型爲正整數類型,極可能上邊參數返回的是一個字符串報錯!!
所以我查看zabbix_agent的執行文件
vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
UserParameter=buffer_pool_wait_free,mysql -uroot -p123 -S /usr/local/mysql/data/mysql.sock --show-warnings=false -Ne "show global status like 'Innodb_buffer_pool_wait_free';" 2>/dev/null | awk '{print $2}'
將屏蔽錯誤和警告道null文件取消,進行測試,
[root@rh-mysql-1 ~]# mysql -uroot -p123 -S /usr/local/mysql/data/mysql.sock --show-warnings=false -Ne "show variables like 'innodb_buffer_pool_size';" | awk '{print $2}'
mysql: [Warning] Using a password on the command line interface can be insecure.
134217728
[root@zabbix-server bin]# zabbix_get -s rh-mysql-1 -k buffer_pool_wait_free
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/mysql/data/mysql.sock' (13)
server端出現出錯根源,鏈接不上sock套接字文件,但是我明明在agent端命令中指定sock文件,並且單獨執行沒有問題,這裏多是因爲server端執行命令調用agent端的mysql時,使用的sock文件路徑出錯;
修改以下:
在agent端的mysql配置文件中vim /etc.my.cnf中,進行sock文件指定,添加內容以下:
[mysql]
socket=/usr/local/mysql/data/mysql.sock
修改zabbix_agent的執行文件
vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
UserParameter=buffer_pool_wait_free,mysql -uroot -p123 --show-warnings=false -Ne "show global status like 'Innodb_buffer_pool_wait_free';" 2>/dev/null | awk '{print $2}'
結果仍然出錯。
採用本地迴環方式登陸agent端的mysql
UserParameter=buffer_pool_wait_free,/usr/local/mysql/bin/mysql -uroot -p123 -h127.0.0.1 -P3306 --show-warnings=false -Ne "show global status like 'Innodb_buffer_pool_wait_free';" 2>/dev/null | awk '{print $2}'
[root@zabbix-server ~]# zabbix_get -s rh-mysql-1 -p 10050 -k "innodb_buffer_pool_size"
134217728
成功!!1
由於server端和agent端都存在一個MySQL數據庫,若是server端mysql鏈接zabbix成功,就沒必要考慮,只考慮agent端便可,即在zabbix中可能存在默認socket文件的路徑必須在/tmp目錄下,若是不在致使agent端配置文件中的路徑出錯,所以會報錯。
五、###########################################################################
解決命令行輸入mysql密碼的Warning
因爲在命令行中輸入密碼形成的Warning經過通常的過濾手段可能沒法過濾掉這條警告,這樣就形成了在zabbix web界面顯示得到的監控項的值的類型和定義的不一致
如何解決:
1、--show-warnings=false
mysql -uroot -p123 --show-warnings=false -Ne "show variables like 'innodb_buffer_pool_size';" 2>/dev/null
2、在mysql配置文件中添加以下內容
[client]
user=zabbix
password=123
host=localhost
socket=/usr/local/mysql/data/mysql.sock
[mysqladmin]
user=zabbix
password=123
host=localhost
socket=/usr/local/mysql/data/mysql.sock
專門在mysql中添加一個zabbix用戶,供zabbix獲取mysql的信息,不用給zabbix用戶很高的權限,實現zabbix用戶免密登陸mysql,這樣就避免了輸入密碼帶來的問題
3、本身在定義一個mysql配置文件,只存放用戶名和密碼等信息
執行mysql命令時在命令前面加上 HOME=/usr/local/zabbix-agent/etc/ 這個執行時就會讀取這個目錄 下的配置文件,例
HOME=/usr/local/zabbix-agent/etc/ mysql -e "show variables like 'innodb_buffer_pool_size';"|grep -v Value |awk '{print$2}'
上述的第2中方式須要重啓數據庫才能讀取配置文件,可能在真實的生產環境中不容許重啓,第3中方式就彌補了第2 中方式的不足
#####################################################################################################
六、解決zabbix 圖表中的中文亂碼問題
在web端定義的各類中文表示,到了圖表中就顯示爲一個個方框的亂碼,這時由於由PHP編寫的zabbix web頁面時沒有加入中文字體包。
解決方式:
1、找一箇中文字體包(windows中的就能夠。在C:\Windows\Fonts中)
2、將中文字體包放入zabbix對應網頁的目錄中(/var/www/zabbix/php/fonts 字體包路徑)
注意將文件名後綴改成 .ttf,不然不能識別
3、修改/var/www/zabbix/php/include/defines.inc.php 文件,
將DejaVuSans修改成你上傳到fonts下的字體包名,不帶ttf
4、或者,不用修改配置文件,直接把fonts下,將新的字體包重命名成原來的那個名字,而且把原來的移走或刪除