服務器監控的構建之路大致分三個階段:
一.200台以內
需求如下:
1.簡單, 易用
2.穩定運行
3.能夠報警, 郵件, 短信
基於以上需求,可以使用比較流行開源的監控軟件Nagios, Cacti, Zabbix, Ganglia, ect 。熱門開源產品有較多文檔,可快速上手,並且有大量前人使用經驗,可避免許多問題,遇到問題也容易找到解決辦法。
二.200~1000台
需求如下:在原需求下變的復雜(通知, 告警)
1.統一監控內容
2.覆蓋式監控
3.及時通知
基於以上需求,1.統一監控內容:將基礎監控進行統一,默認每個機器都包含CPU, 內存, 磁盤空間等基礎信息監控。
2.覆蓋式監控:將所有機器均納入監控, 除去基礎監控以外, 最重要的當屬業務監控,盡可能的覆蓋業務流程,通過自定義監控減少和去除重復的問題,保障業務穩定運行。
3.及時通知:確保無遺漏。將所有監控分類, 更具重要程度,緊急程度等。分別用郵件, 微信, 短信, 電話等不同級別的方式通知,確保每個監控都有人處理,並且對於重要的業務采用call死你的方式, 不處理就一直通知。
在這個時期對Nagios進行深入研究, 編寫自定義腳本, 大量增加各種監控, 將Nagios大部分的插件如:nrpe, nsca 的功能充分使用。
隨着機器越來越多,需要監控的服務也越來越多, 告警信息出現爆發式增長。
三.1000+(1000+和2000+沒啥區別)
兩條路:
1.根據需求,繼續深度開發Nagios
2.自建監控(至少需要了解Nagios的整體架構和運作模式)
到這個階段開始開發自己的監控系統, 解決痛點, 完成需求, 主要有如下事情:
1.具備目前在用的Nagios所有功能: 比照Nagios去做, 覆蓋原來功能, 並針對Nagios的問題進行優化改進, 然后替代了Nagios之后再升級。
(這一步最重要,如果連之前的Nagios的功能都不能替代,自建之路只能在這里就停下了)。
2.將告警進行整理: 化簡為繁, 減少重復警告。當出現轟炸式告警信息之后, 如果不進行及時整理勢必將會正真需要處理的事情耽誤,並且由於某些原因,比如線路問題, 會發生重復警告, 所以必須要將告警信息進行處理在發出。
(如: 預警信息由之前的3000+下降到300)。
3.分離告警和顯示: 前面監控系統, 基本上告警功能和顯示功能均在一起, 不同的機房也需要匯總在中心節點后統一顯示和告警。重要的告警處理是分秒必爭的, 也跟界面顯示無關, 所有作者在設計的時候將顯示和告警功能進行了一次分離, 在本地機房進行報警, 然后在集中展示。
4.分布式部署: 避免單點。 每個機房設置一個分節點, 就是上面說的報警節點, 設置一個中心節點,先在各個機房告警, 然后匯總在中心展示。分節點與中心節點互備, 通過智能DNS進行切換。
(如: 中心節點宕機, DNS自動切換到一個分中心節點, 分節點升級為中心節點。)
四.總結
自建系統好處:
可以充分利用數據, 組合數據, 分析數據, 解釋數據, 將晦澀難懂的數據解讀成人人能懂的數據, 讓產品人員, 銷售人員, 老板統統明白當前的業務狀態是怎么樣的。
五.實際操作
本人經過在服務器上實踐無誤后,在虛擬機上重新配置的干凈系統環境(centos7,windows)一步步截圖來的,如果按照步驟來是不會報錯的,如果出錯,請檢查自己的網絡配置以及防火牆,殺毒軟件等(檢查網絡配置常用命令:ping;telnet)
安裝zabbix 監控主機
配置環境:虛擬機上安裝的centos7
zabbix官網下載地址
https://www.zabbix.com/cn/download
本次安裝的版本是4.0版本,以下是安裝步驟:
一.關閉selinux和防火牆
檢測selinux是否關閉
[hunter@localhost ~]$ getenforce
Disabled
臨時關閉
[root@localhost hunter]# setenforce 0
永久關閉
[root@localhost hunter]# vi /etc/selinux/config
將SELINUX=enforcing改為SELINUX=disabled
設置后需要重啟才能生效
查看默認防火牆狀態
[root@localhost hunter]# firewall-cmd --state
running #關閉后顯示not running,開啟后顯示running
停止firewall
[root@localhost hunter]# systemctl stop firewalld.service
禁止firewall開機啟動
[root@localhost hunter]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
二.Zabbix4.0程序安裝
配置zabbix的yum源
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
安裝zabbix程序包,安裝mysql、zabbxi-agent
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
(此處可能會有下載失敗,多次嘗試即可)
安裝成功
啟動mariadb並設置開機啟動,創建數據庫實例,授權
[root@localhost hunter]# systemctl start mariadb #啟動mariadb
[root@localhost hunter]# systemctl enable mariadb #設置開機啟動
[root@localhost hunter]# mysql #登入數據庫
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; #創建數據庫實例
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix'; #授權所有主機訪問數據庫實例zabbix,用戶名/密碼:zabbix/zabbix
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; #授權localhost主機名訪問數據庫實例zabbix,用戶名/密碼:zabbix/zabbix
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost.localdomain identified by 'zabbix'; #授權localhost.localdomain主機訪問數據庫實例zabbix,用戶名/密碼:zabbix/zabbix
Query OK, 0 rows affected (0.00 sec)
導入初始模式和數據
[root@localhost hunter]# cd /usr/share/doc/zabbix-server-mysql-4.0.10/ #進入create.sql.gz所在目錄
[root@localhost zabbix-server-mysql-4.0.10]# zcat create.sql.gz |mysql -uroot zabbix #導入出事模式
三.啟動zabbix-server服務
配置zabbix-server的配置文件zabbix_server.conf
[root@localhost zabbix-server-mysql-4.0.10]# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost # 數據主機名
DBName=zabbix # 數據庫實例
DBUser=zabbix # 用戶名
DBPassword=zabbix # 密碼
啟動zabbix-server服務
[root@localhost zabbix-server-mysql-4.0.10]# systemctl start zabbix-server #啟動zabbix-server服務
[root@localhost zabbix-server-mysql-4.0.10]# systemctl enable zabbix-server #設置zabbix-server服務開機自啟動
編輯Apache的配置文件,消注釋設置正確的時區
[root@localhost zabbix-server-mysql-4.0.10]# vi /etc/httpd/conf.d/zabbix.conf
啟動httpd服務 ,設置開機啟動httpd服務
[root@localhost ~]# systemctl start httpd #啟動httpd服務
[root@localhost ~]# systemctl enable httpd #設置開機啟動httpd服務
[root@localhost ~]# systemctl start zabbix-agent # 啟動zabbix-agent服務
[root@localhost ~]# systemctl enable zabbix-agent # 設置zabbix-agent服務開機自啟動
四.Zabbix Web網頁安裝
在瀏覽器輸入地址http://服務器ip/zabbix/setup.php,出現歡迎界面,點擊下一步;
點擊Next step,出現必要條件檢測界面,正常都是OK,點擊Next step
配置DB連接,與zabbix_server.conf文件中主機、數據庫名稱、用戶名、密碼保持一致,點擊Next step(之前我們設置的密碼是zabbix)
zabbix服務器詳細信息,點擊Next step(Name是可選項)
安裝前匯總,檢查信息無誤,點擊Next step
安裝成功
進入登錄頁面,用戶由於沒有設置,默認是Admin,根據之前配置,密碼是zabbix
登錄成功
設置里切換語言
至此,zabbix 的主機就安裝成功了。
2.在windows7 上安裝zabbix agent配置
(windows記得關閉防火牆,控制面板 -->系統和安全 -->Windows defender 防火牆 -->啟用或關閉防火牆)
下載zabbix agent
https://www.zabbix.com/download_agents
主機是4.0版本的,客戶端我選的是3.4版本的,因為軟件一般都是上下兼容,所以3.4是可以用的
在c盤(其他盤也可以)新建zabbix文件夾,把下載好的文件放進去,解壓
進入conf文件夾,修改配置文件zabbix_agentd.win.conf(用記事本或者寫字板打開)
LogFile=c:\zabbix\zabbix_agentd.log
Server=192.168.220.130 (填寫監控主機ip地址)
ServerActive=192.168.220.130 (填寫監控主機ip地址)
Hostname=LAPTOP-E12K29O8(右擊我的電腦-屬性,看看hostname)
保存。
打開命令提示符界面:(鍵盤快捷鍵win+R,輸入cmd)
cd \zabbix\bin\win64
zabbix_agentd.exe -i -c C:\zabbix\conf\zabbix_agentd.win.conf(安裝zabbix客戶端)
zabbix_agentd.exe -s -c C:\zabbix\conf\zabbix_agentd.win.conf(開啟zabbix服務)
都返回successfully 則成功
如果失敗,可能需要卸載agent,命令:
cd \zabbix\bin\win64
zabbix_agentd.exe -d -c C:\zabbix\conf\zabbix_agentd.win.conf(刪除zabbix客戶端)
在被監控機上安裝好zabbix agent后,下一步則是在主機上配置連接
配置------主機---------創建主機
主機名稱與在agent里配置的hostname名稱要一致
agent代理程序的接口 ip地址填被控機的ip地址
添加 再選擇該主機-----模板
添加模板 Template OS Windows
------更新
等待兩分鍾左右,刷新頁面,主機的ZBX變綠,就ok了
這是監控的cpu ulimitization圖像
至此,在windows7 上安裝zabbix agent配置已完畢。
3.在centos7 上安裝zabbix agent配置
先關閉防火牆和selinux
一.關閉selinux和防火牆
檢測selinux是否關閉
[hunter@localhost ~]$ getenforce
Disabled
臨時關閉
[root@localhost hunter]# setenforce 0
永久關閉
[root@localhost hunter]# vi /etc/selinux/config
將SELINUX=enforcing改為SELINUX=disabled
設置后需要重啟才能生效
查看默認防火牆狀態
[root@localhost hunter]# firewall-cmd --state
running #關閉后顯示not running,開啟后顯示running
停止firewall
[root@localhost hunter]# systemctl stop firewalld.service
禁止firewall開機啟動
[root@localhost hunter]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
安裝zabbix 軟件源
rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
安裝zabbix-agent
yum install zabbix-sender zabbix-agent zabbix-get
中途有提示選擇y/n 選y
vi /etc/zabbix/zabbix_agentd.conf #修改conf配置
Server=192.168.220.130 #監控主機的ip
ServerActive=192.168.220.130 #監控主機的ip
Hostname=localhost.localdomain #本機的名字
設置啟動和開機項
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
在監控主機web頁面上添加主機
主機名是被監控的centos7的主機名(查看主機名命令 hostname)
ip地址是被監控的centos7的ip地址
模板選擇Template OS Linux
等待幾分鍾,刷新頁面,zbx變成綠色,就ok了
點擊圖形進入
隨便選擇一個進入,可以發現已經有圖像了
至此 在centos7 上安裝zabbix agent配置已完畢。
注意:如需轉載,請注明出處。