第十九章、Linux監控平臺搭建

19.1 Linux監控平臺介紹
19.2 zabbix監控介紹
19.3/19.4/19.6 安裝zabbix(上)
19.5 忘記Admin密碼如何作
19.7 主動模式和被動模式
19.8 添加監控主機
19.9 添加自定義模板
19.10 處理圖形中的亂碼
19.11 自動發現
19.12 添加自定義監控項目
19.13/19.14 配置郵件告警
19.15 測試告警
19.16 不發郵件的問題處理
 
 
19.1 Linux監控平臺介紹
常見開源監控軟件
cacti、nagios、zabbix、smokeping、open-falcon等等
 
#cacti、smokeping偏向於基礎監控(監控網絡設備),成圖很是漂亮
 
#cacti、nagios、zabbix支持web界面去管理控制
# cacti、nagios、zabbix服務端監控中心,須要php環境支持,其中zabbix和cacti都須要mysql做爲數據存儲, nagios不用存儲歷史數據,注重服務或者監控項的狀態zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而能夠成圖
 
#open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究
 
 
19.2 zabbix監控介紹
#C/S架構,基於C++開發,監控中心支持web界面配置和管理
#單server節點理論上能夠支持上萬臺客戶端
 
#最新版本3.4,官方文檔https://www.zabbix.com/manuals
 
zabbix監控包括5個組件
  1. zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操做數據
  2. 數據存儲 存放數據,好比mysql
  3. web界面 也叫web UI,在web界面下操做配置是zabbix簡單易用的主要緣由
  4. zabbix-proxy 可選組件,它能夠代替zabbix-server的功能,減輕server的壓力
  5. zabbix-agent 客戶端軟件,負責採集各個監控服務或項目的數據,並上報
zabbix監控流程圖
一、首先添加主機到監控中心
二、配置監控項目,配置成功後能和服務端通訊,就會採集數據上報到數據中心(也就是mysql,Zabbix.server)(採集過程可使主動或被動)
三、Zabbix.server上配置一個告警規則和告警機制,判斷採集的數據值是否達到告警的條件;若是達到了就進行告警機制,沒達到就是進行存儲;
四、全部的配置過程所有都在web界面(UI)裏配置;存儲的數據均可在前端顯示出來,經過web界面展示出來
 
 
19.3/19.4/19.6 安裝zabbix
實驗準備兩臺機器,一臺做爲服務端(監控中心),一臺做爲服務端
 
#Zabbix能夠直接經過yum安裝,可是須要安裝epel擴展源,可是裏邊的最高版本是2.2
 
1、服務端安裝zabbix
一、下載zabbix的yum源
官網下載地址 www.zabbix.com/download
wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
 
二、安裝Zabbix包
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm    #安裝Zabbix包
#安裝完進入/etc/yum.repos.d/能夠發現多了個zabbix.repo的倉庫,這樣接下來便可使用yum安裝zabbix
 
三、yum下載zabbix-server相關組件 (客戶端的haul只須要下載 zabbix-agent便可)
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
#yum下載zabbix相關組件,會連帶安裝httpd和php
 
四、須要安裝mysql
 
五、啓動mysql
systemctl start mysql
 
六、編輯mysql配置文件,設定字符集(爲了防止web界面設置爲中文會出現問題)
vim /etc/my.cnf 
#須要增長配置
character_set_server = utf8
 
七、重啓mysqld服務
systemctl restart mysql
 
八、進入mysql數據庫,建立zabbix的庫和用戶
mysql -uroot -p123456
create database zabbix character set utf8;   #建立zabbix庫並設置字符集
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456';    #建立zabbix用戶
#若是mysql是放在其它服務器上面,在受權時要把127.0.0.1改成其它服務器的ip
 
九、導入zabbix-server原始數據
cd /usr/share/doc/zabbix-server-mysql-3.2.7
gzip -d create.sql.gz
mysql -uroot -pxxx zabbix < create.sql
 
十、開啓httpd服務並設置開機自啓(要查看80端口是否被佔用,httpd監聽80端口)
systemctl start httpd; systemctl enable httpd
 
注意:
配置zabbix-server遇到錯誤查看zabbix日誌
less  /var/log/zabbix/zabbix_server.log
 
