一、自動化監控利器-Zabbix

錦書致南辭發表於2021-09-08

1. 監控的作用

1.1 為何需要監控系統

監控系統是整個運維環節,乃至整個產品生命週期中最重要的一環,事前及時預警發現故障,事後提供詳細的資料用於追查定位問題;

為了及時掌握基礎環境和業務應用系統的可用性,需要獲取各個元件的執行狀態,如CPU的利用率、系統的複製、服務的執行、埠的連通、頻寬流量、網站訪問狀態碼等資訊。而這一切都離不開監控系統;

1.2 監控系統的實現

一個監控系統的組成大體可以分為兩部分:資料採集部分(客戶端)和資料儲存分析報警部分(伺服器端),這兩部分構成了監控系統的基本模型;

資料採集的工作模式可以分為被動模式(服務端到客戶端採集資料)和主動模式(客戶端主動上報資料到伺服器端)。通常,大多數監控系統應該能同時支援這兩種模式。被動模式對伺服器的開銷較大,適合小規模的監控環境:主動模式對伺服器的開銷較小,適合大規模的監控環境;

1.3 常用的監控軟體

MRTG:是一套可用來繪製網路流量圖的軟體,由瑞士奧爾滕的Tobias Oetiker與Dave Rand所開發;

Cacti:(英文含義為仙人掌)是一套基於PHP、MySQL、SNMP和RRDtool開發的網路流量監測圖形分析工具;

Smokeping:Smokeping主要用於監視網路效能,包括常規的ping、www伺服器效能、DNS查詢效能、SSH效能等;

Nagios:Nagios是一個企業級的個系統,可監控服務的執行狀態和網路資訊等,並能監視所指定的本地或遠端主機引數以及服務,同時提供異常告警通知功能等;

Zabbix:Zabbix是一個分散式監控系統,支援多種採集方式和採集客戶端,有專用的Agent代理,也支援SNMP、IPMI、JMX、Telnet、SSH等多種協議,它將採集到的資料存放到資料庫,然後對其進行分析整理,達到條件觸發告警。其靈活的擴充套件性和豐富的功能是其他監控系統所不能比的;

2. Zabbix簡介

