前言
對於運維人員來說,伺服器各個引數及效能指標對業務的執行至關重要,這些效能指標會因為種種原因發生變化,變化的指標很有可能不是所期望的,此時需要運維人員去處理這些問題。對於24小時不停運轉的業務來說,運維人員不可能時時刻刻登入到伺服器上檢視相關資訊,此時一套完整且功能強大的自動化監控系統能夠大大提高運維人員的工作效率。那麼瞭解主流監控產品及安裝是每一個運維人員必備的知識和技能。
一、監控目的
監控是指對行為、活動或其他變動中資訊的一種持續性關注,通常是為了對人達成影響、管理、指導或保護的目的。來自《維基百科》
在運維行業中也是如此,只不過物件變成了伺服器、各種應用指標等,運維人員想通過監控去對業務達到管理、指導或保護的目的。
監控的目的就很明確:
-
報告系統的執行狀況:通過系統的執行狀況能夠及時的對系統效能進行調整
-
及時發現系統問題:能夠第一時間發現問題並及時處理
二、監控方式
過去傳統的運維只能通過系統相關命令檢視系統指標,這是個體力活。少量伺服器及應用可能還能檢視,當有大量伺服器及應用時,這就是一個艱鉅的任務,並且不能實時的告知系統異常,所以傳統的運維目前逐步淘汰。另一種就是通過自動化監控系統,監控系統就能很好的規避傳統運維手動操作的痛點,同時也能實現自動化監控,及時發現問題進行預警,大大提高運維人員的工作效率。
三、主流監控系統
一套完整的業務系統要有網路裝置、伺服器、應用服務等,市面上就有應對不同裝置及應用的監控系統,當然目前很多監控系統都結合在一起各有優缺點。具體可百度,這裡大致說明以下三種監控系統:
- Zabbix:基於WEB介面提供監視資料,有著美觀的WEB介面及容易上手是目前主流的監控產品,能夠監控伺服器資訊、應用資訊、網路裝置、自定義監控等等。
- Cacti:更善於監控網路流量、網路裝置。
- Nagios:和Zabbix一樣,都是能夠監控伺服器資訊、應用資訊、網路裝置、自定義監控等等。
四、Zabbix介紹
Zabbix中國官網:https://www.zabbix.com/cn/
Zabbix產品手冊:https://www.zabbix.com/cn/manuals
Zabbix是一個企業級分散式開源監控系統,Zabbix 軟體能夠監控眾多網路引數和伺服器的健康度、完整性。
Zabbix 使用靈活的告警機制,允許使用者為幾乎任何事件配置基於郵件的告警。這樣使用者可以快速響應伺服器問題。Zabbix 基於儲存的資料提供出色的報表和資料視覺化功能。這些功能使得 Zabbix 成為容量規劃的理想選擇。
Zabbix 支援主動輪詢(polling)和被動捕獲(trapping)。Zabbix所有的報表、統計資料和配置引數都可以通過基於 Web 的前端頁面進行訪問。基於 Web 的前端頁面確保您可以在任何地方訪問您監控的網路狀態和伺服器健康狀況。適當的配置後,Zabbix 可以在監控 IT 基礎設施方面發揮重要作用。無論是對於有少量伺服器的小型組織,還是擁有大量伺服器的大企業而言,同樣適用。
Zabbix 是免費的。Zabbix 是根據 GPL 通用公共許可證的第二版編寫和釋出的。這意味著產品原始碼是免費釋出的,可供公共使用。
以上,來自Zabbix 官方手冊
總的來說Zabbix是一個企業級的開源監控系統,能夠監控很多內容,且有著靈活的告警機制,重點是開源免費!
Zabbix組成
- 監控伺服器
- 監控伺服器可以通過SNMP或Agent採集資料
- 資料可以寫入MySQL、Oracle等資料庫中
- 被監控主機\網路裝置
- 被監控主機需要安裝Agent
- 常見的網路裝置一般支援SNMP
Zabbix預設埠
- Server端:10051
- Agent端:10050
既然這麼好,不多說直接開始安裝體驗!
五、Zabbix服務端安裝
5.1 環境介紹
- 作業系統:CentOS 7.9.2009 Minimal
- WEB服務:Nginx 1.20.1
- 資料庫:MySQL 5.7.26
- Zabbix版本:4.0.32
- PHP:7.0
- PHP-FPM:7.0
- 網路環境:網際網路
安裝前自然不必多說,首當其衝就是配置YUM源,使用的是阿里雲EPEL(Extra Packages for Enterprise Linux) YUM源、Centos-7映象YUM源、Webtatic的YUM源。
參考連結
- https://developer.aliyun.com/mirror/epel?spm=a2c6h.13651102.0.0.3e221b112n2Ox1
- https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.12971b11T3SFHC
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# yum -y install epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
5.2 準備系統環境
安裝依賴包
Nginx依賴包
# yum -y install gcc pcre-devel openssl-devel
MySQL依賴包
# yum -y install perl-JSON perl-Data-Dumper mysql-devel
Zabbix依賴包
# yum -y install net-snmp-devel curl-devel libevent-devel php70w-gd php70w-xml php70w-bcmath php70w-mbstring
關閉防火牆、selinux
# iptable -F ; setenforce 0
5.3 安裝Nginx(原始碼編譯安裝)
# wget http://nginx.org/download/nginx-1.20.1.tar.gz
# tar -xf nginx-1.20.1.tar.gz && cd nginx-1.20.1
# ./configure --with-http_ssl_module
# make && make install
啟動Nginx
# /usr/local/nginx/sbin/nginx
開機自啟動
#
測試Nginx
# curl http://127.0.0.1
......
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
.....
5.3.1 配置Nginx
# vim /usr/local/nginx/conf/nginx.conf
瞭解Nginx的讀者可能知道以下配置的含義,不瞭解也沒關係,照樣能搭建網頁服務,具體可自行百度學習。
在65行新增以下內容,並按照以下內容去掉註釋,注意75行是修改配置檔案引數的。
43 location / {
44 root html;
45 index index.html index.htm index.php; # 新增index.php
46 }
.......
65 fastcgi_buffers 8 16k; # 快取php生成的頁面內容,8個16k,快取越大速度越快
66 fastcgi_buffer_size 32k; # 快取php生產的頭部資訊
67 fastcgi_connect_timeout 300; # 連線PHP的超時時間
68 fastcgi_send_timeout 300; # 傳送請求的超時時間
69 fastcgi_read_timeout 300; # 讀取請求的超時時間
70 location ~ \.php$ {
71 root html;
72 fastcgi_pass 127.0.0.1:9000;
73 fastcgi_index index.php;
74 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
75 include fastcgi.conf;
76 }
重新載入配置檔案
# /usr/local/nginx/sbin/nginx -s reload
5.4 PHP、PHP-FPM(YUM安裝)
首先由於EPEL源和映象源的PHP版本是5版本,無法滿足Zabbix對PHP 版本的要求,Zabbix 4.0需要PHP 7版本,為了避免原始碼安裝PHP 的各種複雜操作,通過YUM源安裝是最高效和選擇。
5.4.1 安裝PHP7、PHP-FPM
# yum -y install php70w-fpm php70w php70w-mysql
5.4.2 啟動PHP-FPM
# systemctl start php-fpm
# systemctl enable php-fpm
5.4.3 測試PHP環境
# php -v
PHP 7.0.33 (cli) (built: Dec 6 2018 22:30:44) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
# vim /usr/local/nginx/html/test.php
<?php
$i=100;
echo $i;
?>
# curl http://127.0.0.1/test.php
100
5.5 安裝MySQL(通用二進位制版本)
5.5.1 準備MySQL環境
# useradd -s /sbin/nologin mysql
# mkdir /database/ /data/
# chown -R mysql:mysql /database/ /data/
# wget -O /database/mysql-5.7.26.tar.gz https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.26-el7-x86_64.tar.gz
# tar -xf /database/mysql-5.7.26.tar.gz
# ln -s /database/mysql-5.7.26 /database/mysql
# vim /etc/profile
export PATH=$PATH:/database/mysql/bin/
# source /etc/profile
# mysql -V
mysql Ver 14.14 Distrib 5.7.26, for el7 (x86_64) using EditLine wrapper
5.5.2 初始化MySQL、新增配置檔案、啟動MySQL、新增管理員密碼
# mysqld --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/data
# cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/database/mysql
datadir=/data
server_id=6
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
EOF
# cp /database/mysql/support-files/mysql.server /etc/init.d/mysqld
# /etc/init.d/mysqld start
# 設定開機自啟動
# /etc/init.d/mysqld status
# mysqladmin -uroot password "Admin@123"
# mysql -u"root" -p"Admin@123"
5.6 安裝Zabbix服務端(原始碼編譯安裝)
5.6.1 原始碼編譯安裝Zabbix
# wget https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.32.tar.gz
# tar -xf zabbix-4.0.32.tar.gz
# ./configure --enable-server --enable-agent --enable-proxy --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl
--enable-server:表示監控伺服器
--enable-agent:表示被監控端agent,監控私有資料.這裡是服務端也安裝agent實現監控
--enable-proxy:支援分散式監控
--with-mysql=/usr/bin/mysql_config:指定mysql程式決定路徑,獲取到mysql資訊
--with-net-snmp:監控交換機路由器
--with-libcurl:呼叫curl軟體監控公開資料:http、ftp等等,必須要有curl才能監控公開資料
# make && make install
5.6.2 初始化Zabbix
# cp -r frontends/php/* /usr/local/nginx/html/
資料庫中建立建立Zabbix使用者
# mysql -u"root" -p"Admin@123"
mysql> create database zabbix default character set utf8 collate utf8_bin;
mysql> grant all on zabbix.* to zabbix@'%' identified by 'Zabbix@123';
依次向zabbix庫匯入Zabbix所需的資料
# mysql -uzabbix -p'Zabbix@123' zabbix < database/mysql/schema.sql
# mysql -uzabbix -p'Zabbix@123' zabbix < database/mysql/images.sql
# mysql -uzabbix -p'Zabbix@123' zabbix < database/mysql/data.sql
修改zabbix_server配置檔案,指定資料庫名稱、使用者名稱、密碼
# vim /usr/local/etc/zabbix_server.conf
85 DBHost=127.0.0.1 # 資料庫主機
94 DBName=zabbix # 設定資料庫名稱
110 DBUser=zabbix # 設定資料庫賬戶
118 DBPassword=Zabbix@123 # 設定資料庫密碼
125 DBSocket=/tmp/mysql.sock # 這裡的套接字路徑和MySQL配置檔案路徑要一直
133 DBPort=3306 # 資料庫埠
建立系統使用者
# useradd -s /sbin/nologin zabbix
5.6.3 修改PHP配置以滿足Zabbix要求
# vi /etc/php.ini
; 設定時區
date.timezone = Asia/Shanghai
; 最大執行時間,秒
max_execution_time = 300
; POST資料最大容量
post_max_size = 32M
; 伺服器接收資料的時間限制
max_input_time = 300
; 記憶體容量限制
memory_limit = 128M
# systemctl restart php-fpm 修改完後重啟php-fpm服務
5.6.4 啟動Zabbix相關程式
# zabbix_agentd
# zabbix_server
# ss -anptu | grep 10051
tcp LISTEN 0 128 *:10051 *:* users:
......
5.6.5 訪問Zabbix並進行最後初始化
瀏覽器訪問主機IP地址:http://10.8.99.7/,這裡就不放圖了,有圖之後文章變得非常臃腫,非常難看,步驟也非常簡單不需要放圖.
- Welcome: 歡迎
- Check of pre-requisites:檢查先決條件,需要注意有一項PHP LDAP是Warning狀態,可以忽略
- Configure DB connection:設定資料庫,需要注意Database host設定為127.0.0.1,而不是localhost
- Zabbix server details:伺服器資訊
- Pre-installation summary:安裝前總結
- Install:安裝,這裡會出許可權問題,需要設定許可權
chmod -R 777 /usr/local/nginx/html/
,再次重新整理即可完成最後初始化
Zabbix預設管理員使用者名稱密碼:Admin/zabbix
以上,完成Zabbix服務端的安裝!
5.7 歸納總結
六、Zabbix客戶端安裝
結束