十一、編輯zabbix-server配置文件( 目的是爲了與mysql鏈接)
vim /etc/zabbix/zabbix_server.conf 
#增長兩句
在DBName=zabbix上面增長 "DBHost=127.0.0.1"或者"DBHost=localhost"
#mysql所在服務器的ip
#實驗時mysql在本機上,實際生產環境中爲了提升監控中心的效率,能夠把mysql放在其它服務器上面
 
在DBuser下面增長 "DBPassword=xin-zabbix"
#這個是受權zabbix用戶的密碼
 
十二、開啓zabbix-server服務並設置開機自啓
systemctl start zabbix-server
systemctl enable zabbix-server
 
1三、查看監聽端口看zabbix-server是否成功啓動
(zabbix-server監聽10051端口
netstat -lntp |grep zabbix 
 
1四、web界面下面配置zabbix前端
瀏覽器訪問http://ip/zabbix/  
#ip爲監控中心的ip地址,實驗是192.168.233.150
 
點擊next  step,只須要看右側,ok就不用管,fail要找出錯誤並修改
這裏是php的時區沒有設置,因此要去php的配置文件設置
vim /etc/php.ini
找到"date.timezone = "增長  "Asia/Shanghai"
 
而後重啓httpd服務
systemctl restart httpd
 
再刷新瀏覽器頁面,全部項都是ok時,點擊next step,填寫zabbix相關信息
database  host 127.0.0.1
database  port  0       # 寫0會默認是3306
database  name  zabbix
user         zabbix
password  xin-zabbix
 
繼續next step ,填寫zabbix主機名 xinlinux-03
繼續next step,安裝完畢
 
 
而後進行管理員登陸
用戶名Admin 密碼zabbix
#進入後臺第一件事情就是修改密碼,一開始都是默認密碼
 
修改密碼流程
點擊Adminstration --> Users --> 找到Admin用戶,點擊 --> 修改密碼
順便再改zabbix web界面語言,選擇Language,改成中文
 
 
2、Zabbix客戶端安裝
一、下載zabbix的yum源
wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
 
二、安裝zabbix的rpm包
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
 
三、下載zabbix-agent
yum install -y zabbix-agent
 
四、編輯zabbix配置文件(指定服務端ip)
vim  /etc/zabbix/zabbix_agentd.conf 
#修改以下配置
Server=127.0.0.1修改成 Server=192.168.233.150  
#定義服務端的ip(被動模式)
 
ServerActive=127.0.0.1修改成 ServerActive=192.168.233.150 
#定義服務端的ip(主動模式)
 
Hostname=Zabbix server修改成 Hostname=xinlinux-01
#這是自定義的主機名,一會還須要在web界面下設置一樣的主機名
 
五、啓動zabbix-agent服務並設置開機自啓
systemctl start zabbix-agent
systemctl enable zabbix-agent
 
六、查看監聽端口看zabbix-agent是否成功啓動
(zabbix-agent監聽10050端口)
netstat -lntp |grep zabbix 
 
 
19.5 忘記Admin密碼如何作
進入mysql命令行,選擇zabbix庫
mysql -uroot -p zabbix
use zabbix;
update users set passwd=md5('languoxin') where alias='Admin';
#這樣就更改了Admin用戶的密碼
 
 
19.7 主動模式和被動模式
主動或者被動是相對客戶端來說的
  • 被動模式,服務端會主動鏈接客戶端獲取監控項目數據,客戶端被動地接受鏈接,並把監控信息傳遞給服務端
  • 主動模式,客戶端會主動把監控數據彙報給服務端,服務端只負責接收便可。
 
#當客戶端數量很是多時,建議使用主動模式,這樣能夠下降服務端的壓力。
 
#服務端有公網ip,客戶端只有內網ip,但卻能連外網,這種場景適合主動模式
 
 
19.8 添加監控主機
zabbix的web界面進行操做
一、先添加主機組test
二、再添加主機,主機名稱和可見名稱都寫xinlinux-01
三、羣組選擇test
四、IP地址填寫客戶端的ip 192.168.233.129,DNS不用寫
 
幾個概念:應用集、監控項、觸發器、圖形、自動發現、web監測
  • 應用集:監控項的一個集合,方便管理監控項
  • 監控項:全部監控的項目
  • 觸發器:針對某個監控項目設置的一個告警規則
  • 圖形:歷史數據組成的圖表
  • 自動發現:一、文件系統的磁盤分區使用比例;二、網卡使用流量比例
  • web場景:監控某個網站
 
 
19.9 添加自定義模板
#能夠自定義一個經常使用模板,方便給新增主機添加監控項目
自定義xin模板例子
過程
點擊模板-->建立模板-->選擇羣組拉過來-->點擊添加
把其餘自帶模板裏面的某些監控項目(好比cpu、內存等)複製到xin模板裏
 
應用集、監控項、觸發器、添加圖形、web場景均可以直接複製;可是自動發現沒有複製按鈕,須要經過其它方法放到模板裏
複製自動發現的方法:
  • 方法一、 找到Template OS Linux,點擊導出,會下載一個xml文件,使用Edit編輯器打開,修更名字,刪除一些不相關的東西,工做量很大,很麻煩
  • 方法二、 將以前選擇的監控項所有刪除(xin模板限制是空白的狀態)-->點擊連接的模板-->選擇Template OS Linux-->點擊添加會保存選擇的內容-->點擊更新(Template OS Linux的內容所有複製到xin模板)
 
刪除連接模板內容的操做
  • 這時候直接在xin 模板刪除不須要的內容是刪除不了的,由於xin模板連接了Template OS Linux
  • 這時能夠在點擊連接模板,會發現有兩個選項:取消連接、取消連接並清理,點擊取消連接,接下來便可刪除不須要的內容(注意要先刪除監控項才能刪除應用集)
 
 
19.10 處理圖形中的亂碼
#設置爲中文後,zabbix圖形的中文文字會顯示小方框
這是由於在zabbix的字體庫中沒有中文字體,須要從windows上借用一個過來
vim /usr/share/zabbix/include/defines.inc.php 
#搜索ZBX_FONTPATH
它定義的路徑是「fonts」,它是一個相對路徑,絕對路徑爲 /usr/share/zabbix/fonts,而字體文件爲「ZBX_GRAPH_FONT_NAME」所定義的「graphfont」,它是一個文件,絕對路徑爲 /usr/share/zabbix/fonts/graphfont
windows字體路徑爲「 C:\Windows\Fonts\
 
步驟:
一、找到windows字體路徑爲「C:\Windows\Fonts\」的
「simfang.ttf」(仿宋簡體)(只要是中文字體便可),
 
二、把它複製到桌面上
 
三、上傳到linux的/usr/share/zabbix/fonts/,
#CTRL+ALT+F,使用xftp上傳
 
四、將原來的graphfont.ttf更名爲graphfont.ttf.bak,
mv graphfont.ttf graphfont.ttf.bak
 
五、作一個以simfang.ttf爲目的的graphfont.ttf軟連接文件
ln  -s simfang.ttf   graphfont.ttf
 
 
19.11 自動發現
修改自動發現規則的數據發送間隔
例如:
點擊一個自動發現規則Network interface discovery,找到數據更新間隔,修改數值便可
 
爲了實現效果更明顯
重啓zabbix-server服務端和zabbix-agent客戶端
systemctl restart zabbix-server
systemctl restart zabbix-agent
 
而後在客戶端使用xftp上傳文件,增大網卡流量,
 
 
19.12 添加自定義監控項目
需求:監控某臺web的80端口鏈接數,並出圖
三步:1)在客戶端經過腳本獲取80端口鏈接數數據;2)zabbix監控中心建立監控項目;3)針對該監控項目以圖形展示
 
