為什么要監控
- 運維的職責
1.保障企業數據的安全可靠。
2.為客戶提供7*24小時服務。
3.不斷提升用戶的體驗。 - 在關鍵時刻,提前提醒我們服務器要出問題了
- 當出問題之后,可以便於找到問題的根源
拿到公司服務器的管理權之后,
第一件事,備份
第二件事,監控
數據有故障了,服務有問題了,一些內容掛掉了,比如web服務器,或者是硬件的服務器,raid,磁盤有故障了也會報警,用戶訪問網站,感覺慢了,也可以獲得相應的提示
這是一個非常重要的部分
你們公司監控是怎么做的-面試題
- OSI/ISO7層協議進行回答
- 業務流程、用戶訪問網站的流程進行補充
監控工具
mrtg 流量監控出圖
nagios 監控
cacti 流量監控出圖
zabbix 監控+出圖,所有監控范疇,都可以整合到Zabbix中。
- 硬件監控:Zabbix IPMI Interface
- 系統監控:Zabbix Agent Interface
- Java監控:Zabbix JMX Interface
- 網絡設備監控:Zabbix SNMP Interface
- 應用服務監控:Zabbix Agent UserParameter
- MySQL數據庫監控:percona-monitoring-plulgins
- URL監控:Zabbix Web 監控
Zabbix簡介
zabbix是一個基於WEB界面的,提供分布式系統監視以及網絡監視功能的企業級的開源解決方案
已經有20年歷史,
web界面是基於PHP的,所以需要准備LNMP或者LAMP的環境
軟件是c語言的
zabbix的架構圖
zabbix_proxy 在大型架構中作為代理使用,將分部服務器的情況匯總發送到總部
zabbix安裝以及部署
先做環境檢查
從CentOS7模板機全新克隆一台新主機 IP規划為10.0.0.61/172.16.1.61,主機名為m01 注冊賬號:http://c.onealert.com/console//ucid/regist.jsp
賬號用於接受報警
安裝zabbix服務端
本次使用yum安裝,編譯安裝留為作業
官網---download
官方安裝說明中可以找到下面這些信息和安裝步驟
版本號中的LTS指的是長時間維護版本
或者找zabbix官方源repo.zabbix.com----找到有release的,復制鏈接地址
# 安裝Zabbix官方源 rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm yum makecahe fast # 快點緩存 # 安裝zabbix,httpd,php yum install zabbix-server-mysql zabbix-web-mysql httpd php -y
yum安裝數據庫
數據庫因為用的是centos7,MySQL是正常裝不上的,需要配置MySQL源或者二進制安裝
所以,偷懶安裝mariadb(本質上基本和mysql是一樣的)
# 安裝mariadb yum -y install mariadb-server systemctl start mariadb.service # 創建數據庫,權限 mysql create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
創建用戶的時候,不用flush跟新信息,跟新只在修改用戶信息的時候 exit # 導入數據庫sql文件,官方安裝說明中可以找到這些信息和安裝步驟 zcat /usr/share/doc/zabbix-server-mysql-3.0.25/create.sql.gz|mysql -uzabbix -pzabbix zabbix
zcat 命令是顯示gz壓縮包內容的軟件
請根據自己的zabbix軟件版本 修改zcat的文件目錄
配置zabbix server
# 配置zabbix Server連接mysql sed -i.ori '115a DBPassword=zabbix' /etc/zabbix/zabbix_server.conf # 修改apache-php配置,因為我們是自動安裝,他會自動創建一個虛擬主機
# 我們修改下配置文件,添加時區,否則后面打開web頁面安裝zabbix的時候會報錯 sed -i.ori '18a php_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf
啟動zabbix server
systemctl start zabbix-server # 啟動zabbix
systemctl start httpd # 啟動apache
網頁配置
瀏覽器中訪問10.0.0.61/zabbix 。記得用自己的IP
進入頁面按照指令操作。
默認的賬號Admin密碼zabbix
進入主頁,單擊右上角的小人,修改顯示語言和密碼
zabbix開始監控狀態-安裝配置zabbix-agent
zabbix客戶端就是zabbix agent
國內源:搜索
選擇yum源的時候注意版本號,有的是centos6有的是7
可以直接安裝agent,但是有一些依賴可能裝不上
選擇release最為穩妥
所有需要被監控的服務器都要執行下面步驟,下面以在m01和cache01安裝客戶端為例: rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm yum install zabbix-agent sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf systemctl start zabbix-agent.service
客戶端測試
此時,還不能在web頁面張查看監控狀態
需要先在客戶端測試確認一下數據,需要用到zabbix-get
# 只能在服務端m01操作,需要使用-s執行相應客戶端IP yum install zabbix-get -y # agent.ping 表示是否在線 1表示在線
[root@m01 doc]# zabbix_get -s 172.16.1.61 -p 10050 -k 'agent.ping'
1
zabbix_get -s 172.16.1.61 -p 10050 -k "system.cpu.load[all,avg1]" zabbix_get -s 172.16.1.21 -p 10050 -k "system.cpu.load[all,avg1]"
web頁面上怎么看?
配置----主機----將 zabbix server 啟用--- 當可用性 都變成綠色,就表名監控上線
等待......如何加快(ping 主機名 可以解析)
等了很久,看一下日志吧...(/var/log/zabbix/zabbix_server.log)
我們等來了一個錯誤,意思是,客戶端無法訪問服務端,是監控IP設置的問題
點擊Zabbix server 將 agent代理程序的接口 這一項下面的 ip地址改為172.16.1.61,跟新保存
過一會就變成綠色了,就可以查看監控中---最新數據、圖形等
因為中文字體的原因,有些地方會亂碼,改成英文就行了
解決亂碼問題,單獨安裝字體就可以了,不斷地嘗試,發現某個字體可用
yum -y install wqy-microhei-fonts
將可用字體,復制到zabbix下
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
添加一台被監控服務器主機
現在web01服務器上安裝zabbix agent 客戶端
清華或者阿里軟件鏡像站------找到zabbix----找到版本-----選擇rhel----選擇6(web01是centos6的系統)----選擇64位----找到release----復制鏈接地址
在Linux中加入yum源
[root@web01 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/6/x86_64/zabbix-release-3.4-1.el6.noarch.rpm [root@web01 ~]# yum install zabbix-agent -y 以后這些操作要交給kickstart和cobbler,裝完系統就裝上zabbix-agent #修改一下服務端的IP地址 第97行 Server = 172.16.1.61 或者使用sed -i.ori '' sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf #將zabbix 設置為 開機自啟動,並重啟 [root@web01 ~]# chkconfig zabbix-agent on [root@web01 ~]# /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [FAILED] Starting Zabbix agent: [ OK ]
在m01 zabbix的服務端上檢查,這些服務都是要啟動的,而且要開機自啟動
[root@m01 doc]# systemctl is-active httpd.service mariadb.service zabbix-server.service zabbix-agent.service active active active active [root@m01 doc]# systemctl is-enable httpd.service mariadb.service zabbix-server.service zabbix-agent.service Unknown operation 'is-enable'. [root@m01 doc]# systemctl is-enabled httpd.service mariadb.service zabbix-server.service zabbix-agent.service disabled disabled disabled enabled [root@m01 doc]# systemctl enable httpd.service mariadb.service zabbix-server.service zabbix-agent.service
[root@m01 doc]# systemctl is-enabled httpd.service mariadb.service zabbix-server.service zabbix-agent.service
enabled
enabled
enabled
enabled
在服務端檢查一下是不是在線,可以連接
[root@m01 doc]# zabbix_get -s 172.16.1.7 -p 10050 -k 'agent.ping'
1
在web界面中 配置----主機----創建主機
主機名稱: 主機名 可見名稱: 隨意設置,知道意思就行, 群組: 最好設置一個群組,方便批量管理 agent代理程序的接口: 172.16.1.7 端口號不用改 下面的SNMP、JMX、IPMI暫時不用管
接下來 點擊 模板選項卡
不用點擊選擇,在搜索框中輸入linux ,選擇Template OS linux-----點擊小的添加----點擊添加
保證在m01上能夠解析web01 的名字 ----- 172.16.1.7 web01
注:實際做的時候,我沒有在host中解析web01 也連上了....后面有問題再說吧,
繼續添加一台服務器cache01
都連接上了
如何快速添加主機及鍵值
隨便選擇一個,然后最下面有一個克隆,修改一下主機名和IP
模板中有什么呢?
可以查看監控項中的鍵值,就是zabbix_get 命令中的-k參數 中的k值,是獲取數據的本質
自定義創建鍵值
也叫作自定義監控,在模板提供的鍵值中沒有我們需要的數據時,我們要自己做鍵值
zabbix自帶模板Template OS Linux (Template App Zabbix Agent)
提供CPU、內存、磁盤、網卡等常規監控,只要新加主機關聯此模板,就可自動添加這些監控項。
需求:服務器登錄人數不超過3人,超過3人報警
1、獲取登陸服務器人數
[root@web01 ~]# who
root pts/0 2019-03-16 15:49 (10.0.0.253)
2、統計
[root@web01 ~]# who|wc -l
1
3、將命令放在/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 中
這是用來放置用戶自定義監控項的,用戶可以在這個目錄中寫自己的.conf文件
4、在agent注冊key
# 語法:key名字要唯一,多個key以行為分割 UserParameter=<key>,<shell command>
UserParameter=login-user,who|wc -l UserParameter=login-user,/bin/sh /server/scripts/login.sh # 執行腳本 # cd /etc/zabbix/zabbix_agentd.d/ # vim userparameter_login.conf UserParameter=login-user,who|wc -l
# 修改配置文件要重啟 systemctl restart zabbix-agent.service
centos6中重啟
/etc/init.d/zabbix-agent restart
# 在server檢測 # zabbix_get -s 172.16.1.21 -p 10050 -k "login-user"
自定義key能被server和agent認可
WEB頁面中操作
- 創建模板:填好名稱、群組,就可以保存了
- 創建應用集:給監控項(item)分類
- 添加一個user,表示用戶相關的
- 創建監控項:監控的內容
- 點擊監控項---創建監控項---填寫內容(歷史時長短一點,趨勢時長可以長到365d)
- 創建觸發器:當監控項獲取到的值 達到一定條件時 就觸發報警
- 名稱要表達清楚報警內容 login.user bigger than 3
- 表達式要 選擇好 {fist_model_web:login.user.last()}>3 這是選擇后自動生成的
- 點擊添加
- 創建圖形
- 在選中監控項后,的功能下拉框選最大值
- 繪圖風格選先
- 其他隨意
- 主機關聯模板
- 配置---主機---web01---模板---添加之前做好的模板
處理報警:在設置的觸發器中有一項允許手動關閉,在收到報警后,我們可以在確認事件中關閉報警
添加報警
報警也可以在web中設置,就在主頁小人處
我們還可以通過網站設置報警,然后等着報警信息,就不用一直盯着頁面了
登陸網站:http://www.onealert.com/index.html 注冊賬號 報警的本質: 什么時候發郵件:當狀態改變的時候才會發郵件 好--壞 壞--好
如何查找安裝報警腳本的路徑?
[root@m01 doc]# grep -i alertscript /etc/zabbix/zabbix_server.conf ### Option: AlertScriptsPath # AlertScriptsPath=${datadir}/zabbix/alertscripts AlertScriptsPath=/usr/lib/zabbix/alertscript
安裝報警插件,下載地址和安裝命令都是報警網站提供的
[root@m01 alertscripts]# wget http://www.onealert.com/agent/release/oneitsm_zabbix_release-1.2.0.tar.gz ...下載過程略... [root@m01 alertscripts]# tar -zxf oneitsm_zabbix_release-1.2.0.tar.gz [root@m01 alertscripts]# cd oneitsm/bin [root@m01 bin]# bash install.sh 42dd9ef9-cc1c-8def-e95a-d20526a5341f ./log.sh: line 6: /usr/lib/zabbix/alertscripts/oneitsm/bin/oneitsm.conf: No such file or directory start to create config file... Zabbix管理地址: 172.16.1.61 Zabbix訪問失敗,請重新輸入. Zabbix管理地址: 10.0.0.61 Zabbix訪問失敗,請重新輸入. Zabbix管理地址: 10.0.0.61/zabbix # 地址 zabbix的WEB頁面的地址 Zabbix管理員賬號: Admin Zabbix管理員密碼: start to auth by zabbix admin user and password... ...安裝過程略... create action success! 安裝成功.
登陸zabbix的WEB界面配置
管理---報警媒介類型---已經配置好了!!
在onealert的配置下中有一個分配策略---就是報警了分配給誰
聚合圖形
同時看幾個數據的圖形
聚合圖形中還有幻燈片演示
現有聚合圖形,才能創建幻燈片
https://share.zabbix.com/中有許多別人創建好的模板
https://github.com/zhangyao8/zabbix-community-repos 模板共享
全網監控項目說明
考試目標:使用zabbix將期中架構所有集群監控 具體內容: 一、硬件、系統、網絡監控 所有集群節點(所有虛擬機)都監控上 二、應用服務監控 1. 監控備份服務器,簡單方法是監控rsync端口,如果有其他更佳方案可以說明; 2. 監控NFS服務器,使用監控NFS進程來判斷NFS服務器正常,如果有其他更佳方案可以說明; 3. 監控MySQL服務器,簡單方法監控mysql的3306端口,或者使用zabbix提供的Mysql模板,
如果有其他更佳方案可以說明; 4. 監控2台web服務器,簡單方法監控80端口,如果有其他更佳方案可以說明; 5. 監控URL地址來更精確的監控我們的網站運行正常; 6. 監控反向代理服務器,PPTP服務器等你在期中架構部署的服務。 7. 監控Nginx的7種連接狀態。
項目一的模板都有
項目二中的端口、進程。可以進入任意模板查看,都有
項目二中的第5個檢測URL,自定義web檢測
創建web場景
項目二中的第6個檢測端口+進程
項目二中的第7個Nginx的7中鏈接狀態,用狀態模塊進行配置,
1、寫7行(簡單粗暴的方法)
2、寫腳本
自動發現與自動注冊
自動發現:zabbix Server主動發現所有客戶端,然后將客戶端登記自己的小本本上,
缺點zabbix server壓力山大(網段大,客戶端多),時間消耗多。
自動注冊:zabbix agent主動到zabbix Server上報到,登記;
缺點agent有可能找不到Server(配置出錯)
被動模式:默認,都是站在agent的立場上說話,agent被server抓取數據
主動模式:都是站在agent的立場上說話,agent主動的將數據發送給Server
兩種模式都是在agent上的配置文件配置的
自動發現(被動模式)-服務器少的時候使用
第一步:zabbix Server安裝完畢 (完成) 第二步:zabbix agent安裝完畢,Server=172.16.1.61 (完畢) 第三步:網頁上配置自動發現規則
配置---自動發現---新建或者使用已經有的
修改IP范圍---172.16.1.1-10,172.16.1.45多個用,號分割
默認本質上使用的是system.uname,也可以添加新的
設置唯一性
更新或者保存,啟用
------------------------------------------------------------------------------
配置---動作---事件源選擇‘自動發現’---創建或者修改原有的,也可以克隆
其中,新的觸發條件可以不寫,因為在自動發現中已經設置了
在操作選項卡里面,添加新的動作操作(添加主機和啟用主機)
完成后,跟新啟用
什么時候算是完成自動發現了呢,在自動發現中顯示主機名就算成功了,然后會出現在主機列表中
自動注冊(主動模式)
把之前的自動發現關閉
第一步:zabbix Server安裝完畢 (完成) 第二步:zabbix agent安裝完畢,需要額外增加的配置 vim /etc/zabbix/zabbix_agentd.conf ServerActive=172.16.1.61 # Hostname=Zabbix server 和下面的HostnameItem配置一個就行 HostnameItem=system.hostname # 定義獲取服務器主機名的方式
HostMetadataItem=system.uname # 主機的源數據
systemctl restart zabbix-agent.service
重啟centos6的方式/etc/init.d/zabbix-agent restart
netstat -tunlp|grep zabbix 第三步:Server上做hosts解析,解析是在這里發揮作用的 echo "172.16.1.21 cache01" >> /etc/hosts 第四步:網頁上配置自動注冊 配置----動作---自動注冊(事件源)
動作-觸發條件 設置 成 主機元數據 似 Linux(手打的)
操作-添加主機---添加到群組---鏈接到模板
添加
主機沒有添加上,等候時間
分布式監控
Zabbix Server -------->Zabbix agent (只能同一個局域網監控)
分布式監控:
a. 分擔壓力,降低負載
b. 多機房監控
等於是給各個分區的服務器安排了一個領導,層層匯總
環境准備
做好快照
機器准備:
Zabbix Server m01 監控中心
Zabbix Proxy web01 分中心領導
Zabbix Agent web01 web02 客戶端
開始操作,將之前的自動發現和自動注冊都關閉
第一步:在代理機web01安裝zabbix proxy rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm yum -y install zabbix-proxy-mysql 第二步:安裝數據庫 zabbix proxy也需要數據庫,這個數據庫不是用於存儲監控數據的 只是用於存儲配置信息 # 安裝數據庫 yum -y install mariadb-server systemctl start mariadb.service #建庫 創建用戶授權 mysql create database zabbix_proxy character set utf8 collate utf8_bin; grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix'; # 將多余的空的用戶刪除
drop user “‘@’localhost”;
drop user “‘@’web01”;
# 跟新
flush privileges;
exit # 導入數據庫文件 zcat /usr/share/doc/zabbix-proxy-mysql-3.0.13/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy 第三步: 配置zabbix proxy,並在zabbix網頁登記 # 配置zabbix proxy連接數據庫 sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf systemctl start zabbix-proxy.service # 修改Server sed -i 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_proxy.conf # 修改hostname,確保這個名字是唯一的,不用web01是因為,web01要給下面的客戶端使用
# 這個hostname,一定要能在m01中解析,即最頂端的老大
sed -i 's#Hostname=Zabbix proxy#Hostname=proxy-web01#' /etc/zabbix/zabbix_proxy.conf
將172.16.1.7 web01 proxy-web01 添加在m01的 host文件中 systemctl start zabbix-proxy.service Centos6中的重啟方法/etc/init.d/zabbix-proxy start(第一次啟動所以使用的start
### 問題 ###
# 查看zabbix-proxy日志發現,一只連接不上數據庫,它連接的的是/var/lib/mysql/mysql.sock
# 在/etc/zabbix/zabbix_proxy.conf中的默認的是/tmp/mysql.sock
# 我們需要將它啟動,把配置文件中DBSocket前面的# 刪掉
繼續重啟
第四步:web頁面設置
管理---agent代理程序---創建代理
agent代理程序名稱:要和 Hostname=proxy-web01 一樣
把客戶機加上
添加 第五步:客戶端agent 指向 proxy [root@web01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.conf Server=172.16.1.61 ServerActive=172.16.1.61 [root@web01 ~]# sed -i 's#172.16.1.61#172.16.1.7#g' /etc/zabbix/zabbix_agentd.conf [root@web01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.conf Server=172.16.1.7 ServerActive=172.16.1.7
# 文件中的Hostname 要和 頁面上的一致,即本服務器的hostname
[root@web01 ~]# systemctl restart zabbix-agent.service
把客戶端服務器hosts中的解析本機的去掉??
主機的名字只需要在proxy和m01上解析就可以了
SNMP監控
主要用來監控網絡設備,也可以用來監控服務器
只需要在網絡設備中開啟SNMP監控即可
小結:前面所講內容全部屬於zabbix agent方式監控 當前場景:無法安裝agent,通過snmp監控 snmp :simple network manager protocol 簡單網絡管理協議
# 在m01下,安裝軟件 yum -y install net-snmp net-snmp-utils 配置snmp sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf
意思是開啟被讀取的權限
systemctl start snmpd.service 默認的端口是161 使用SNMP [root@db01 ~]# snmpwalk -v 2c -c public 127.0.0.1 sysname # snmpwalk 類似 zabbix_get # -v 2c 指定使用snmp協議的版本 snmp分為v1 v2 v3 # -c public 指定暗號 # sysname 類似zabbix的key 鍵值中的鍵,還有很多其他的 OID
怎么通過snmp協議來監控呢?
在web頁面中選擇主機。在設置中的SNMP接口處添加
它和agent的區別是不支持自定義監控
模板也要改,把原來的linux os 取消鏈接。添加Template SNMP OS Linux
還是不行的話,點擊原來的先添加再取消並清理,然后保存
補充:web監測的時候,要把SNMP的模板刪除,換成之前用的普通的
最核心的部分是監控的體系部分,一定要作為自己的必殺技,搞定