1. 程式人生 > >第十九章 Linux監控平臺搭建

第十九章 Linux監控平臺搭建

 

19.1 Linux監控平臺介紹

19.2 zabbix監控介紹

19.3 安裝zabbix(上)

•vim /etc/my.cnf //需要增加配置

character_set_server = utf8

19.4 安裝zabbix(中)

vim /etc/zabbix/zabbix_server.conf

vim /etc/php.ini

Admin

zabbix

更改Admin密碼和語言

19.5 忘記Admin密碼如何做

 

19.6 安裝zabbix(下)

rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

 yum install -y zabbix-agent

systemctl start zabbix-agent.service

systemctl enable zabbix-agent.service

19.7 主動模式和被動模式

19.8 新增監控主機

19.9 新增自定義模板

1)選擇一個模板,把需要的監控項複製到aming模板裡

群組裡面選擇Template

 

2)新增自動發現項的方法

連結模板-->選擇-->新增-->更新-->再取消連結

點取消連結,就可以把不用的監控項刪除了

19.10 處理圖形中的亂碼

把上面的aming 模板應用到主機上

從windows上覆制一個文字型檔,上傳到伺服器上,做軟連結,然後重新整理。

vim /usr/share/zabbix/include/defines.inc.php

新增新的圖形

19.11 自動發現

檢測不到,是因為間隔時間太長

為了更快的生效,重新啟動server端和agent端

更改影象

選擇模板

選擇自動發現規則——》network interface discovery

選擇Network traffic on

然後就可以更改線條和顏色了

更改完以後的效果

19.12 新增自定義監控專案

客戶端指令碼並賦許可權

更改配置檔案

定義監控項的key為my.estab.count,後面的[*]裡面寫指令碼的引數,如果沒有引數則可以省略,指令碼為/usr/local/sbin/estab.sh

vim /etc/zabbix/zabbix_agentd.conf 

重啟agent服務

systemctl restart zabbix-agent.service

服務端驗證

監控中心建立監控項

建立圖形

建立觸發器

19.13 配置郵件告警(上)

指令碼路徑

指令碼內容

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *

def sendqqmail(username,password,mailfrom,mailto,subject,content):
    gserver = 'smtp.qq.com'
    gport = 25

    try:
        # msg = MIMEText(unicode(content).encode('utf-8')) //如果傳送的郵件有亂碼,可以嘗試把這行改成如下:
        msg = MIMEText(content,'plan','utf-8') 
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject

        smtp = smtplib.SMTP(gserver, gport)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)

        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
    except Exception,err:
        print "Send mail failed. Error: %s" % err


def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
##定義QQ郵箱的賬號和密碼,你需要修改成你自己的賬號和密碼(請不要把真實的使用者名稱和密碼放到網上公開,否則你會死的很慘)
    sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)

if __name__ == "__main__":
    main()
    
    
#####指令碼使用說明######
#1. 首先定義好指令碼中的郵箱賬號和密碼


#2. 指令碼執行命令為:python mail.py 目標郵箱 "郵件主題" "郵件內容"

指令碼後面跟的郵箱地址,測試郵件

19.14 配置郵件告警(下)

建立使用者

 

增加使用者許可權

選擇所以組

再檢視使用者的許可權

新增動作

新增操作

操作--》新的裡面的內容

 

新增恢復操作

 

19.15 測試告警

自定義觸發器

課堂串講

19.1 Linux監控平臺介紹
19.2 zabbix監控介紹
19.3/19.4/19.6 安裝zabbix
19.5 忘記Admin密碼如何做

19.1 Linux監控平臺介紹

監控對於網站來說是非常重要,即使是大公司由於監控做得不到位,最終會導致因為伺服器的不夠穩定,客戶對其不夠信任,而流失大量客戶。
通常監控軟體有下面幾款,cactinagioszabbixsmokepingopen-falcon等等。
cacti、smokeping偏向於基礎監控(網路裝置),成圖非常漂亮,更加適合在IDC機房使用。

其中nagios和zabbix流行度比較高。幾年前還是使用nagios,而近幾年zabbix越來越受到歡迎。主要是因為zabbix配置比nagios簡單得多,其優勢也比nagios多。

open-falcon為小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟體,他是基於zabbix的監控思想而開發的,非常值得研究。

