Zabbix監(jiān)控工具

1.什么是監(jiān)控
監(jiān)視,控制
2.為什么要做監(jiān)控
教室: 監(jiān)控學(xué)員的學(xué)生狀況
超市: 防偷
馬路: 事故(事后追溯)
監(jiān)控:  本質(zhì)上是  行為  

系統(tǒng)為什么要做監(jiān)控:
監(jiān)控是整個運維乃至整個產(chǎn)品生命周期中最重要的一環(huán).
事前及時預(yù)警發(fā)現(xiàn)故障饵筑,事后提供詳實的數(shù)據(jù)用于追查定位問題。

3.監(jiān)控怎么做,比如我要監(jiān)控內(nèi)存的使用率,低于百分之20則報警
1.提取內(nèi)存的指標
2.判斷比對 ,與管理人員設(shè)定的閾值
3.大于百分之20, 則忽略
4.小于百分之20, 則觸發(fā)警告
4.監(jiān)控有哪些工具來輔助實現(xiàn)
cacti         用于監(jiān)控網(wǎng)絡(luò)設(shè)備   交換機 路由器 防火墻    流量為主
Nagios        用于監(jiān)控系統(tǒng)   
Zabbix        用于監(jiān)控系統(tǒng)    web界面  分布式  報警 自帶模板
open-falcon   小米公司
Prometheus+grafana
5.如何著手監(jiān)控
1.硬件監(jiān)控      ( 交換機  路由器  防火墻  服務(wù)器 )   DELL  IRDAC   ipmi
2.系統(tǒng)監(jiān)控      ( CPu  內(nèi)存  磁盤   IO  )
3.服務(wù)監(jiān)控      ( nginx  php   mysql   tomcat  ....... )
4.日志監(jiān)控      ( ELK 架構(gòu)    )
5.web監(jiān)控     ( 請求延時 響應(yīng)延時 加載時間  ..... pv uv ip )
6.業(yè)務(wù)監(jiān)控       新增用戶  流量  購買量 
7.分布式監(jiān)控 多機房監(jiān)控 proxy
8.自動化監(jiān)控 自動的添加主機進行監(jiān)控

6.單機時代如何監(jiān)控

命令監(jiān)控
監(jiān)控層面:

        cpu:    top htop
        內(nèi)存: free -m     大量消耗內(nèi)存會占用swap,如果沒有swap 則會觸oom
        磁盤:   df -h 空間  iotop
        網(wǎng)絡(luò):   ifconfig route iftop nethogs nethogs -v 3
        glances 工具

引用shell腳本 + crond 定時任務(wù) (監(jiān)控當前系統(tǒng)用戶登錄的數(shù)量 超過4 則報警)

for ip in {7..9}
do
    users=$(ssh root@172.16.1.$ip "who|wc -l")
    
    if [ $user -ge 3 ];then
        echo "報警通知  172.16.1.$ip"
    fi
done

--------------------------------引入zabbix監(jiān)控----------------------------------------

4.安裝zabbix4.0

1.配置yum倉庫

rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

2.安裝zabbix相關(guān)功能組件
DNS地址變更,網(wǎng)絡(luò)快可忽略
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1="8.8.4.4"
systemctl restart network

安裝php72w 依賴httpd環(huán)境陋桂,安裝php72

yum -y install php*   --skip-broken 

避免網(wǎng)絡(luò)延遲導(dǎo)致失敗時使用,多次嘗試下載

yum install zabbix-server-mysql zabbix-web-mysql httpd mariadb-server -y
yum install zabbix-web-mysql -y
yum install zabbix-web-mysql -y
yum install zabbix-web-mysql -y
yum install zabbix-web-mysql -y
yum install zabbix-web-mysql -y

————————————————

3.創(chuàng)建數(shù)據(jù)庫
# systemctl start mariadb
# systemctl enable mariadb
# mysql -uroot -e "create database zabbix character set utf8 collate utf8_bin;"
# mysql -uroot -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';"
4.導(dǎo)入數(shù)據(jù)至數(shù)據(jù)庫中
zcat /usr/share/doc/zabbix-server-mysql-4.0.19/create.sql.gz | mysql -uroot -p123123 zabbix
5.配置zabbix-server指向數(shù)據(jù)庫
[root@zabbix-server ~]# grep '^D' /etc/zabbix/zabbix_server.conf 
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
6.啟動 Zabbix server 進程
# systemctl enable zabbix-server
# systemctl start zabbix-server
7.配置Zabbix 前端 web頁面
vim /etc/httpd/conf.d/zabbix.conf
    .....
    php_value date.timezone Asia/Shanghai
    ....
systemctl restart httpd  #重啟Httpd
8.通過url訪問zabbix-server

可通過ip地址訪問,例:10.0.0.7:10050

    1.根據(jù)提示填寫信息即可
    2.默認的用戶名和密碼是
        username: Admin
        password: zabbix

當zabbix初始界面出現(xiàn)錯誤
解決步驟:

vim /etc/php.ini

post_max_size8M16M

max_execution_time30300

max_input_time60300

date.timezone = Asia/Shanghai

systemctl restart httpd.service 
9.登錄zabbix后

1.修改密碼
頁面右上角小人頭,進行修改
2.將zabbix修改為中文

10.如何快速的監(jiān)控一臺主機

1.需要安裝zabb-agent
2.agent版本有有要求?
平級
低于

3.安裝zabbix-agent (沒有依賴)

rpm -Uvh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.14-1.el7.x86_64.rpm

4.配置zabbix-agent,允許172.16.1.71 能夠采集172.16.1.7本地的數(shù)據(jù)