1、在客戶端經過腳本獲取80端口鏈接數數據
一、到客戶端定義腳本
vim /usr/local/sbin/estab.sh 
#內容以下
#!/bin/bash
##獲取80端口併發鏈接數
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
 
二、增長腳本權限
chmod 755 /usr/local/sbin/estab.sh
 
三、客戶端上編輯配置文件 
vim /etc/zabbix/zabbix_agentd.conf
#增長兩句
UnsafeUserParameters=1  #表示使用自定義腳本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
#自定義監控項的key爲my.estab.count,後面的[*]裏面寫腳本的參數,若是沒有參數則能夠省略,腳本爲/usr/local/sbin/estab.sh
 
四、重啓zabbix-agent服務
systemctl restart zabbix-agent
 
五、到服務端驗證,執行 zabbix_get命令
zabbix_get -s 192.168.133.132 -p 10050 -k 'my.estab.count'
#檢測自定義腳本是否有誤或者不能運行,數值顯示0爲正常
 
#必定要保持網絡的通暢,沒有防火牆規則及SEXlinux
 
2、zabbix監控中心建立監控項目
六、在zabbix監控中心(瀏覽器)配置增長監控項目
名稱寫併發鏈接數,鍵值(key)寫 my.estab.count
 
七、查看數據是否出現
監測中心-->最新數據-->查看剛添加的項目是否有數據出現
 