cacti、nagios、zabbix服務端監控中心,即支援web頁面來監控網站,因此需要php環境支援,其中zabbix和cacti都需要mysql作為資料儲存,nagios不用儲存歷史資料,注重服務或者監控項的狀態,zabbix會獲取服務或者監控專案的資料,會把資料記錄到資料庫裡,從而可以成圖。

總之,安裝zabbix時要先安裝好MySQL,其中PHPhttpd自帶安裝上,後續以介紹zabbix為主。

19.2 zabbix監控介紹

zabbix採用的是C/S架構,其中客戶端用來採集資料,在上報給服務端。zabbix基於C++開發,監控中心支援web介面配置和管理。理論上單server節點可以支援上萬臺客戶端。但如果監控的專案太多了,可以使用代理zabbix-proxy來採集資料,再讓他來上報給監控中心。其最新版本3.4,官方中文文件在 https://www.zabbix.com/manuals 方便學習配置zabbix

  • zabbix有服務5個元件
    • zabbix-server 監控中心,接收客戶端上報資訊,負責配置、統計、操作資料
    • 資料儲存 存放資料,比如mysql
    • web介面 也叫web UI,在web介面下操作配置是zabbix簡單易用的主要原因
    • zabbix-proxy 可選元件,它可以代替zabbix-server的功能,減輕server的壓力
    • zabbix-agent 客戶端軟體,負責採集各個監控服務或專案的資料並上報。分主動模式和被動模式

zabbix工作流程

使用web頁面來新增監控主機到監控中心,然後再對其配置監控專案。被監控的伺服器和監控中心通訊了,監控中心就會採集資料並存入到資料庫中。監控中心就會對採集的資料值進行判斷是否超多告警的規則,並進行告警。

19.3/19.4 安裝zabbix

準備兩臺機器,一臺服務端 一臺客戶端
服務端:kun05 192.168.80.104
客戶端:kun03 192.168.80.102

配置服務端

由於epel中的zabbix版本比較久,因此我們自己去官網上下載好zabbix的倉庫 並安裝他們
官網下載地址 www.zabbix.com/download

找到對應的版本

根據官方的提示來複制下面的路徑到服務端上

步驟

1.下載官方給出的epel源包並安裝

1
2
[[email protected] ~]# wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[[email protected] ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

 

