一.安裝zabbix及解決圖表方塊字
php
1.安裝zabbix(配置好相關yum源,解決包依賴問題,參考官方文檔)mysql
yum install zabbix-agent zabbix-server-mysql zabbix-web-mysql mariadb-server -y
linux
2.更換PHP的時區web
vim /etc/php.inisql
data.timezone = "Asia/Shanghai"shell
3.配置mysql,解決編碼問題vim
vim /etc/my.cnfwindows
character-set-server=utf8
centos
mysql -uroot -p<password>bash
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
cd /usr/share/doc/zabbix-server-mysql-3.0.3/
zcat create.sql.gz | mysql -uroot zabbix
vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
4.其它配置
關閉sellinx
firewall-cmd --add-service=http
firewall-cmd --add-service=http --permanent
5.解決中文語言狀態預覽方塊字
/usr/share/zabbix/fonts (linux下zabbix字體存路徑 )到windows下載字體到此目錄字體的TTF後綴改成小寫
/usr/share/zabbix/include/defines.inc.php #修改字體的配置文件
define('ZBX_GRAPH_FONT_NAME', 'SIMKAI'); // font file name
二.添加被監控主機
1.安裝客戶端
yum install zabbix-agent.x86_64
2.配置客戶端
/etc/zabbix/zabbix_agentd.conf
Server=192.168.178.134
ServerActive=192.168.178.134
Hostname=centos7 #和服務器主機名稱保持一致
3.服務器配置
配置--主機--建立主機
1.在主機上建立監控項
配置--主機--監控項--建立監控項
2.key的使用
proc.num[<name>,<user>,<state>,<cmdline>]
proc.num[,,,] # name,user,state爲默認值
proc.num # 查看全部的里程,客戶端已經安裝了代理,代理會自動的監測系統中的不少信息
3.安裝zabbix-get獲取客戶端數據
yum install zabbix-get -y # 須要配置好yum源
4.zabbix_get的使用
zabbix_get -s 被監測服務器地址 -k 監測的key
zabbix_get -s 192.168.178.132 -k proc.num[,,,]
zabbix_get -s 192.168.178.132 -k proc.num[,zabbix,] # 四個,號後面不使用的,,能夠不寫,前面的,號不能忽略
zabbix_get -s 192.168.178.132 -k proc.num[,,,pro] # pro爲第四個值(cmdline),匹配關鍵字含有pro的進程
cmdline-->寫上一個關鍵字,好比寫pro,那麼在ps aux裏面command部分裏面出現pro的進程都匹配
5.在服務器上建立主機圖表
配置---主機---建立圖形
--------------------------------------------------------------------------------------------------------------------------------------------------
測試多進程監控腳本
#!/bin/bash
while :
do
echo 1 > /dev/null
done
--------------------------------------------------
#!/bin/bash
if [ $# -ne 1]; then
echo '必須跟一個數字'
exit 1
fi
echo "終止測試,請連續按ctrl+c"
trap 'killall -9 sh &> /dev/null ; rm -rf /tmp/aa*.sh' INT
for i in `seq 1 $1`
do
cp /root/aa.sh /tmp/aa${i}.sh
sh /tmp/aa${i}.sh &
done
--------------------------------------------------------------------------------------------------------------------------------------------------
6.自定義KEY
在客戶端進行設置
/etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/ # 在此目錄寫自定義腳本
語法: UserParameter=key的名稱,命令
例子:UserParameter=num-of,ps aux --no-header | wc -l
zabbix_get -s 192.168.178.132 -k num-of # 在服務器上執行觸發客戶端執行num-of的命令或腳本並將執行的結果回傳給服務器
語法:UserParameter=key的名稱[*],命令 $1
例子:UserParameter=pro[*],echo $1
zabbix_get -s 192.168.178.132 -k pro[1]
配置--主機--監控項--建立監控項
自定義的鍵值在選擇按鈕列表是找不到鍵值的,須要手工錄入
四.觸發器的使用及報警
1.觸發器的建立,針對某一個監控項
配置--主機--建立觸發器
僅僅建立觸發還不夠,必須建立一個動做,當知足觸發器的條件的話,而後要執行什麼操做
2.動態的建立
配置---動做--事件來源[觸發器]--建立動做
建立了一個動做--->當觸發器觸發的時候,則把信息發送給指定的人
當centos7.1上進程超過100的時則觸發了這個條件,觸發了動做會產生一些信息而且將這些信息發送給指定的人。
3.用戶管理
管理--用戶
決定admin收到信息以後要執行的操做,決定使用什麼方式報警:
a.郵件
決定admin這個用戶以什麼郵件地址做爲發件人
b.腳本
4.媒介類型的建立與修改
管理--報警媒介類型--建立媒介類型
5.微信警報 (企業公衆號)
配置一個觸發器同,當cpu超過80%的時候就開始微信報警
/etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts # 將微信腳本放至此目錄
/usr/lib/zabbix/alertscripts/WeiXin-Private-API/config.php # 修改此文件
/usr/lib/zabbix/alertscripts/WeiXin-Private-API/test.php
$testFakeId = "$argv[1]"; # 發送給指定的用戶
$msg="$argv[3]"; # 發送的信息內容
./weixin "owZmQwSvaFm1RmaYvmAdhoaemoDU" '' 'hello lincx' # 測試消息發送
五.其它設置
1.應用集的定義
把相關的監控項定義一個應用集,對監控項進行分類
配置--主機--應用集--建立應用集
2.主機組定義
基於服務器進行分類,對類型相同的服務器進行分組
3.模板的建立(應用集、監控項、觸發器 、圖形、聚合圖形、自動發現、Web監測,元素的集合被主機引用)
4.聚合圖形的使用(基於圖形)
5.幻燈片的使用(每隔一時間內自動切換多個聚合圖形)
6.網絡拓撲圖
插入背景圖(管理--通常--圖片--建立圖片)用於拓撲區分地理位置
7.宏定義
{$變量名} # 通常使用大寫字母,全局性引用
全局性的設置
主機級別的變量
管理--通常--宏--添加--更新
監控項的名稱、鍵值的參數能夠引用自定義的宏xx[,{$AA},]
網絡拓撲圖不能引用這種變量,使用的是內置的變量例如{HOST,NAME}
zabbix有不少內置的宏(查詢相關資料)
配置--主機--建立主機--宏定義(只能用於該主機,其它主機不能使用該主機自定義的宏)
七.自動化
1.網絡發現:zabbix服務器主動掃描環境中的主機,知足條件的話,自動的添加過來
使用第三方軟件
puppet
saltstack
配置--自動發現--建立自動發現
2.自動發現動做的建立
發現主機後在哪一個主機組裏進行添加主機、使用哪一個模板等的操做
2.1.配置--動做--事件源[自動發現]--建立動做
3.自動註冊:zabbix server不主動,而是客戶端主動去向zabbix server發送請求,要求註冊
服務器須要設置一個動做,指定哪些客戶端能加進來
配置--動做--事件源[自動註冊]--建立動做
/etc/zabbix/zabbix_agentd.conf
HostMetadata=xx # xx客戶端與服務端匹配的字符串
4.低級別發現(low-level discovery):
可讓其自動的發現客戶端要監測哪些東西
好比監測分區不一樣的機器的分區確定是不同的
vfs.fs.size[/boot,used]
vfs.fs.size[/,used]
不一樣機器不一樣分區須要逐個去設置比較繁瑣,可讓zabbix自動的去發現客戶端的分區狀況,而後根據實際狀況自動的定義監控項
zabbix_get -s 192.168.178.132 -k vfs.fs.discovery # 動態獲取被監控機器的分區類型
{#FSNAME}---> 掛載點
{#FSTYPE}---> 文件系統類型
低級別發現是基於模板的,在這個模板裏不須要定義具體的監控項,須要定義的是原型,監控項原型、圖表原型
當某個主機使用這個模板的時候,會把模板裏面的監控項原型轉變爲監控項、圖表原型轉變爲圖表
4.1.配置--模板--建立模板--自動發現--建立發現規則
經過vfs.fs.discovery能夠獲取客戶端全部的文件系統信息
4.2.配置--模板--自動發現--監控項原型--建立監控項原型
4.3.配置--模板--自動發現--圖形項原型--建立圖形原型
八.分佈式
1.安裝zabbix-proxy
配置好相關yum源
yum install zabbix-proxy zabbix-proxy-mysql mariadb-server -y
2.配置mysql,解決編碼問題
vim /etc/my.cnf
character-set-server=utf8
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 'zabbix';
cd /usr/share/doc/zabbix-proxy-mysql-3.0.3/
shell> mysql -uzabbix -p<password> zabbix < p_w_picpaths.sql
shell> mysql -uzabbix -p<password> zabbix < data.sql
3.代理服務器配置文件相關修改
/etc/zabbix/zabbix_proxy.conf
Server=192.168.178.134 # zabbix服務器的IP
DBHost=localhost
DBPassword=zabbix
Hostname=Zabbix proxy
SourceIP=192.168.178.132 # 代理服務器本身的IP
重啓動服務
systemctl restart zabbix_proxy
4.代理的配置
管理---代理---建立代理
清除日誌
cat /dev/nul > /var/log/zabbix/zabbix_agentd.log