3、針對該監控項目以圖形展示
八、有數據後就能夠添加圖形了
點擊 配置-->主機-->圖形-->建立圖形
 
 
19.13/19.14 配置郵件告警
#使用163郵箱發告警郵件
 
一、首先登陸你的163郵箱,設置開啓POP三、IMAP、SMTP服務
設置-->選擇POP3/IMAP/SMTP-->將POP3/SMTP、IMAP/SMTP打鉤,而後輸入短信驗證碼
 
二、開啓並記錄受權碼(發郵件使用的密碼(要儘量的複雜))
客戶端受權密碼-->開啓客戶端受權碼
 
三、而後到監控中心設置郵件告警
管理 -->報警媒介類型 -->建立媒體類型 -->名字自定義(實驗是baojing),類型選腳本 -->添加三個腳本參數 (順序不能更改)
{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
 
四、建立報警腳 本mail.py
vim /usr/lib/zabbix/alertscripts/mail.py
修改地方兩處:
定義發郵件服務器域名:
gserver =  smtp 163.com
定義郵箱用戶名,密碼,受權碼,郵箱域名
sendqqmail(languoxin_test@163.com,languoxin,languoxin123,to,subject,content)
 
五、添加腳本權限
chmod 755 /usr/lib/zabbix/alertscripts/mail.py
 
測試是否能夠發送郵件
python mail.py languoxin_test@163.com  "hopjag"  "123465"
打開 languoxin_test@163.com,查看是否收到郵件
 
 
六、建立一個接受告警郵件的用戶
管理-->用戶-->建立用戶(選擇管理員組)-->報警媒介-->類型選擇「baojing」,收件人寫郵件地址(languoxin_test@163.com),指定事件類型級別會發出告警(選擇全部的)-->點擊權限-->查看用戶權限
#若是用戶沒有讀寫權限,最終告警郵件也會收不到
#注意用戶的權限,若是沒有,須要到用戶組去設置權限
管理-->用戶羣組-->選擇更改建立的用戶所在的組-->權限-->選擇讀寫,勾上全部用戶-->點擊添加-->更新
 
七、設置動做(觸發器觸發後要作的事情)
配置-->動做-->建立動做-->名稱寫「發郵件」(自定義)-->條件默認自帶一個A「維護狀態 非在 維護」-->再添加一個條件B"觸發器示警度",選擇">=" "未分類"-->計算方式選項選擇A和B(即要同時知足A、B條件)
 
#維護狀態 非在 維護:監控主機處在一個維護的狀態下,好比說重啓服務,在重啓服務或者配置的時間段內,不須要報警
#觸發器示警度:就是觸發器報警的級別
 
切換到「操做」頁面(發郵件的動做)
修改默認信息,內容以下
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
 
而後點擊新的-->選擇發送用戶,點擊添加-->選擇更改剛建立的用戶-->僅送到選擇「baojing」-->點擊左下角的添加(保存修改)
 
切換到「恢復操做」,把默認信息改爲以下:
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
 
而後點擊新的-->選擇發送用戶,點擊添加-->選擇更改剛建立的用戶-->僅送到選擇「baojing」-->點擊左下角的添加(保存修改)
 
 
19.15 測試告警
建立一個自定義的觸發器
配置 -->主機 -->觸發器 -->建立新觸發器
名稱:系統負載
嚴重性: 警告
表達式:點擊添加 -->選擇processor load(系統負載)監控項 -->功能選擇「最新的T值<N」 -->N數值寫1-->而後點擊添加保存
 
爲了試驗更加方便,將更新數據間隔設置爲10秒
配置-->主機-->監控項-->點擊系統負載-->設置更新數據間隔
 
點擊監測中 -->儀表盤 -->看最近20個問題(等一會就會顯示)
 
 
查看監測中的問題
若是發送郵件成功可是郵箱沒有收到
一、能夠先檢測腳本是否有問題
二、查看管理-->用戶-->報警媒介的郵箱是否有問題,還有權限是否指定的用戶有讀寫權限
三、檢測發郵件的動做
檢查如下的每一個步驟
配置-->動做-->動做-->條件
配置-->動做-->操做-->新的-->編輯-->默認信息(有時候格式會出現問題,試一下還原成原來的信息)、發送到用戶、僅發送、條件-->點擊更新
 
#下面的默認信息的√取消會出現自帶的默認信息,將上面的默認信息還原成原來的默認信息實驗一下
 
再測試一次,點擊監測中 -->儀表盤 -->看最近20個問題(等一會就會顯示)
 
 
19.16 不發郵件的問題處理
主動模式與被動模式的選擇
在配置-->主機-->監控項-->點擊一個項目-->類型(默認是客戶端(被動模式),能夠選擇客戶端主動式(主動模式))
 
事件是成對出現的(內容的ID是同樣的),在郵件中,通常一個OK,一個
PROBLEM
 
19.17課堂筆記
1、LVS DR模式搭建
實際上LVS只做爲負載均衡,實現高可用用keepalived便可
 
 
2、keeplived+LVS
#keepalived 的主要目的是作高可用;#keepalived內置了ipvsadm的功能,全部不用再安裝ipvsadm包,不用編寫和執行那個lvs_dir的腳本
 
 
3、拓展
一、keepalived與heartbeat比較
1)keepalived使用更簡單;
2)heartbeat功能更強大,適合作大型集羣管理;keepalived主要用於集羣倒換,基本沒有管理功能;
3)協議不一樣;keepalived用VRRP協議進行通訊和選舉,heartbeat用心跳進行通訊和選舉,還可經過串口通訊;
4)使用方式基本相似;二者設計高可用方案,最終都要根據業務須要寫自定義的腳本
 