[root@web01 ~]# 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=172.16.1.71
Include=/etc/zabbix/zabbix_agentd.d/*.conf

5.啟動zabbix-agent

    systemctl enable zabbix-agent
    systemctl start zabbix-agent    
    systemctl restart  zabbix-agent

6.登錄zabbix-server web界面

        1.配置-->主機-->添加主機
        2.模板-->關(guān)聯(lián)-->Template Linux OS 

11.zabbix中文亂碼

    rpm -ql zabbix-web | grep  /usr/share/zabbix/assets/fonts
    在主機\C\windows下的font中上傳
     cd  /usr/share/fonts/dejavu
     mv DejaVuSans.ttf DejaVuSans_bak.ttf
     mv msyh.ttf DejaVuSans.ttf

12.zabbixserver如何監(jiān)控自己本身?

 rpm -Uvh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.14-1.el7.x86_64.rpm
    systemctl start zabbix-agent
    systemctl enable zabbix-agen
13.zabbix基礎(chǔ)架構(gòu)**
zabbix-agent
zabbix-server
mariadb
zabbix-web
14.zabbix架構(gòu)拆分

j將LAMP架構(gòu)拆分為LAP+MySQL (拆分數(shù)據(jù)庫到單臺主機 )

172.16.1.71 zabbix-server  zabbix-web
172.16.1.51 數(shù)據(jù)庫

1.安裝數(shù)據(jù)庫

    yum install mariadb-server -y
    systemctl enable mariadb
    systemctl start mariadb

2.創(chuàng)建zabbix庫,配置遠程授權(quán)用戶

    create database zabbix character set utf8 collate utf8_bin;
    grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';

3.在172.16.1.71上進行如下操作

    [root@zabbix-server ~]# mysqldump -B zabbix >zabbix.sql
    [root@zabbix-server ~]# cat zabbix.sql | mysql -h 172.16.1.51 -uzabbix -pzabbix zabbix

4.修改zabbix-server配置的指向

[root@zabbix-server ~]# cat /etc/zabbix/zabbix_server.conf
#DBHost=localhost
DBHost=172.16.1.51
[root@zabbix-server ~]# systemctl restart zabbix-server

5.修改zabbix-web配置的指向

[root@zabbix-server ~]# vim /etc/zabbix/web/zabbix.conf.php
$DB['SERVER']   = '172.16.1.51';

[root@zabbix-server ~]# systemctl restart httpd

自定義監(jiān)控項

15.如何快速監(jiān)控一個自定義對象,比如監(jiān)控當前用戶登錄數(shù)量

Format: UserParameter=<key>,<shell command>
1.使用shell命令提取當前用戶登錄的數(shù)量 who|wc -l
2.使用zabbix-agent將shell命令提取的結(jié)果封裝一個監(jiān)控項 UserParameter
3.zabbix-agent自己檢查該監(jiān)控項是否能正確提取到對應(yīng)的值 zabbix_agentd -p
4.zabbix-server通過zabbix-get檢查zabbix-agent端自定義的監(jiān)控項是否正常 zabbix_get -s 172.16.1.7 -k user_login
5.登錄zabbix-web頁面, 找到對應(yīng)的主機, 然后添加對應(yīng)的監(jiān)控項.
6.點擊檢測中--->最新數(shù)據(jù)--->選擇主機--->選擇應(yīng)用級-->檢查監(jiān)控項指標的變化

cat /etc/zabbix/zabbix_agentd.d/all.conf 
UserParameter=user_login,who|wc -l
    
systemctl restart zabbix-agent

zabbix-get   server端檢測agent端的取值

server端手動測試取值結(jié)果
server端安裝zabbix-get

rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-get-4.0.14-1.el7.x86_64.rpm

zabbix_get -s 172.16.1.7 -k user_login

16.如何快速設(shè)定一個自定義閾值,比如超過4個人登錄則觸發(fā)報警

1.基于已創(chuàng)建好的監(jiān)控項設(shè)定閾值
2.如果達標則觸發(fā)
3.如果不達標,繼續(xù)探測,監(jiān)視

17.前端展示報警:

1.點擊右上角小人頭-->正在發(fā)送消息-->勾選前端信息中



監(jiān)控項职辅、觸發(fā)器、報警通知

1.詳細講解自定義監(jiān)控

1.認識Template OS Linux 模塊的所有監(jiān)控項都是干什么的
2.自定義一個監(jiān)控項  ( 創(chuàng)建監(jiān)控項中的所有選項 )


3.歷史保留如何計算? ( 數(shù)據(jù) )
days*(items/refresh rate)*24*3600*bytes
items:監(jiān)控項數(shù)量聂示。
days:保留歷史數(shù)據(jù)的天數(shù)域携。
refresh rate:監(jiān)控項的更新間隔。
bytes:保留單個值所需要占用的字節(jié)數(shù)鱼喉,依賴于數(shù)據(jù)庫引擎秀鞭,通常為 ~90 字節(jié)趋观。   

90*(200/60)*24*3600   ~ 24MB    * 200主機 =  5G


4.趨勢保留如何計算? ( 圖形 )
days*(items/3600)*24*3600*bytes
items:監(jiān)控項數(shù)量。
days:保留歷史數(shù)據(jù)的天數(shù)锋边。
bytes:保留單個趨勢數(shù)據(jù)所需要占用的字節(jié)數(shù)皱坛,依賴于數(shù)據(jù)庫引擎,通常為 ~90 字節(jié)豆巨。

365*(200/3600)*24*3600  ~ 2MB     * 200主機  = 500MB

5.事件如何計算?
days*events*24*3600*bytes
events:每秒產(chǎn)生的事件數(shù)量剩辟。假設(shè)最糟糕的情況下,每秒產(chǎn)生 1 個事件往扔。
days:保留歷史數(shù)據(jù)的天數(shù)贩猎。
bytes:保留單個趨勢數(shù)據(jù)所需的字節(jié)數(shù),取決于數(shù)據(jù)庫引擎萍膛,通常為 ~170 字節(jié)吭服。

365*1*24*3600    ~ 30MB     *200主機  = 6G 

https://www.zabbix.com/documentation/4.0/zh/manual/installation/requirements


6.自定義監(jiān)控TCP 11種狀態(tài)?
    netstat -an | grep -c ESTABLISHED
    netstat -an | grep -c LISTEN
    netstat -an | grep -c SYN_SENT
    netstat -an | grep -c TIME_WAIT

    1.使用shell命令提取狀態(tài)
    2.通過zabbix-agent將提取的狀態(tài)封裝為一個又一個的監(jiān)控項目
    3.檢查封裝后的監(jiān)控項是否取值正確
    4.創(chuàng)建一個模板
    5.基于模板創(chuàng)建監(jiān)控項
    6.將主機關(guān)聯(lián)該模板,完成監(jiān)控
    7.檢查監(jiān)控后的數(shù)據(jù)

UserParameter=tcp[*], netstat -lntp | grep -c "$1"

7.如何讓其他機器也能使用該模板?
    1.推送*.conf文件,這樣其他主機也能提取到key對應(yīng)的值
    2.將主機關(guān)聯(lián)對應(yīng)的模板

2.自定義觸發(fā)器
https://www.cnblogs.com/kingle-study/p/10172413.html

1.監(jiān)控內(nèi)存的百分比,   如果 低于20%  則觸發(fā)報警
    1.通過shell命令提取內(nèi)存的百分比
    2.設(shè)定觸發(fā)器

多條件觸發(fā)器
2.監(jiān)控內(nèi)存, 以及swap 當內(nèi)存低于百分之20,并且swap使用率超過百分之1% 則觸發(fā)報警
內(nèi)存取的是剩余 20
swap取的是已使用 1

變量
監(jiān)控項
key  | 鍵值 

and #并且 多個監(jiān)控項,同時成立
or #或者 多個監(jiān)控項,一個成立

last() #比對最新的值
avg() #平均值 網(wǎng)絡(luò)的流量 avg(5m) 進程 負載 IO
diff() #比對上一次文件的內(nèi)容
nodata() #收不到數(shù)據(jù)進行報警nodata(5m) 探測主機存活
test.nodata(5m) = 1 這個條件為真 獲取不到數(shù)據(jù)報警
(5m) #表示最近5分鐘得到值
(#5) #表示最近5次得到的值

3.自定義圖形
1.基于監(jiān)控項, 創(chuàng)建圖形, 可以在模板上創(chuàng)建,這個所有的主機都應(yīng)用成功
2.基于圖形創(chuàng)建, 聚合圖形, 將多個小圖片整合至一個大圖片上 ( 檢測中--->聚合圖形 )
3.基于聚合圖形創(chuàng)建幻燈片, 可以讓多張聚合圖形進行輪播 (大屏顯示器 --> )

擴展: 如果希望出更好看,更炫的圖,需要使用grafana   
    注意: grafana只是一個出圖,所有的數(shù)據(jù)都是zabbix提供   (  皮膚 )


    1.安裝grafana
        # yum localinstall grafana-6.4.4-1.x86_64.rpm 
    
    
    2.啟動grafana  默認監(jiān)聽在3000端口
        # systemctl start grafana-server

    3.安裝插件, 集成zabbix
        # grafana-cli plugins install alexanderzobnin-zabbix-app
        # systemctl restart grafana-server

    4.啟用已安裝好的zabbix插件,這樣就完成了集成
    5.配置zabbix數(shù)據(jù)源
    
    6.grafana  變量   ()

    1.實現(xiàn)一個單條件觸發(fā)器
    2.實現(xiàn)一個多條件觸發(fā)器
    3.基于監(jiān)控項
        1.圖形
        2.聚合圖形
        3.幻燈片
    4.grafana安裝

3.自定義報警

基于監(jiān)控項-->觸發(fā)器-->執(zhí)行動作--> ( 通知  |  執(zhí)行命令  
1.怎么發(fā)        
2.發(fā)什么
3.發(fā)給誰

郵箱報警
1.修改報警媒介
smtp.qq.com
端口:465
HELo: qq.com
SMTP電郵: 發(fā)件人郵箱 *****qq.com
安全連接: SSL
打開驗證對端,驗證主機
認證:
用戶:發(fā)件人郵箱 *****qq.com
密碼:郵箱授權(quán)碼
2.收件人設(shè)置:
右上角小人頭蝗罗,報警媒介填寫接收人郵箱

    1.啟用動作
    2.動作中將所有的報警消息通過介質(zhì)發(fā)送給administrator用戶
    3.配置介質(zhì)--> 新建一個發(fā)郵件的郵箱介質(zhì)
    4.配置administrator用戶, 填寫收件人郵件

https://www.zabbix.com/documentation/3.4/zh/manual/appendix/macros/supported_by_location

修改報警的消息

報警主機:{HOST.NAME1}
報警服務(wù): {ITEM.NAME1}
報警Key1: {ITEM.KEY1}:{ITEM.VALUE1}
報警Key2: {ITEM.KEY2}:{ITEM.VALUE2}
嚴重級別: {TRIGGER.SEVERITY}

3.配置故障恢復(fù)消息艇棕,消息內(nèi)容如下:
恢復(fù)主機:{HOST.NAME1}
恢復(fù)服務(wù): {ITEM.NAME1}
恢復(fù)Key1:{ITEM.KEY1}:{ITEM.VALUE1}
恢復(fù)Key2: {ITEM.KEY2}:{ITEM.VALUE2}

{ALERT.SENDTO} #發(fā)送的用戶
{ALERT.SUBJECT} #發(fā)送的主題
{ALERT.MESSAGE} #發(fā)送的內(nèi)容

郵件報警
微信報警
安裝python-pip 模塊
     yum  install python-pip -y
     pip install requests
     cd /usr/lib/zabbix/alertscipts
     rz weixin.py chown +x weixin.py
     ./weixin.py  WeiXinID   Subject Messages
切記一定要刪除,否則導(dǎo)致權(quán)限問題串塑。
        rm -f /tmp/weixin.log
        
操作流程:單擊管理---> 報警媒介類型--> 創(chuàng)建媒介類型      

企業(yè)微信地址沼琉,個人可注冊
https://work.weixin.qq.com/

登錄企業(yè)微信

  1. 企業(yè) -> 微工作臺里可以直接微信關(guān)注,無需要下載企業(yè)微信
  2. 通訊錄里的賬號在發(fā)微信腳本中要用到
  3. 應(yīng)用與小程序可創(chuàng)建應(yīng)用

發(fā)微信的python腳本/usr/local/zabbix/alertscripts/weixin.py
[root@zabbix-server alertscripts]# cat weixin.py

!/usr/bin/env python

-- coding: utf-8 --

author: bgx

date: 2018

comment: zabbix接入微信報警腳本

import requests
import sys
import os
import json
import logging

logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')

corpid='xxx'
appsecret='xxx'
agentid=xxx

獲取accesstoken

token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']

發(fā)送消息

msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

touser=sys.argv[1]
subject=sys.argv[2]

toparty='3|4|5|6'

message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
"touser": touser,

"toparty": toparty,

    "msgtype": "text",
    "agentid": agentid,
    "text": {
            "content": message
    },
    "safe":0

}

req=requests.post(msgsend_url, data=json.dumps(params))

logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)

測試腳本
/usr/local/zabbix/alertscripts/weixin.py 'abc' 'weixin_subject' 'weixin_message'

釘釘報警

釘釘企業(yè)的地址
https://oa.dingtalk.com/

釘釘企業(yè)告警的注意事項
1.通訊錄管理里的userid發(fā)釘釘需要用到
2.工作臺里可自建應(yīng)用
3.微應(yīng)用管理可以管理應(yīng)用
4.開發(fā)賬號管理可以查看密碼信息

發(fā)送釘釘告警的腳本/usr/local/zabbix/alertscripts/zabbix_dingding.py

!/usr/bin/python

-- coding: utf-8 --

curl 'https://oapi.dingtalk.com/gettoken?corpid=xxx&corpsecret=xxx'

import json,urllib2,sys

appkey = 'dingbb89fne7xgn86dri'
appsecret = 'c81LS_3h7pDRB6ul94tzXfyfcwmWaoy68yr-PGn7eG6MVE8RGXqADmw2DYQFsOsX'
agentid = '682880648'
touser = sys.argv[1]
content = sys.argv[2]

tockenurl = 'https://oapi.dingtalk.com/gettoken?corpid=' + appkey + "&corpsecret=" + appsecret
tockenresponse = urllib2.urlopen(tockenurl)
tockenresult = json.loads(tockenresponse.read().decode('utf-8'))
tocken = tockenresult['access_token']

sendurl = 'https://oapi.dingtalk.com/message/send?access_token=' + tocken
headers = {
'Content-Type':'application/json'
}
main_content = {
"touser": touser,
"toparty": "",
"agentid": agentid,
"msgtype": "text",
"text": {
"content": content
}
}
main_content = json.dumps(main_content)
req = urllib2.Request(sendurl,headers=headers)
response = urllib2.urlopen(req, main_content.encode('utf8'))
print(response.read().decode('utf-8'))

手動發(fā)釘釘告警測試
chmod +x /usr/local/zabbix/alertscripts/zabbix_dingding.py
/usr/local/zabbix/alertscripts/dingding.py manager8495 '監(jiān)控測試'

{ALERT.SENDTO} #發(fā)送的用戶
{ALERT.SUBJECT} #發(fā)送的主題
{ALERT.MESSAGE} #發(fā)送的內(nèi)容

4.告警升級 | 告警抑制

1.遠程執(zhí)行命令
2.告警抑制是怎么回事

1個故障 出現(xiàn) 發(fā)郵件給運維 郵件
超過1分鐘沒有被處理 發(fā)郵件給經(jīng)理 微信
超過2分鐘沒有被處理 發(fā)郵件給總監(jiān) 釘釘

7.自定義模板
8.自定義監(jiān)控Nginx PHP


自定義監(jiān)控項模板桩匪,及服務(wù)的狀態(tài)監(jiān)控

1.模板的重要
1.手動添加監(jiān)控比較麻煩打瘪,監(jiān)控項 -> 圖形 -> 觸發(fā)器。
問題:
1.例如: 100臺服務(wù)器需要檢查81端口
2.例如: 100臺服務(wù)器81改成82
解決:
使用模板可以解決以上問題, 只需要修改一下模板,然后所有的主機都生效

2.兩種模板
系統(tǒng)自帶模板
自定義模板

自定義模板的使用
1.創(chuàng)建模板吸祟,模板得屬于某個主機組(Templates)
2.在模板中創(chuàng)建監(jiān)控項目、觸發(fā)器桃移、創(chuàng)建圖形
3.新增監(jiān)控主機時添加對應(yīng)的模板
4.更改模板的監(jiān)控項屋匕,所以使用模板的主機都會自動變更

建議: 監(jiān)控的時候都使用模板, 因為模板添加啥的都方便,修改也比較方便

1.zabbix監(jiān)控windows

環(huán)境:
1.zabbix server的ip:10.0.0.71
2.被監(jiān)控windows的ip:10.0.0.1

1.下載Zabbix Agent

https://www.zabbix.com/downloads/4.0.14/zabbix_agents-4.0.14-win-amd64.zip

2.Windows安裝zabbix agent
編輯配置文件D:\zabbix_agents-4.0.14-win-amd64\conf\zabbix_agentd.conf
Server=10.0.0.71

3.運行cmd借杰,將zabbix命令注冊為服務(wù)(使用管理員) services.msc
"d:\zabbix_agents-4.0.14-win-amd64\bin\zabbix_agentd.exe" --config d:\zabbix_agents-4.0.14-win-amd64\conf\zabbix_agentd.conf --install

4.cmd運行
查看監(jiān)聽netstat -an|find "10050"


5.zabbix_get獲取windows信息
zabbix_get -s xxx -k system.uname
zabbix_get -s xxx -k vm.memory.size[free]
zabbix_get -s xxx -k vfs.fs.size[C:,pfree]

6.windows防火墻放開10050端口
1.防火墻關(guān)閉的可以跳過這步
2.高級設(shè)置->入站規(guī)則->新建規(guī)則->端口->10050->允許連接->所有

7.zabbix頁面上添加windows主機
1.直接應(yīng)用windows模板
2.驗證Windows監(jiān)控是否正常

編寫一個最簡單的bat腳本D:\zabbix_agents-4.0.14-win-amd64\echo.bat
@echo off
echo "100"

zabbix配置添加D:\zabbix_agents-4.0.14-win-amd64\conf\zabbix_agentd.conf
UserParameter=echo.test,D:\zabbix_agents-4.0.14-win-amd64\echo.bat


2.zabbix監(jiān)控Nginx

1.監(jiān)控Nginx什么內(nèi)容
    監(jiān)控Nginx⑦中狀態(tài)

2.怎么監(jiān)控
    1.開啟Nginx stub status 模塊
    2.使用curl命令獲取stub_status的數(shù)據(jù)
    3.將獲取數(shù)據(jù)的方法封裝為一個又一個的監(jiān)控項

3.實施監(jiān)控
    1.開啟nginx stub_status狀態(tài)
    


    2.編寫腳本,提取nginx status的指標
    [root@web01 scripts]# cat nginx_status.sh 
    Nginx_status_file=/tmp/nginx_status.tmp
    Nginx_status_name=status.oldxu.com
    Nginx_status_path=/nginx_status
    curl -sH host:${Nginx_status_name} http://127.0.0.1:80${Nginx_status_path} > ${Nginx_status_file}

    case $1 in
        active)
            echo $[ $(awk 'NR==1 {print $NF}' ${Nginx_status_file}) -1 ]
            ;;
        accepts)
            echo $[ $(awk 'NR==3 {print $1}' ${Nginx_status_file}) - 1 ]
            ;;
        handled)
            echo $[ $(awk 'NR==3 {print $2}' ${Nginx_status_file}) - 1 ]
            ;;
        requests)
            echo $[ $(awk 'NR==3 {print $3}' ${Nginx_status_file}) - 1 ]
            ;;
        reading)
            awk 'NR==4 {print $2}' ${Nginx_status_file}
            ;;
        writing)
            awk 'NR==4 {print $4}' ${Nginx_status_file}
            ;;
        waiting)
            awk 'NR==4 {print $NF}' ${Nginx_status_file}
            ;;
        *)
            echo "USAGE: $0 [active|accepts|handled|requests|reading|writing|waiting]"
            ;;
    esac


    3.配置zabbix-agent, 添加自定義監(jiān)控項
    [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf 

UserParameter=nginx_status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.sh "$1"

    4.重啟zabbix-agent
    
    
    5.zabbix-server使用zabbix-get獲取監(jiān)控項的值
    [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status[active]
    10
    [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status[requests]
    20
    
    6.登錄zabbix-web
        1.創(chuàng)建模板
        2.創(chuàng)建監(jiān)控項
        3.創(chuàng)建圖形
        4.創(chuàng)建觸發(fā)器
        5.關(guān)聯(lián)對應(yīng)主機
        

1.nginx的狀態(tài)監(jiān)控
2.nginx日志監(jiān)控 { 200 300 301 304 404 403 500 401 ....  這些狀態(tài)出現(xiàn)的次數(shù)}


    1.提取日志
    awk '{print $9}' /var/log/nginx/access.log|grep -c "302"
    
    2.自定義監(jiān)控項,支持傳參
    [root@web01 ~]# cat  /etc/zabbix/zabbix_agentd.d/nginx.conf 
    UserParameter=nginx_status_code[*], awk '{print $9}' /var/log/nginx/access.log|grep -c "$1"

    [root@web01 ~]# systemctl restart zabbix-agent
    

    3.server使用zabbix-get獲取
    [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status_code[200]
    10000
    [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status_code[302]
    327556


    4.登錄zabbix-web
        1.創(chuàng)建模板
        2.創(chuàng)建監(jiān)控項
        3.創(chuàng)建圖形
        4.創(chuàng)建觸發(fā)器
        5.關(guān)聯(lián)對應(yīng)主機

================================================================================
監(jiān)控php
1.監(jiān)控php端口
2.監(jiān)控php進程 master worker
3.監(jiān)控php狀態(tài)

實施:
    1.如何開啟php狀態(tài)
    2.獲取php狀態(tài)中重要的指標
    3.編寫腳本支持傳參



1.開啟php的狀態(tài)模塊
[root@web01 ~]# cat /etc/php-fpm.d/www.conf
....
pm.status_path = /fpm_status
....


2.配置nginx,將http請求轉(zhuǎn)發(fā)給php處理
[root@web01 conf.d]# cat status.oldxu.com.conf 
server {
    listen 80;
    server_name status.oldxu.com;
    location /fpm_status {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}


3.php-fpm狀態(tài)指標含義
[root@web01 conf.d]# curl -H Host:status.oldxu.com http://127.0.0.1/fpm_status
pool:                 www
process manager:      dynamic
start time:           20/Nov/2019:15:15:19 +0800
start since:          200
accepted conn:        22    #當前池接受的請求數(shù)
listen queue:         0     #請求隊列,如果這個值不為0,那么需要增加FPM的進程數(shù)量
max listen queue:     0     #請求隊列最高的數(shù)量
listen queue len:     128   #socket等待隊列長度
idle processes:       5     #空閑進程數(shù)量
active processes:     1     #活躍進程數(shù)量
total processes:      6     #總進程數(shù)量
max active processes: 1     #最大的活躍進程數(shù)量(FPM啟動開始計算)
max children reached: 0     #超過最大進程數(shù)的峰值的次數(shù),如果不為0,需要調(diào)整進程的最大活躍進程數(shù)量


4.編寫取值腳本
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/fpm_status.sh 
#!/usr/bin/bash

fpm_status_file=/tmp/fpm_status.tmp
fpm_status_name=status.oldxu.com
fpm_status_path=/fpm_status

curl -sH host:${fpm_status_name} http://127.0.0.1:80${fpm_status_path} > ${fpm_status_file}

case $1 in
    accepted_conn)
        awk '/accepted conn:/{print $NF}' ${fpm_status_file}
        ;;
    listen_queue)
        awk '/^listen queue:/{print $NF}' ${fpm_status_file}
        ;;
    max_listen_queue)
        awk '/^max listen queue:/{print $NF}' ${fpm_status_file}
        ;;
    active_processes)
        awk '/^active processes:/{print $NF}' ${fpm_status_file}
        ;;
    idle_processes)
        awk '/^idle processes:/{print $NF}' ${fpm_status_file}
        ;;
    total_processes)
        awk '/^total processes:/{print $NF}' ${fpm_status_file}
        ;;
    max_active_processes)
        awk '/^max active processes:/{print $NF}' ${fpm_status_file}
        ;;
    max_children_reached)
        awk '/^max children reached:/{print $NF}' ${fpm_status_file}
        ;;
    *)
        echo "USAGE: $0 [accepted_conn|listen_queue|max_listen_queue|active_processes|idle_processes|total_processes|max_active_processes|max_children_reached]"
        ;;
esac

    

5.自定義監(jiān)控項,支持傳參
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/fpm.conf

UserParameter=fpm.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/fpm_status.sh "$1"

[root@web01 ~]# systemctl restart zabbix-agent
    
6.server使用zabbix-get獲取
[root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k fpm.status[accepted_conn]
2031
[root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k fpm.status[max_active_processes]
50


7.登錄zabbix-web
    1.創(chuàng)建模板
    2.創(chuàng)建監(jiān)控項
    3.創(chuàng)建圖形
    4.創(chuàng)建觸發(fā)器
    5.關(guān)聯(lián)對應(yīng)主機

==============================================================================
Mysql的基礎(chǔ)監(jiān)控
1.進程存活
2.檢測端口

Mysql的高級監(jiān)控說明
Mysql提供show global status可以實現(xiàn)對Mysql的高級監(jiān)控
高級監(jiān)控包含監(jiān)控Mysql連接數(shù)过吻,增刪改查數(shù),流量等

其他的監(jiān)控mysql的方式
天兔 (文檔)
percona (視頻)

監(jiān)控命令詳解mysql -uroot -poldxu.com -e 'show global status'
Threads_connected:連接數(shù)
Com_select:查詢總量
Com_insert:插入總量
Com_update:更新總量
Com_delete:刪除總量
Bytes_received: 流入總流量
Bytes_sent:流出總流量
Slow_queries:慢查詢總量

1.編寫取值腳本check_mysql.sh
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh

!/usr/bin/bash

port=1 key=2
mysql -uroot -poldxu.com -P{port} -e "show global status" |grep "{key}\s" |awk '{print $2}'

2.測試監(jiān)控Shell腳本
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh 3306 Threads_connected

3.Zabbix自定義監(jiān)控項
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh "1" "2" 2>/dev/null

重啟agent

4測試能否獲取到值
zabbix_get -s xxx -k mysql.status[3306,Threads_connected]
zabbix_get -s xxx -k mysql.status[3306,Com_insert]

5.使用Template DB MySQL模板監(jiān)控Mysql 利用自帶的模板改一改
mysql.status[3306,Threads_connected]
mysql.status[3306,Com_select]
mysql.status[3306,Bytes_received]
mysql.status[3306,Bytes_sent]

寫一個測試的程序測一下
[root@web01 ~]# cat mysql.sh
for i in {1..1000}
do
mysql -uroot -poldxu.com -h 127.0.0.1 -e "create database IF NOT EXISTS db;
use db;
DROP TABLE IF EXISTS test{i}; create table test{i}(id int);
insert into db.test{i} values (123456); select * from db.test{i};
delete from test${i} where id=123456;"
done
==============================================================================
Mysql主從監(jiān)控的必要性
1.如果發(fā)生主從同步異常蔗衡,業(yè)務(wù)會出問題
2.如果從庫是用來備份的纤虽,會導(dǎo)致數(shù)據(jù)丟失

Mysql主從同步監(jiān)控說明
1.從庫運行show slave status\G可以來查看主從同步信息
Slave IO Running 可以觀察從庫的IO進程是否正常,IO進程用于同步二進制日志
Slave SQL Running 可以觀察從庫的SQL進程是否正常绞惦,SQL進程用于執(zhí)行二進制日志
Seconds Behind Master代表主從同步的延時時間

1.監(jiān)控Mysql主從的Shell腳本mysql_slave_status.sh
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh

!/usr/bin/bash

port=1 key=2
mysql -uroot -poldxu.com -P{port} -e "show slave status\G"|grep "{key}:"|awk '{print $2}' 2>/dev/null

2.Shell腳本測試
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Slave_SQL_Running
Yes
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Slave_IO_Running
Yes
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Seconds_Behind_Master
0

3.Zabbix自定義Key監(jiān)控Mysql主從
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql.slave.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh "1" "2" 2>/dev/null

重啟Agent

4.創(chuàng)建監(jiān)控模板Template Mysql Slave Status
mysql.slave.status[3306,Slave_IO_Running]
mysql.slave.status[3306,Slave_SQL_Running]
mysql.slave.status[3306,Seconds_Behind_Master]

5.定義解決器來判斷主從同步是否異常

1.觸發(fā)器一: 兩個狀態(tài)都要為Yes 
{Template MySQL Slave Status:mysql.slave.status[3306,Slave_IO_Running].str(Yes)}=0 or {Template MySQL Slave Status:mysql.slave.status[3306,Slave_SQL_Running].str(Yes)}=0

2.觸發(fā)器二: 延時不能超過100
{Template MySQL Slave Status:mysql.slave.status[3306,Seconds_Behind_Master].last()}>100

網(wǎng)絡(luò)發(fā)現(xiàn)逼纸、主動注冊

1.zabbix的snmp監(jiān)控? ( 不重要 )
2.web監(jiān)控
pv uv ip
請求延時
響應(yīng)延時
加載時間
網(wǎng)站慢則報警

4.自動化監(jiān)控:
自動發(fā)現(xiàn),網(wǎng)絡(luò)發(fā)現(xiàn)
主動注冊
主動模式與被動模式區(qū)別?
主動模式與被動模式效果展示?

https://blog.csdn.net/qq_28657577/article/details/82834442

snmp基礎(chǔ)介紹

snmp全稱是簡單網(wǎng)絡(luò)管理協(xié)議

為什么要用?
    路由器交換機無法安裝agent程序,但是都提供snmp服務(wù)端, 我們可以使用zabbix的snmp方式監(jiān)控snmp服務(wù)端的數(shù)據(jù)

snmp基礎(chǔ)概念:
OID:
內(nèi)存的大小:.1.3.6.1.2.1.25.2.2.0
內(nèi)存的剩余:.1.3.6.1.2.1.25.2.2.1
任何一個指標在snmp中都有一個唯一的值進行表示济蝉,那么oid排列順序是以樹狀信息排列杰刽。

MIB庫:統(tǒng)計所有的old庫(國際標準)
    獲取內(nèi)存信息菠发,hrMemorySize.0

可以理解MIB是域名,比較好記憶贺嫂。  OID是IP地址滓鸠,不太好記憶。

snmp版本:
    v1:不支持加密第喳,任何人都可以取值, 不安全
    v2:簡單加密版糜俗,通過口令才可以取值  通過 community設(shè)定口令
    v3:復(fù)雜加密,采集效率比較低
    目前使用的最多的還是v2版本

snmp服務(wù)端安裝

1.安裝
[root@web02 ~]# yum install net-snmp -y

2.配置
[root@web02 ~]# vim /etc/snmp/snmpd.conf
#public是默認密碼曲饱,建議修改
com2sec notConfigUser default oldxu

#限制叢樹杈哪個地方開始取值悠抹,如果需要監(jiān)控的信息,設(shè)置.1從頂點開始
view    systemview    included   .1

3.啟動
[root@web02 ~]# systemctl enable snmpd.service
[root@web02 ~]# systemctl start snmpd

4.客戶端安裝命令測試取值
# yum install net-snmp-utils -y
# snmpwalk -v2c -c oldxu 172.16.1.7 .1.3.6.1.2.1.25.2.2.0 #OID方式
# snmpwalk -v2c -c oldxu 172.16.1.7 hrMemorySize.0 #MIB方式

5.在zabbix-web界面直接添加即可

總結(jié):
1.snmp介紹
OID
MIB
版本
2.snmp服務(wù)安裝配置啟動測試

1.zabbix基礎(chǔ)架構(gòu)
2.zabbix內(nèi)部資源

2.web監(jiān)控
pv uv ip
1.awk
2.騰訊分析 百度統(tǒng)計 google分析
3.piwiki ---> 改名matomo
4.自建流量分析平臺

1.進入騰訊移動分析平臺 html應(yīng)用 別人家
2.給一份js的代碼
3.將js的代碼加入網(wǎng)站
4.等待一天 就能查看到指標

2.自己家 開源matomo
php+mysql 方式開發(fā) LNMP環(huán)境 + matomo代碼 = 統(tǒng)計網(wǎng)站

1.準備好一個blog站點  +  qq主題
2.安裝matomo程序
3.matomo添加我們的網(wǎng)站,會生成一個js的代碼
4.登錄blog 將js代碼添加進主題
5.用戶模擬訪問測試
6.登錄matomo查看pv 情況


注意: 在內(nèi)網(wǎng)使用,一定都需要做域名解析
        在外網(wǎng)使用,無需考慮


請求延時
響應(yīng)延時
加載時間
網(wǎng)站慢則報警


實際案例:  監(jiān)控一個網(wǎng)站:  zabibx網(wǎng)站速度
    1.訪問zabbix
    2.登錄zabbix      regex:name="csrf-token" content="([0-9a-z]{16})"            
    3.檢查zabbix
    4.退出zabbix
    5.檢查是否退出zabbix成功


監(jiān)控寶   壓測寶   

1.snmp監(jiān)控
2.騰訊移動分析公網(wǎng)--
3.matomo內(nèi)網(wǎng)分析
4.web檢測-->wordpress

4.自動化監(jiān)控:
自動發(fā)現(xiàn),網(wǎng)絡(luò)發(fā)現(xiàn)
主動注冊

主動模式與被動模式區(qū)別?
主動模式與被動模式效果展示?

1.自動發(fā)現(xiàn):
規(guī)則 + 動作 -->
添加主機
添加主機組
添加模板

2.自動發(fā)現(xiàn)弊端:
1.掃描慢
2.容易漏
3.對server壓力較大
4.無法根據(jù)主機名稱關(guān)聯(lián)對應(yīng)模板


1.主動注冊:
agent主動上報數(shù)據(jù),而不是server詢問
1.agent需要配置 ServerActive HostName 配置為主動模式

主動注冊2個場景:
1.根據(jù)主機名稱,關(guān)聯(lián)不同的模板?
web linux tcp nginx php mysql-slave
db linux tcp mysql

2.根據(jù)主機的元數(shù)據(jù),關(guān)聯(lián)不同的模板?
    linux
    windows

主動模式和被動模式的區(qū)別?

網(wǎng)絡(luò)發(fā)現(xiàn)  ---> 被動模式
主動注冊  ---> 主動模式


主動還是被動說的都是Agent程序.

被動:
    形象理解:   領(lǐng)導(dǎo)找你要數(shù)據(jù)
    Server-->不斷輪詢Agent獲取數(shù)據(jù)
    
主動:
    形象理解:   主動向領(lǐng)導(dǎo)匯報數(shù)據(jù)
    Agent自動上報數(shù)據(jù)給Server

zabbix監(jiān)控項全部都是被動模式:
針對監(jiān)控項目被動模式: 獲取100個值 需要server輪詢獲取Agent100次
針對監(jiān)控項目主動模式: 獲取100個監(jiān)控項的值 Server--->發(fā)給Agent Agent一次上報所有數(shù)據(jù)

主動模式: 自動注冊 zabbix監(jiān)控客戶端(主動式)
被動模式: 網(wǎng)絡(luò)發(fā)現(xiàn) zabbix監(jiān)控客戶端(被動式)

主動模式與被動模式 選擇哪個?
1.如果主機超過300+以上,建議主動
2.如果zabbix隊列比較繁忙 建議主動模式


分布式監(jiān)控渔工、優(yōu)化

20.zabbix分布式監(jiān)控,模擬多機房實現(xiàn)監(jiān)控?

1.有多機房時,需要用到proxy
    1.網(wǎng)絡(luò)不通
    2.網(wǎng)絡(luò)延遲
2.當監(jiān)控的主機較多時,也可以用proxy來緩解壓力

1.安裝proxy
[root@web01 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

1.安裝proxy 數(shù)據(jù)庫

yum install zabbix-proxy-mysql mariadb-server -y

systemctl start mariadb

MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy';

zcat /usr/share/doc/zabbix-proxy-mysql-4.0.14/schema.sql.gz | mysql -uzabbix_proxy -pzabbix_proxy zabbix_proxy

2.配置zabbix-proxy
[root@web02 ~]# grep "^[a-Z]" /etc/zabbix/zabbix_proxy.conf
....
Server=10.0.0.71
Hostname=sh_proxy

DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
....

3.啟動proxy

systemctl enable zabbix-proxy.service

systemctl start zabbix-proxy

4.配置zabbix-agent 不通區(qū)域的agent指向不同的proxy

10.0.0.71   <--- 10.0.0.7       <---172.16.1.51
10.0.0.71   <--- 10.0.0.8       <---172.16.1.41

5.登錄zabbix-web
1.管理-->agent代理程序

注意: zabbix-server 與 zabbix-proxy 需要版本一致

ProxyLocalBuffer Proxy將在本地保留數(shù)據(jù)N小時锌钮,即使數(shù)據(jù)已與server同步。(默認不保留立即發(fā)送)
ProxyOfflineBuffer 如果無法連接Zabbix server引矩,proxy將默認保留數(shù)據(jù)1小時.

zabbix監(jiān)控jvm? tomcat
zabbix ---> jmx ---> java(zabbix-agent)

1.Zabbix-Server找Zabbix-Java-Gateway獲取Java數(shù)據(jù)
2.Zabbix-Java-Gateway找Java程序獲取數(shù)據(jù)
3.Java程序返回數(shù)據(jù)給Zabbix-Java-Gateway
4.Zabbix-Java-Gateway返回數(shù)據(jù)給Zabbix-Server
5.Zabbix-Server進行數(shù)據(jù)展示

配置JMX監(jiān)控的步驟:
1.安裝Zabbix-Java-Gateway梁丘。
2.配置zabbix_java_gateway.conf參數(shù)。
3.配置zabbix-server.conf參數(shù)旺韭。-->連接java-gateway
4.Tomcat應(yīng)用開啟JMX協(xié)議氛谜。
5.ZabbixWeb配置JMX監(jiān)控的Java應(yīng)用。

環(huán)境:
zabbix-server 10.0.0.71 172.16.1.71
zabbix-gateway 172.16.1.7
tomcat 172.16.1.8

1.安裝Zabbix-Java-Gateway
[root@web01 ~]# yum install zabbix-java-gateway -y

2.啟動Zabbix-Java-Gateway
[root@web01 ~]# systemctl restart zabbix-java-gateway
[root@web01 ~]# systemctl enable zabbix-java-gateway.service

3.配置zabbix-server指向zabbix-java-gateway
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=172.16.1.7
JavaGatewayPort=10052
StartJavaPollers=5

[root@zabbix-server ~]# systemctl restart zabbix-server

4.啟動tomcat程序,開啟jmx協(xié)議
[root@web02 soft]# vim /soft/tomcat/bin/catalina.sh #頭部添加即可
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=172.16.1.8"

5.登錄zabbix-web添加一臺jmx的主機

zabbix Api ( 開發(fā) )

1.在使用zabbix-api之前区端,先獲取一個token
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "123456"
},
"id": 1
}' http://zabbix.oldxu.com/zabbix/api_jsonrpc.php

{"jsonrpc":"2.0","result":"6b322c293dc557631c8ffdb32b1c6b5f","id":1}

curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "6b322c293dc557631c8ffdb32b1c6b5f"
}' http://zabbix.oldxu.com/zabbix/api_jsonrpc.php

2.使用token驗證身份, 并禁用某一臺主機

curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.update",
"params": {
"hostid": "10277",
"status": 1
},
"auth": "6b322c293dc557631c8ffdb32b1c6b5f",
"id": 1
}' http://zabbix.oldxu.com/zabbix/api_jsonrpc.php

4.使用API創(chuàng)建主機

curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "10.0.0.1",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "10.0.0.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "20"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "4c831e081ff77510f9662bb9de0f9144",
"id": 1
}' http://zabbix.oldxu.com/zabbix/api_jsonrpc.php

  1. Zabbix屬于寫多讀少的業(yè)務(wù), 所以需要針對zabbix的MySQL進行拆分.
    1.LAMP -->拆分成LAP + MySQL
    2.MySQL盡量使用SSD固態(tài)盤 (靜態(tài)盤會有尋道的過程值漫,浪費時間)

  2. 將Zabbix-Agent被動監(jiān)控模式, 調(diào)整為主動監(jiān)控模式.

  3. 使用zabbix-proxy分布式監(jiān)控, 在大規(guī)模監(jiān)控時用于緩解Zabbix-Server壓力
    用proxy代理服務(wù)器可以緩解server的壓力

  4. 去掉無用監(jiān)控項, 增加監(jiān)控項的取值間隔, 減少歷史數(shù)據(jù)保存周期(由housekeeper進程定時清理)
    一些自帶監(jiān)控項很多我們用不到,可把無用監(jiān)控項取消织盼。

5)針對于Zabbix-server進程調(diào)優(yōu), 誰忙就加大誰的進程數(shù)量, 具體取決實際情況, 不是越大越好
StartPollersUnreachable=1
調(diào)整工作進程數(shù)杨何。

6)針對于Zabbix-server緩存調(diào)優(yōu), 誰使用的緩存多,就加大它的緩存值(zabbix cache usage圖表)
調(diào)整zabbix-server.conf的主配置文件,CacheSize相關(guān)大小沥邻。

  1. 關(guān)注管理->隊列, 是否有被延遲執(zhí)行的監(jiān)控項

zabbix單機監(jiān)控兩千臺機器是瓶頸危虱,分布式同樣最多2000臺。

Btree算法結(jié)構(gòu)的構(gòu)件過程
首先是把數(shù)據(jù)從小到大進行排序唐全,然后將數(shù)據(jù)有順序的存儲到數(shù)據(jù)頁上埃跷,生成left-node 葉子節(jié)點
通過葉子節(jié)點的范圍(最小值到下個葉子節(jié)點的最小值)和每個葉子節(jié)點的指針生成枝節(jié)點
最后通過枝節(jié)點的范圍(最小值到下分枝節(jié)點的最小值)和枝節(jié)點的每個指針生成root根節(jié)點
還有我們用的是數(shù)據(jù)庫5.7版本,它對索引的查詢范圍作了優(yōu)化邮利,怎么優(yōu)化的呢就是對葉子節(jié)點和枝節(jié)點加入了雙向指針
加入雙向指針的作用是減少了索引IO的次數(shù)
減少了隨機IO的數(shù)量
減少了IO的量級

鎖的隔離級別
臟讀 讀未提交的 比如A發(fā)生數(shù)據(jù)變化弥雹,但是沒有提交,B事務(wù)來了讀A修改的這些數(shù)據(jù)延届,就是臟讀
RU: 讀未提交

RC: 讀已提交
RR: 可重復(fù)讀
SR: 串行化

主從復(fù)制
兩臺以上的數(shù)據(jù)庫實例剪勿,通過二進制日志,實現(xiàn)數(shù)據(jù)復(fù)制的關(guān)系方庭。
實現(xiàn)過程:
1.兩臺以上數(shù)據(jù)庫實例窗宦,設(shè)置不同的server_id 赦颇,server_uuid
2.主庫開啟二進制日志,binlog
3.用mysqldump備份主庫的數(shù)據(jù),并且記錄位置點赴涵,媒怯。把數(shù)據(jù)恢復(fù)到從庫。
4.從庫通知主庫髓窜,告訴從庫主庫相關(guān)的信息扇苞。
5.從庫開啟slave復(fù)制線程

原理:
包括三個線程,4個文件 主:binlogdump mysql_bin
從: SQL寄纵、IO relay_info master_info relay_log
從庫執(zhí)行change master to ,獲取連接主庫的信息(IP鳖敷、port、用戶程拭、密碼定踱、binlog起點)
信息被存到master.info文件中。

  1. 從庫:start slave 命令, 啟動IO,SQL線程.
  2. IO開始工作,拿著,master.info中的連接信息,連接主庫,驗證通過,主庫開啟dump線程
  3. IO按照master.info中記錄的binlog位置點信息,向主庫的DUMP線程請求新的日志
  4. 主庫dump線程返回新的日志event,返回給從庫.
  5. 從庫IO線程接收binlog,并重新更新master.info信息
  6. 從庫IO將接收到的binlog記錄到relay-log中
  7. 從庫SQL線程讀取 relay.info信息,獲取到上次執(zhí)行到的位置點,繼續(xù)向后回放最新relaylog日志,并重新更新relay.info信息
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末恃鞋,一起剝皮案震驚了整個濱河市崖媚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恤浪,老刑警劉巖畅哑,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異水由,居然都是意外死亡荠呐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門砂客,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泥张,“玉大人,你說我怎么就攤上這事鞠值∶拇矗” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵齿诉,是天一觀的道長筝野。 經(jīng)常有香客問我晌姚,道長粤剧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任挥唠,我火速辦了婚禮抵恋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宝磨。我一直安慰自己弧关,他們只是感情好盅安,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著世囊,像睡著了一般别瞭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上株憾,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天蝙寨,我揣著相機與錄音,去河邊找鬼嗤瞎。 笑死墙歪,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的贝奇。 我是一名探鬼主播虹菲,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掉瞳!你這毒婦竟也來了毕源?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤菠赚,失蹤者是張志新(化名)和其女友劉穎脑豹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衡查,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡瘩欺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拌牲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俱饿。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖塌忽,靈堂內(nèi)的尸體忽然破棺而出拍埠,到底是詐尸還是另有隱情,我是刑警寧澤土居,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布枣购,位于F島的核電站,受9級特大地震影響擦耀,放射性物質(zhì)發(fā)生泄漏棉圈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一眷蜓、第九天 我趴在偏房一處隱蔽的房頂上張望分瘾。 院中可真熱鬧,春花似錦吁系、人聲如沸德召。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽上岗。三九已至福荸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肴掷,已是汗流浹背逞姿。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捆等,地道東北人滞造。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像栋烤,于是被迫代替她去往敵國和親谒养。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容