19.1 Linux監控平臺介紹php
19.2 zabbix監控介紹mysql
19.3/19.4/19.6 安裝zabbixlinux
19.5 忘記Admin密碼如何作ios
19.1 Linux監控平臺介紹:nginx
常見開源監控軟件web
~1.cacti、nagios、zabbix、smokeping、open-falcon等等sql
~2.cacti、smokeping偏向於基礎監控,成圖很是漂亮數據庫
好比監控網絡的設備,也更適合apache
~3.cacti、nagios、zabbix服務端監控中心,須要php環境支持,其中zabbix和cacti都須要mysql做爲數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態,zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而能夠成圖vim
~4.open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究
架構思想值得咱們研究
~5.後續以介紹zabbix爲主
nagios與zabbix相比,nagios更注重某一個監控的狀態。好比某一個監控是正常仍是不正常,一目瞭然,他僅僅關心這個狀態。不去關心歷史,過去十分鐘或一小時,這個監控的項目是怎麼樣的,他不關心
而zabbix會把每一時刻的項目都要抓到一個數值過來。那這個數值存在了數據庫裏。也就能夠說咱們能夠用這些歷史的數值去畫圖,造成一個圖表。nagios不支持mysql的支持,因此他不能成圖,他要想畫圖要一個插件的支持。cacti也須要支持mysql的支持,能夠畫圖
對於這幾款監控軟件,都是支持php環境的支持。用Apache或nginx均可以
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19.2 zabbix監控介紹:
~1.C/S架構,基於C++開發,監控中心支持web界面配置和管理
也是要有一個服務端去客戶端抓數據。那怎麼抓的呢,必需要在客戶端有一個服務啓動着,這個服務是負責採集數據的。這個數據是能夠主動的上報給服務端,也能夠上服務端鏈接客戶端抓數據。那也就意味着客戶端分兩種模式,一個是主動模式,一個是被動模式。
~2.單server節點能夠支持上萬臺客戶端
他的併發量仍是蠻大的。他的瓶頸可能在於你採集數據的量,雖然支持上萬臺客戶端,可是上萬臺客戶端採集的數據太多的話,也會致使效率下降。因此當你服務器的規模大到必定程度的時候,zabbix就要作一些優化了。好比增長一些代理點,這些代理點充當server的角色,替代server去採集數據,而後在採集數據在彙報給server
~3.最新版本3.4,官方文檔https://www.zabbix.com/manuals
~4.5個組件
zabbix的架構裏包括了5個組件。
~5.zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操做數據
~6.數據存儲 存放數據,好比mysql
~7.web界面 也叫web UI,在web界面下操做配置是zabbix簡單易用的主要緣由
~8.zabbix-proxy 可選組件,它能夠代替zabbix-server的功能,減輕server的壓力
在機器量不少的時候,能夠選擇使用它
有時候你的服務器可能分佈在多個機房裏。每一個機房的服務器之間是單獨的內網,那這個時候就能夠在某一個局域網裏搭建一個zabbix-proxy,用這臺proxy去監控這個局域網內的機器
~9.zabbix-agent 客戶端軟件,負責採集各個監控服務或項目的數據,並上報
每一臺客戶端都要安裝這個
zabbix監控流程圖:
若是想要監控一個服務器,那先要添加主機到監控中心去,讓他們二者先通訊。而後還要添加監控的項目。可以和服務端通訊了,就會採集數據,就會上報到數據中心去(就是是mysql裏面),就會到zabbix-server裏面,採集過程也能夠是主動也能夠是被動。而後zabbix-server須要配置一個告警規則,就是你採集的數據有沒有達到告警的條件,若是達到了就告警,若是沒有到達就只是存儲。還要配置告警的機制,就是說判斷了數據不正常,須要告警了,那怎麼告警,是發郵件仍是發短信,通知給誰呢,都須要在服務端,server中心配置。那全部的配置都是在web界面(UI)裏面去配置的。並且這些存儲的數據是能夠用圖形呈現的,也是經過web界面展示給咱們
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19.3/19.4/19.6 安裝zabbix:
如下實驗準備兩臺機器,一臺服務端,也就是監控中心。另外一臺客戶端
~1.
官網下載地址 www.zabbix.com/download
wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
~2.
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
~3.
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
zabbix-agent客戶端軟件
zabbix-get服務端上用的一個工具。能夠經過命令行的形式得到客戶端的某些監控項目的數據
zabbix-server-msql須要安裝一些與mysql相關的文件。好比這裏面的.sql的數據。安裝完以後須要把這個數據導入進去的
zabbix-web是咱們的web UI就是web界面
zabbix-web-mysql咱們的web確定要和mysql打交道。因此還要安裝web與mysql相關的文件。這個是在服務端安裝的,客戶端僅僅安裝zabbix-agent就能夠了
~4.
會連帶安裝httpd和php
~5.
若是mysql以前沒有安裝的話,須要根據lamp那一章的mysql安裝方法安裝mysql。也能夠yum安裝mysql
~6.
vim /etc/my.cnf //須要增長配置
character_set_server = utf8 #[mysql]最上面插入便可(即設定中文字符集)
~7.
重啓mysqld服務後,進入mysql命令行,建立zabbix庫
create database zabbix character set utf8;
~8.
再建立用戶。這個用戶是須要讓web代碼(php代碼)鏈接mysql的。
還有就是監控中心(zabbix-server),這個服務啓動的前提也是可以鏈接mysql。你的客戶端採集了數據,並傳遞給服務端,那服務端怎麼樣吧這些數據寫入到mysql裏面去,這就涉及到這個mysql的用戶和數據庫。他用哪一個用戶去寫入查詢,在這個庫裏面有相關的表。因此咱們要前提要設定一個用戶,這個用戶須要對這個庫有讀寫的權限
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
這個密碼(aming-zabbix)要記住。等下在~11.步驟配置文件的時候會用到
這裏設置的127.0.0.1是來源IP。若是不在同一臺機器上,就要寫web UI(PHP代碼)所在的機器IP。跟~11.步驟是對應起來的
~9.
導入數據。導入原始的數據,否則zabbix無法在web界面下展示給咱們
cd /usr/share/doc/zabbix-server-mysql-3.2.11 #自帶的數據就在這個目錄下。!!輸入的時候tab補全,避免版本號不同
gzip -d create.sql.gz #解壓這個原始的數據
mysql -uroot -pxxx zabbix < create.sql #把這個原始的數據導入到mysql的zabbix庫裏
~10.
systemctl start httpd; systemctl enable httpd #要停掉一樣監聽80端口的nginx
~11.
vim /etc/zabbix/zabbix_server.conf //修改或增長#進程在可是沒有監聽80端口因此要修改配置文件。搜索/DBHost:
DBHost=127.0.0.1 //在DBName=zabbix上面增長 #生產環境中爲提升監控中心的效率,能夠把mysql服務放到另一臺機器上。若是是另一臺機器。那IP確定要寫單獨的一個IP了。而不是127.0.0.1。即來源IP,跟~8.步驟是對應起來的
DBPassword=aming-zabbix //在DBuser下面增長 #~8.步驟mysql設置的時候設定的
~12.
systemctl start zabbix-server
systemctl enable zabbix-server
netstat -lntp |grep zabbix //查看監聽端口
~13.
瀏覽器訪問http://ip/zabbix/ web界面下面配置zabbix
#修改時區:
vim /etc/php.ini #php默認的配置文件
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai #去掉註釋,改成上海時區
systemctl restart httpd #再次重啓apache
按照步驟安裝web界面
~14.
進入zabix界面
默認用戶名Admin 密碼zabbix
進入後臺第一件事情就是修改密碼
實例:
首先去官網下載rpm包
01 02都要下載.
[root@axinlinux-01 ~]# wget https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@axinlinux-02 ~]# wget https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@axinlinux-01 ~]# rpm -ivh https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm #其實是安裝了一個yum源倉庫。能夠看一下
[root@axinlinux-02 ~]# rpm -ivh https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@axinlinux-01 ~]# cat /etc/yum.repos.d/ #多了一個zabbix.repo。這個就是咱們剛剛安裝的rpm包所安裝的一個文件
CentOS7-Base-163.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo epel-testing.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo epel.repo zabbix.repo
那麼有了這個源以後,就能夠直接yum安裝zabbix了。可是要安裝這些包
[root@axinlinux-01 ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql 0102所須要yum的一些包
[root@axinlinux-02 ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
[root@axinlinux-01 ~]# ps aux |grep mysql #檢查是否啓動mysql
[root@axinlinux-01 ~]# vim /etc/my.cnf
[mysqld]
character_set_server = utf8
[root@axinlinux-01 ~]# systemctl restart mysql
[root@axinlinux-01 ~]# mysql -uroot -pwangxin789
MySQL [(none)]> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)
MySQL [(none)]> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
Query OK, 0 rows affected (0.08 sec)
[root@axinlinux-01 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/ #cd進zabbix原始數據的路徑
[root@axinlinux-01 zabbix-server-mysql-3.2.11]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README #就是這個create.sql.gz
[root@axinlinux-01 zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz #解壓他
[root@axinlinux-01 zabbix-server-mysql-3.2.11]# ls
AUTHORS ChangeLog COPYING create.sql NEWS README
[root@axinlinux-01 zabbix-server-mysql-3.2.11]# mysql -uroot -pwangxin789 zabbix < create.sql
#咱們把這個zabbix的原始數導入到mysql的zabbix庫裏。中間須要些時間
[root@axinlinux-01 ~]# systemctl start zabbix-server #啓動zabbix
[root@axinlinux-01 ~]# systemctl start httpd^C #啓動httpd以前要看一下nginx是否啓動,由於他也是監聽80端口
[root@axinlinux-01 ~]# ps aux |grep nginx
[root@axinlinux-01 ~]# /etc/init.d/nginx stop #關掉nginx
Stopping nginx (via systemctl): [ 肯定 ]
[root@axinlinux-01 ~]# !ps #檢查nginx是否關閉
[root@axinlinux-01 ~]# netstat -lntp #看一下80端口是否監聽,沒有的話咱們才能夠開啓httpd
[root@axinlinux-01 ~]# systemctl start httpd #開啓htpd
[root@axinlinux-01 ~]# !netstat #檢查是否監聽了80端口
netstat -lntp
tcp6 0 0 :::80 :::* LISTEN 3878/httpd #已監聽
[root@axinlinux-01 ~]# systemctl enable httpd #httpd加入到啓動列表裏面去
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@axinlinux-01 ~]# systemctl enable zabbix-server #zabbix-server加入到啓動列表裏面去
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@axinlinux-01 ~]# systemctl disable nginx #不要忘記把nginx停掉
nginx.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig nginx off #不太對
[root@axinlinux-01 ~]# chkconfig nginx off #這樣將他停掉
[root@axinlinux-01 ~]# ps aux |grep zabbix #看一下zabbix是否啓動。已啓動
[root@axinlinux-01 ~]# netstat -lntp #看一下zabbix是否監聽端口,並無監聽端口
進程還在,可是並無監聽端口,要排查一下。能夠先看一下他的日誌
[root@axinlinux-01 ~]# less /var/log/zabbix/zabbix_server.log #日誌在這個路徑下
3829:20180910:153640.897 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) #不能鏈接mysql。要修改配置文件
[root@axinlinux-01 ~]# vim /etc/zabbix/zabbix_server.conf #修改配置文件
# DBHost=localhost #這一行下面定義IP。固然也能夠寫localhost
DBHost=127.0.0.1
### Option: DBName
# Database name.
# For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored.
#
# Mandatory: yes
# Default:
# DBName=
DBName=zabbix #還要檢查DBName是否是zabbix
### Option: DBSchema
# Schema name. Used for IBM DB2 and PostgreSQL.
#
# Mandatory: no
# Default:
# DBSchema=
### Option: DBUser
# Database user. Ignored for SQLite.
#
# Mandatory: no
# Default:
# DBUser=
DBUser=zabbix #檢查是否是zabix
DBPassword=aming-zabbix #設置DBPassword密碼
[root@axinlinux-01 ~]# systemctl restart zabbix-server.service #修改完配置文件,在重啓一下服務
[root@axinlinux-01 ~]# ps aux |grep zabbix #檢查是否啓動。正常的話會啓動這麼多的子進程
[root@axinlinux-01 ~]# netstat -lntp #查看監聽的端口。爲10051
tcp6 0 0 :::10051 :::* LISTEN 4586/zabbix_server
!!咱們只是把httpd服務啓動啓動了,沒有作任何的配置。咱們yum安裝zabbix,會默認安裝httpd以及他的配置文件。一切都幫咱們配置好了。若是咱們非要編譯安裝htpd或者使用nginx,那咱們的工做量就會很大。!!
接下來配置web界面。瀏覽器輸入監控中心的監控地址:
以上這一項是讓咱們設置timezone的時區
[root@axinlinux-01 ~]# vim /etc/php.ini #php默認的配置文件。搜索timezone
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai #去掉註釋,改成上海時區
[root@axinlinux-01 ~]# systemctl restart httpd
重啓以後,再來刷新界面
所有OK以後,點擊NEXT step
以上,填寫mysql相關的信息。密碼就是咱們之間設置的密碼 aming-zabbix
以上,定義zabbix-server服務的主機名
以上確認界面
以上,安裝成功
以上登陸zabbix。默認的管理員是admin,密碼是zabbix
進去以後首先修改密碼:
以上,重現刷新爲中文。密碼也已生效
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19.5 忘記Admin密碼如何作:
跟重置mysql的root密碼殊途同歸,直接更改數據庫的數據就能夠了
~1.進入mysql命令行,選擇zabbix庫
~2.mysql -uroot -p zabbix
~3.update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
~4.這樣就更改了Admin用戶的密碼
實例:
[root@axinlinux-01 ~]# mysql -uroot -pwangxin789
MySQL [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
..........
127 rows in set (0.00 sec)
這裏面有不少zabbix的表。之後監控的主機不少的話,這些表會愈來愈大。因此要去指定合適的監控的規則。好比個人數據量要保持多長時間,那麼在定義監控項目的時候,就要想到了。好比保留一個月或保留了一年。若是監控的服務量很大的話,一天可能就要漲幾個G。那麼服務器磁盤是否支持,這些都要想到
MySQL [zabbix]> desc users; #密碼存放於users表裏面
+----------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------------+------+-----+---------+-------+
| userid | bigint(20) unsigned | NO | PRI | NULL | |
| alias | varchar(100) | NO | UNI | | |
| name | varchar(100) | NO | | | |
| surname | varchar(100) | NO | | | |
| passwd | char(32) | NO | | | | #咱們改的就是這個
| url | varchar(255) | NO | | | |
| autologin | int(11) | NO | | 0 | |
| autologout | int(11) | NO | | 900 | |
| lang | varchar(5) | NO | | en_GB | |
| refresh | int(11) | NO | | 30 | |
| type | int(11) | NO | | 1 | |
| theme | varchar(128) | NO | | default | |
| attempt_failed | int(11) | NO | | 0 | |
| attempt_ip | varchar(39) | NO | | | |
| attempt_clock | int(11) | NO | | 0 | |
| rows_per_page | int(11) | NO | | 50 | |
+----------------+---------------------+------+-----+---------+-------+
16 rows in set (0.00 sec)
MySQL [zabbix]> update users set passwd=md5('wangxin6789') where alias='Admin';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
咱們將密碼更改成wangxin6789,登陸瀏覽器,就可使用了