總結:優先使用Keepalived,當Keepalived不夠用的時候才選擇Heartbeat
 
 
二、DRBD安裝配置、工做原理及故障恢復
#適用於兩臺機器共享數據而不用昂貴的數據共享設備
DRBD:相似磁盤作了raid1,經過網絡實現;兩臺服務器安裝DRBD服務,A服務器寫數據,B服務器也會跟着寫數據(偏硬件)
 
目的:實現mysql的高可用,其中一臺服務器壞了能夠用另外一臺服務器讀寫
 
DRBD複製模式
  • 協議A:異步複製協議    一旦本地磁盤寫入已經完成,數據包已在發送隊列中,則寫被認爲是完成的。在一個節點發生故障時,可能發生數據丟失,由於被寫入到遠程節點上的數據可能仍在發送隊列。儘管,在故障轉移節點上的數據是一致的,但沒有及時更新。這一般是用於地理上分開的節點
  • 協議B:內存同步(版同步複製協議)  一旦本地磁盤寫入已完成且複製數據包達到了對等節點則認爲寫在主節點上被認爲是完成的。數據丟失可能發生在參加的兩個節點同時故障的狀況下,由於在傳輸中的數據可能不會被提交到磁盤
  • 協議C:同步複製協議    只有在本地和遠程節點的磁盤已經確認了寫操做完成,寫才被認爲完成。沒有任何數據丟失,因此這是一個羣集節點的流行模式,但I / O吞吐量依賴於網絡帶寬
 
通常選用協議c,保證數據的一致性,效率會低一點,且影響流量,從而影響網絡時延;協議A,B可能會形成數據丟失,可是效率高。
 
安裝配置、故障恢復具體查看網頁: http://blog.51cto.com/502245466/1298945
 
 
三、mysql+keepalived
 
四、haproxy+keepalived
 
五、nginx、LVS、HAProxy優缺點
nginx、LVS、HAProxy均可以進行負載均衡
 
若是是中小型的Web應用,好比日PV小於1000萬,用Nginx就徹底能夠了;若是機器很多,能夠用DNS輪詢,LVS所耗費的機器仍是比較多的;大型網站或重要的服務,且服務器比較多時,能夠考慮用LVS。
 
nginx與LVS比較,具體看網頁:
相關文章
相關標籤/搜索