zabbix監控超詳細搭建過程
監控及zabbix
目錄:
1 監控分類... 1
1.1 硬體監控... 1
1.2 系統監控... 2
1.3 網路監控... 3
1.4 應用(業務)監控... 3
2 安裝zabbix. 3
2.1 安裝zabbix服務端... 3
2.2 安裝zibbix客戶端... 9
2.3 新增zabbix主機組和主機... 9
2.4 建立使用者和組... 11
2.5 新增專案及觸發器... 13
2.6 設定報警... 16
2.7 自定義模板... 19
2.8 web監控... 20
2.9 分散式監控、客戶端主動模式... 21
2.9.1 客戶端被動模式... 21
2.9.2 客戶端主動模式... 21
2.9.3 zabbix分散式... 22
2.10 自動化監控... 23
2.10.1 zabbix-agent自動註冊(使用proxy)... 23
2.10.2 主機探索(不使用proxy,被動模式)... 24
2.10.3 使用zabbix-api 25
2.11 更改中文字型防止亂碼... 28
1 監控分類
1.1 硬體監控
1、機房巡檢。檢查伺服器各種狀態。
2、通過遠端控制卡監控。ipmi是一種標註。
ipmi獲取不到硬碟狀態,比如硬碟壞了,硬碟可以用MegaCli工具。
ipmi簡介:http://www.ibm.com/developerworks/cn/linux/l-ipmi/
yuminstallOpenIPMIipmitool-y
[root@centos67~]#/etc/init.d/ipmistart
1.2 系統監控
1、瞭解監控物件
2、知道效能的基準線。
cpu監控
cpu排程器
上下文切換
執行佇列
cpu使用率
[root@c67-7 ~]# cat /proc/cpuinfo [root@c67-7 ~]# lscpu [root@c67-7 ~]# uptime #一般情況小於等於3就是正常 [root@c67-7 ~]# rpm -qa |grep sysstat sysstat-9.0.4-27.el6.x86_64 [root@c67-7 ~]# vmstat 1 [root@c67-7 ~]# mpstat 1 Linux 2.6.32-573.el6.x86_64 (c67-7) 2015年10月24日 _x86_64_ (1 CPU) 11時24分37秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 11時24分38秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 11時24分39秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 使用者態(程式執行) 核心態(系統呼叫,如vi開啟檔案) 正常比例是70%:30%
計算類的服務吃cpu,資料庫佔IO
記憶體
[root@c67-7 ~]# free -m total used free shared buffers cached Mem: 992 580 411 0 46 441 -/+ buffers/cache: 92 900 Swap: 1023 0 1023 buffer:寫入緩衝區 cache:讀出快取區
硬碟
[root@c67-7 ~]# yum install iotop -y iotop
網路io
[root@c67-7 ~]# yum install iftop -y iftop nmon可以監控以上所有東西。
1.3 網路監控
第三方監控寶等。
使用smokeping監控網路狀態,如下圖:
1.4 應用(業務)監控
使用pwiki監控業務狀態
apache監控:通過mod_status模組
http://www.t086.com/code/apache2.2/mod/mod_status.html
nginx監控:類似於apache
memcached監控 使用nc獲取狀態
redis監控
2安裝zabbix
2.1 安裝zabbix服務端
官方文件參考
https://www.zabbix.com/documentation/2.4/manual/installation/install_from_packages
1、安裝zabbix-release包
[root@linux-node1 ~]# mkdir -p /home/lxy/tools [root@linux-node1 ~]# cd /home/lxy/tools/ [root@linux-node1 tools]# wget -q http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm [root@linux-node1 tools]# rpm -ivh zabbix-release-2.4-1.el6.noarch.rpm warning: zabbix-release-2.4-1.el6.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY Preparing... ########################################### [100%] 1:zabbix-release ########################################### [100%] [root@linux-node1 tools]# rpm -ql zabbix-release /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX /etc/yum.repos.d/zabbix.repo /usr/share/doc/zabbix-release-2.4 /usr/share/doc/zabbix-release-2.4/GPL [root@linux-node1 tools]# ll /etc/yum.repos.d/zabbix.repo -rw-r--r-- 1 root root 401 9月 11 2014 /etc/yum.repos.d/zabbix.repo
2.開始安裝zabbix
1)保留yum安裝的rpm包 [root@linux-node1 tools]# sed -i 's#keepcache=1#keepcache=0#g' /etc/yum.conf [root@linux-node1 tools]# grep keepcache /etc/yum.conf keepcache=0 2)開始安裝zabbix yum -y install zabbix zabbix-server zabbix-server-mysql #<==ZABBIX SERVER相關 yum -y install zabbix-web zabbix-web-mysql #<==Apache、Php Web介面環境 yum -y install zabbix-agent #<== ZABBIX客戶端 yum -y install mysql-server mysql #<==MySQL客戶端與服務端
3、配置zabbix服務相關
1)配置mysql [root@linux-node1 tools]# \cp /usr/share/mysql/my-medium.cnf /etc/my.cnf [root@linux-node1 tools]# vim /etc/my.cnf 在[mysqld](第26行)標籤下增加如下三行後儲存 [mysqld] character-set-server = utf8 init-connect = 'SET NAMES utf8' collation-server = utf8_general_ci [root@linux-node1 tools]# /etc/init.d/mysqld start 2)初始化資料庫環境 建立資料庫 mysql> create database zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec) 授權資料庫 mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; 匯入表結構 [root@linux-node1 tools]# cd /usr/share/doc/zabbix-server-mysql-2.4.6/create/ [root@linux-node1 create]# mysql -u root -p zabbix < schema.sql [root@linux-node1 create]# mysql -u root -p zabbix < images.sql [root@linux-node1 create]# mysql -u root -p zabbix < data.sql [root@linux-node1 create]# mysqladmin -uroot password 123456 3)設定apache時區 sed -i 's#\# php_value date.timezone Europe/Riga#php_value date.timezone Asia/Shanghai#g' /etc/httpd/conf.d/zabbix.conf grep Shanghai /etc/httpd/conf.d/zabbix.conf php_value date.timezone Asia/Shanghai 4)更改zabbix server配置 [root@linux-node1 ~]# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak [root@linux-node1 ~]# sed -i 's@# DBPassword=@DBPassword=zabbix@g' /etc/zabbix/zabbix_server.conf [root@linux-node1 ~]# sed -i 's@# DBHost=localhost@DBHost=localhost@g' /etc/zabbix/zabbix_server.conf ------------------------------------------------- vim /etc/zabbix/zabbix_server.conf LogFile=/var/log/zabbix/zabbix_server.log DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix 5)啟動相關服務 [root@linux-node1 ~]# /etc/init.d/zabbix-server start Starting Zabbix server: [確定] [root@linux-node1 ~]# /etc/init.d/httpd start 正在啟動 httpd: [確定] [root@linux-node1 ~]# lsof -i:10051|wc -l 55 [root@linux-node1 ~]# lsof -i:80|wc -l 1
0
4、web介面安裝
上面的圖形操作就是建立了一個配置檔案,然後如果寫錯就可以去配置檔案改
登入Admin/zabbix
進入後改密碼
2.2 安裝zibbix客戶端
服務端也安裝
rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm yum install zabbix-agent -y
vim /etc/zabbix/zabbix_agentd.conf
81 Server= 10.0.0.7 (服務端ip)
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.0.0.7 (服務端ip)
ServerActive=127.0.0.1 (服務端ip)
Hostname=Zabbix server
/etc/init.d/zabbix-agentd start
2.3 新增zabbix主機組和主機
新增組
新增主機
2.4 建立使用者和組
zabbix報警是針對使用者和使用者組的。
建立使用者(不要急著存檔)
報警媒介先不填,因為預設的媒介不好用,需要手動新增,一會新增。
新增完,可以使用新使用者登入
2.5 新增專案及觸發器
1、客戶端新增一個檢查使用者的key,格式為key,命令
grep UserParameter /etc/zabbix/zabbix_agentd.conf
UserParameter=login-user,uptime | awk -F ' ' '{print $4}'
/etc/init.d/zabbix-agent restart
2、主機通過zabbix-get檢查
yum install zabbix-get -y
zabbix-get -s 客戶主機 -k 命令
[root@linux-node1 ~]# zabbix_get -s 10.0.0.8 -k login-user
login-user 獲取登入使用者的列表
3、web介面新增
主機介面選定主機,然後點選專案,點建立專案
4、新增觸發器
此處點新增,然後選擇主機
5、建立圖形
2.6 設定報警
1、設定動作
自定義報警型別
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_server.conf
435 AlertScriptsPath=/usr/lib/zabbix/alertscripts ##<<設定自定義指令碼的路徑
[root@linux-node1 alertscripts]# /etc/init.d/zabbix-server restart
之後寫相應指令碼
指令碼要支援三個引數
$1:使用者的介質,如郵箱,手機號等
$2:標題
$3:內容
[root@linux-node1 alertscripts]# cat login.sh
#!/bin/bash
MAIL_TITEL=$2
MAIL_CON=$3
echo "$MAIL_CON"|/bin/mail -s "$MAIL_TITEL" $1
echo "$1 $2 $3">>/tmp/login_zabbix.txt
新增媒介型別
在動作中設定
為使用者配置示警媒介
2.7 自定義模板
建立模板----模板中建立應用集----建立監控項-建立觸發器-畫圖等都搞進模板。
最後主機新增模板
注意點,使用老師的模板指令碼,另外新增多個類似模板點克隆再改
[root@lb-node2 zabbix]# cat zabbix_agentd.conf.d/zabbix-linux-plugin.conf UserParameter=linux_status[*],/etc/zabbix/zabbix_linux_plugin.sh "$1" "$2" "$3" #寫在/etc/zabbix/zabbix_agentd.conf中
2.8 web監控
web監控是針對主機的,別忘了觸發器
2.9 分散式監控、客戶端主動模式
2.9.1 客戶端被動模式
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=3
Server= 10.0.0.7
ServerActive=127.0.0.1
Hostname=Zabbix server
2.9.2 客戶端主動模式
[root@linux-node2 ~]# 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.0.0.7
Hostname=linux-node2.example.com
Include=/etc/zabbix/zabbix_agentd.d/
[root@linux-node2 ~]# /etc/init.d/zabbix-agent restart
服務端克隆模板,把模板裡專案全選,批量更新,專案型別改為主動方式
然後主機新增專案即可。
#克隆linux OS模板,注意更改連線,連線也是克隆的。
2.9.3 zabbix分散式
使用內網yum源
echo '192.168.0.200 mirrors.aliyun.com repo.zabbix.com' >>/etc/hosts
客戶端安裝zabbix-proxy
[root@linux-node2 ~]# yum install -y zabbix-proxy zabbix-proxy-mysql mysql-server
配置分散式
[root@linux-node2 ~]# rpm -ql zabbix-agent
/etc/init.d/zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
/usr/sbin/zabbix_agent
/usr/sbin/zabbix_agentd
/usr/share/doc/zabbix-agent-2.4.6
/usr/share/doc/zabbix-agent-2.4.6/userparameter_examples.conf
/usr/share/doc/zabbix-agent-2.4.6/zabbix_agent.conf
/usr/share/man/man8/zabbix_agentd.8.gz
[root@linux-node2 ~]# rpm -ql zabbix-proxy-mysql
/usr/sbin/zabbix_proxy_mysql
/usr/share/doc/zabbix-proxy-mysql-2.4.6
/usr/share/doc/zabbix-proxy-mysql-2.4.6/create
/usr/share/doc/zabbix-proxy-mysql-2.4.6/create/schema.sql
資料庫配置
[root@linux-node2 ~]# /etc/init.d/mysql start
mysql> create database zabbix_proxy character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
mysql> use zabbix_proxy
Database changed
mysql> source /usr/share/doc/zabbix-proxy-mysql-2.4.6/create/schema.sql;
Query OK, 0 rows affected (0.02 sec)
配置檔案配置
[root@linux-node2 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #0主動,1被動
Server=10.0.0.7 #主動模式設定
Hostname=proxy-node1 #必須改
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
ExternalScripts=/usr/lib/zabbix/externalscripts
[root@linux-node2 ~]# /etc/init.d/zabbix-proxy start
Starting Zabbix proxy: [確定]
[root@linux-node2 ~]# lsof -i:10051
配置介面,管理-分散式(代理)-建立代理-
之後新增主機(選上代理即可),要監控的機器agent配置檔案ip改成代理的ip
服務多重啟幾次,先stop再start
2.10 自動化監控
2.10.1 zabbix-agent自動註冊(使用proxy)
HostMetadataItem=system.uname
[root@linux-node2 ~]# 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.0.0.8 #這裡用了代理的ip
Hostname=linux-node2.example.com
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agentd.d/
配置-動作-事件源選擇自動註冊-建立動作
2.10.2 主機探索(不使用proxy,被動模式)
組態-探索--使用預設的就行,如下,
之後建立動作,事件源選探索,上面那個是自動註冊
然後剩下同上了
2.10.3 使用zabbix-api
https://www.zabbix.com/documentation/2.4/manual/api/reference
[root@linux-node1 ~]# /usr/share/zabbix/api_jsonrpc.php
獲取驗證
[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "123456"
},
"id": 1
}' http://10.0.0.7/zabbix/api_jsonrpc.php | python -mjson.tool
---------上面為輸入--下面為輸出-----
{
"id": 1,
"jsonrpc": "2.0",
"result": "6981d2f7663ac35b553ce7e4477f7f29"
}
-------
請求api,獲取監控主機,帶上SessionID
[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["hostid"]
},
"auth": "6981d2f7663ac35b553ce7e4477f7f29",
"id": 2
}' http://10.0.0.7/zabbix/api_jsonrpc.php | python -mjson.tool
------上面為輸入,下面為輸出----------
{
"id": 2,
"jsonrpc": "2.0",
"result": [
{
"hostid": "10084"
},
{
"hostid": "10115"
}
]
}
剩下看官網咖,官網提供各種方法。
https://www.zabbix.com/documentation/2.4/manual/api/reference/host/get
例子:建立主機,執行下面直接新增。
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "10.0.0.8",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
],
},
"auth": "9d670026e562405100a1a073231e7658",
"id": 1
}' http://10.0.0.7/zabbix/api_jsonrpc.php | python -mjson.tool
2.11 更改中文字型防止亂碼
講自己電腦的字型微軟雅黑上傳到linix上
[root@lvs1 fonts]# pwd ##2.2版本
/var/www/html/fonts
[root@lvs1 fonts]# mv DejaVuSans.ttf DejaVuSans1.ttf
[root@lvs1 fonts]# mv msyh.ttf DejaVuSans.ttf
[root@lvs1 fonts]# ll
總用量 21988
-rw-r--r-- 1 apache apache 741536 4月 22 15:56 DejaVuSans1.ttf
-rw-r--r-- 1 root root 21767952 6月 11 2009 DejaVuSans.ttf
[root@lvs1 fonts]# chown apache.apache DejaVuSans.ttf
或者直接更改系統的
/usr/share/fonts/dejavu/DejaVuSans.ttf
另外不同版本zabbix字型位置不一樣,名字也不一樣,下面是本文件的版本
[root@linux-node1 dejavu]# find / -type d -name "fonts"
/var/www/html/fonts
/etc/fonts
/usr/share/zabbix/fonts
/usr/share/fonts