zabbix([`zæbiks])是一個基於WEB介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案;

zabbix能監視各種網路引數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題;

Zabbix適合中小型企業、大中型企業的使用者使用。單個Server節點可以支援上萬臺裝置,每秒可以處理1.5萬次請求,理論上可以支援5萬臺裝置;

2.1 選擇Zabbix的理由

  1. Zabbix是一個自由開發原始碼的產品,使用者可以對原始碼進行任意修改和二次開發。Zabbix採用GNU General Public License (GPL) Version2開源協議;

  2. 安裝和配置簡單,使用者僅僅需要一些簡單的學習,即可完成監控的搭建工作;

  3. 搭建環境簡單,基於開源軟體構建平臺,僅需要Linux、Apache/Nginx、MySQL/PostgreSQL/Oracle、PHP即可,無須專用作業系統支援,也無須專用硬體;

  4. Zabbix-Agent完全支援Linux、UNIX、Windows、AIX、BSD和Solaris的監控,Server和Agent都採用C語言編碼,對系統的資源佔用非常小,資料採集的效能和速度非常快;

  5. 將資料採集持久儲存到資料庫,便於對監控資料的二次分析;

  6. 非常豐富的擴充套件能力,很輕鬆地自定義監控項和實現資料採集,幾乎能監控所有的資料。例如:可以監控網站的訪問次數,監控UPS和天氣溫度等;

  7. 開源社群的運作模式,有各種論壇、郵件列表、IM及時溝通等,發現問題及時解決;

2.2 Zabbix的功能特性

Zabbix有常見的商業監控軟體所具備的功能,如主機的效能監控、網路裝置效能監控、資料庫效能監控、FTP等通用協議監控、多種告警方式、詳細的報表圖表繪製、分散式、可擴充套件能力、API等;

  • 資料收集
  • 靈活的觸發器
  • 高度可定製的告警
  • 實時的繪圖功能
  • Web監控能力
  • 多種視覺化的展示
  • 歷史資料的儲存
  • 配置非常容易
  • 使用模板
  • 快速的訪問介面
  • API功能
  • 系統許可權
  • 大型環境的支援

3. Zabbix安裝與部署

3.1 配置Zabbix-server

[root@zabbix-server ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm  # 安裝Zabbix官方源

[root@zabbix-server ~]# yum install -y  zabbix-server-mysql zabbix-web-mysql zabbix-agent  mariadb-server  # 安裝服務端,由於服務端也是需要監控的,故而一併安裝Zabbix-agent

1. 建立Zabbix資料庫

# 1.啟動mariadb資料庫,並加入開機自啟
[root@zabbix-server ~]# systemctl start mariadb
[root@zabbix-server ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

# 2.登入資料庫
[root@zabbix-server ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# 3.配置資料庫資訊
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;  # 這一步一定不能少,不然會報錯
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye


# 4.匯入資料
[root@zabbix-server ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.33/
[root@zabbix-server zabbix-server-mysql-4.0.33]# zcat create.sql.gz | mysql -uroot zabbix

2. 啟動Zabbix

# 修改配置檔案,讓Zabbix連線資料庫
[root@zabbix-server ~]# vi /etc/zabbix/zabbix_server.conf 
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix  #基本上就要修改這一項

# 啟動服務,並加入開機自啟
[root@zabbix-server ~]# systemctl start zabbix-server
[root@zabbix-server ~]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.

# 檢測10051埠是否起來---->這裡要注意,關閉防火牆和selinux服務,不然Zabbix起不來
[root@zabbix-server ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      9272/zabbix_server  
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2217/mysqld         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1037/sshd           

3. 修改 vim /etc/httpd/conf.d/zabbix.conf 前端時區

[root@zabbix-server ~]# vi /etc/httpd/conf.d/zabbix.conf
#
# Zabbix monitoring system php web frontend
#

Alias /zabbix /usr/share/zabbix

<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Require all granted

    <IfModule mod_php5.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value max_input_vars 10000
        php_value always_populate_raw_post_data -1
        # php_value date.timezone Europe/Riga      # 修改這個位置為:php_value date.timezone Asia/shanghai
    </IfModule>
....

4. 啟動httpd服務,並加入開機自啟

[root@zabbix-server ~]# systemctl start httpd 
[root@zabbix-server ~]# systemctl enable httpd 
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

5. 開啟web頁面測試Zabbix是否安裝成功

進入到zabbix web頁面

到此,zabbix服務端就安裝完畢了!

3.2 配置Zabbix-client

配置zabbix-client,就不用那麼麻煩了,我們直接在第三方的映象源安裝
https://mirrors.aliyun.com/zabbix/zabbix/
選擇自己對應得版本就可以了

1. 下載安裝包

# 這裡推薦用rpm安裝,因為我們下載的就是一個rpm包
[root@web-01 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.33-1.el7.x86_64.rpm

2. 配置zabbix

# 先檢視一下zabbix-agent 的配置檔案
[root@web-01 ~]# rpm -qc zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf  # zabbix-agent 的配置檔案位置
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

# 修改配置檔案:這裡只要改一個位置就可以了
[root@web-01 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.10.134  # 這裡改成zabbix-server端的ip地址

# 啟動zabbix-agent服務,並加入開機自啟
[root@web-01 ~]# systemctl start zabbix-agent
[root@web-01 ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

# 檢測agent服務埠是否啟動,監聽的埠為10050
[root@web-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1080/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1257/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1437/zabbix_agentd  
tcp6       0      0 :::22                   :::*                    LISTEN      1080/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1257/master         
tcp6       0      0 :::10050                :::*                    LISTEN

3.3 如何監控服務?

1. 首先登入服務的zabbix web介面

2. 新增一個主機

給被監控主機新增一個模板

相關文章