/etc/yum.repos.d/中就會多了個倉庫zabbix.repo 該倉庫可以指定下載對應的zabbix版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[[email protected] ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/3.4/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

 

2.分別安裝zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

1
[[email protected] ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

zabbix-agent zabbix客戶端軟體
zabbix-get zabbix服務端上工具 ,可以獲得客戶端上監控專案的資料
zabbix-server-mysql zabbix監控中心所需的對應MySQL資料(用於匯入資料到自建的zabbix庫中)
zabbix-web web介面
zabbix-web-mysql web介面和MySQL的相關的資料

服務端上才需要安裝以上的包 客戶端只要安裝zabbix-agent即可,此過程是自帶安裝httpdphp

1
2
3
4
5
6
7
8
9
10
11
作為依賴被安裝:
  httpd.x86_64 0:2.4.6-80.el7.centos.1                  httpd-tools.x86_64 0:2.4.6-80.el7.centos.1              
  iksemel.x86_64 0:1.4-6.el7                            libevent.x86_64 0:2.0.21-4.el7                          
  libzip.x86_64 0:0.10.1-8.el7                          mailcap.noarch 0:2.1.41-2.el7                           
  nettle.x86_64 0:2.7.1-8.el7                           php.x86_64 0:5.4.16-45.el7                              
  php-bcmath.x86_64 0:5.4.16-45.el7                     php-cli.x86_64 0:5.4.16-45.el7                          
  php-common.x86_64 0:5.4.16-45.el7                     php-gd.x86_64 0:5.4.16-45.el7                           
  php-ldap.x86_64 0:5.4.16-45.el7                       php-mbstring.x86_64 0:5.4.16-45.el7                     
  php-mysql.x86_64 0:5.4.16-45.el7                      php-pdo.x86_64 0:5.4.16-45.el7                          
  php-xml.x86_64 0:5.4.16-45.el7                        t1lib.x86_64 0:5.1.2-14.el7                             
  trousers.x86_64 0:0.3.14-2.el7                        unixODBC.x86_64 0:2.3.1-11.el7

 

3.安裝MySQL

由於以前已經安裝過這裡就不詳細說明安裝過程
檢視是否啟動MySQL

1
2
3
4
[[email protected] ~]# ps aux |grep mysql
root       904  0.0  0.1 115388  1704 ?        S    06:29   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data --pid-file=/data/kun05.pid
mysql     1110  0.2 45.0 1300780 454052 ?      Sl   06:29   0:06 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/kun05.err --pid-file=/data/kun05.pid --socket=/tmp/mysql.sock
root      1493  0.0  0.0 112676   980 pts/0    R+   07:13   0:00 grep --color=auto mysql

 

4.編輯MySQL的配置檔案新增中文所要的字符集並重啟服務

1
2
3
4
5
[[email protected] ~]# vim /etc/my.cnf

character_set_server=utf8

[[email protected] ~]# service mysqld restart

character_set_server=utf8指定MySQL的字符集為utf8 用於在web中正確顯示中文

5.進入MySQL 建立zabbix所需要的庫,使用者

1
[[email protected] ~]# mysql -uroot -p38003800

建立庫需要指定字符集為utf8

1
mysql> create database zabbix character set utf8;

 

1
mysql> grant all on zabbix.* to'zabbix'@'127.0.0.1' identified by '38003800';

ip為使用者zabbix的來源ip 但資料庫的zabbix server不在同一臺機器上時候,要填zabbix server的IP地址

6.匯入zabbix-server-mysql的資料到zabbix庫中

1
[[email protected] ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.11/

解壓create.sql.gz包

1
[[email protected] zabbix-server-mysql-3.4.11]# gzip -d create.sql.gz

 

匯入資料

1
[[email protected] zabbix-server-mysql-3.4.11]# mysql -uroot -p38003800 zabbix < create.sql

 

7.啟動httpd服務

由於之前已經安裝過Nginx,先關閉他

1
2
3
4
5
[[email protected] ~]# systemctl stop nginx
[[email protected] ~]# systemctl disable nginx

[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl enable httpd

 

8.更改zabbix server的配置檔案

1
[[email protected] zabbix]# vim /etc/zabbix/zabbix_server.conf

修改下面引數

1
DBHost=127.0.0.1   ##指定資料的IP地址

 

在DBUser下面定義密碼

1
2
DBUser=zabbix
DBPassword=38003800

 

這些配置內容和新增的MySQL使用者zabbi的資訊要一致

9.啟動zabbix server服務

1
2
[[email protected] zabbix]# systemctl start zabbix-server
[[email protected] zabbix]# systemctl enable zabbix-server

10.檢視zabbix server是否監聽埠

1
2
3
[[email protected] zabbix]# netstat -lntp |grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      2220/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      2220/zabbix_server

zabbix_server預設監聽10051

當啟動不了或者不監聽埠可以檢視日誌 路徑是/var/log/zabbix/zabbix_server.log

11.配置web介面

瀏覽器上輸入192.168.80.104/zabbix

這裡是PHP缺少了配置timezone

回去服務端找到/etc/php.ini並配置timezone

1
2
3
[[email protected] zabbix]# vim /etc/php.ini

date.timezone =Asia/Shanghai

 

重啟httpd服務

1
[[email protected] zabbix]# systemctl restart httpd

 

再回去繼續下一步

填好資料庫相關的使用者 庫 密碼等資訊

填寫zabbix server名字

新增成功

填寫使用者名稱和密碼 預設使用者名稱Admin 密碼zabbix

更改為自己的密碼和語言 選擇 Administration — Users — Admin 使用者 —Change passwordLangueage

修改成功

19.5 忘記zabbix Admin密碼

由於zabbix server的使用者的資料是存放在MySQL中 因此只要修改MySQL的中zabbix使用者的密碼即可

步驟

1.進入MySQL中的zabbix庫中檢視到users表

1
2
3
4
5
6
7
[[email protected] zabbix]# mysql -uroot -p38003800

mysql> use zabbix;

mysql> desc users;

mysql> select * from users;

2.修改user表的Admin的密碼

1
2
3
mysql> update users set passwd=md5('111111') where alias= 'Admin';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

passwd=md5('111111')使用md5加密 新密碼為111111

19.6 安裝zabbix

配置客戶端

步驟

1.下載官方給出的epel源包並安裝

1
2
[[email protected] ~]# wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[[email protected] ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

2.安裝zabbix-agent

1
[[email protected] ~]# yum install -y zabbix-agent

3.修改zabbix agent的配置檔案

1
[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf

修改下面引數

1
2
3
4
5
Server=192.168.80.104

ServerActive=192.168.80.104

Hostname=kun03

 

Server指定zabbix server的IP地址 ServerActive開啟server agent主動模式 不填預設為被動模式 Hostname指定客戶端的主機名 以便分辨

4.啟動zabbix agent服務

1
2
[[email protected] ~]# systemctl start zabbix-agent
[[email protected] ~]# systemctl enable zabbix-agent

5.檢視是否監聽埠

1
2
3
[[email protected] ~]# netstat -lntp |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1480/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      1480/zabbix_agentd

zabbix_agent預設是監聽10050

 

19.7 主動模式和被動模式
19.8 新增監控主機
19.9 新增自定義模板
19.10 處理圖形中的亂碼
19.11 自動發現

19.7 主動模式和被動模式

這裡主動或者被動是相對客戶端來講的
被動模式,客戶端被動地接受連線,並把監控資訊傳遞給服務端,服務端會主動連線客戶端獲取監控專案資料。
主動模式,客戶端會主動把監控資料彙報給服務端,服務端只負責接收即可。

  • 通常下面兩種情況使用主動模式更加合適
    • 當客戶端數量非常多時,建議使用主動模式,這樣可以降低服務端的壓力。
    • 服務端有公網ip,客戶端只有內網ip,但卻能連外網(通過iptable的nat表實現),這種場景適合主動模式。

19.8 新增監控主機

選擇配置
主機群組 客戶端機器的組 一般先新增組再到組裡新增主機

模版 預設的監控專案的集合

主機 就是要新增的客戶端

圖上的zabbix server是服務端安裝的zabbix agent 我們在服務端並沒有啟動

步驟

1.新增主機群組

主機群組 —- 新增主機群組 —-新增組名 —- 新增

2.新增主機

主機 —- 建立主機 —- 主機名稱可見名稱 —- 選擇群組 —- 新增agent的IP地址 —- 新增


主機名稱可見名稱填寫的主機名要和zabbix_agent的配置檔案Hostname一致 ip填寫客戶端的ip地址

新增成功

應用集 監控專案的集合,即把監控專案分在多個組裡

監控項 所有的監控的專案

觸發器 針對某個監控專案而設定的告警規則

圖形 把歷史資料做出圖表顯示

自動發現規則 自動發現客戶端系統的網絡卡流量 檔案系統 磁碟 分割槽使用情況等

web場景 監控具體的網站的資訊 (網頁的狀態碼錯誤告警等)

19.9 新增自定義模板

當新增一些需要監控特定監控專案的客戶端時,為了方便管理和提升效率 都是使用自定義模版

步驟

1.新增自定義模版

模版 —- 建立模版 —- 新增 模版名字可見的名稱 —- 選擇template—- 新增

2.新增監控專案到自定義模版中

選擇其他模版(這裡用 Template OS Linux)中的某個專案 —- 複製 —- 選擇template 的 test

test模版已經新增我們自己需要監控的專案

同理可以使觸發器 圖形 應用集 新增主機需要的專案 但只有自動發現是不能通過此方法來新增的

新增自動發現規制到自定義模版

步驟

1.新增連結模版

選擇 test —- 連結模版 —- 選擇連結的模版 —- 新增 —- 更新

2.取消模版連結

選擇test —- 連結的模版 —- 取消連結 —- 更新

取消連結並清理會同時把模版中的監控專案一併清理

3.刪除不用監控的專案

4.把自定義模板新增到主機上

主機 —- 選kun03 —- 模版 —- 連結指示器 —- 選test — 新增 —- 更新

19.10 處理圖形中的亂碼

我們發現自定義主機中圖形出現了亂碼,這是因為zabbix中的沒有中文字型檔,因此我們可以讓win上的中文字型檔拷貝到zabbix server的字型檔上即可

步驟

在za