監(jiān)控介紹
1. 什么是監(jiān)控
顧名思義婆廊,“監(jiān)控”,可以理解為監(jiān)視和控制罢浇。
比如說一個web網(wǎng)站服務乒验,隨著用戶量的日益增加搪缨,可能就會導致系統(tǒng)oom(內(nèi)存不夠用了)逆趋,也就是out of memory內(nèi)存溢出哮伟,從而導致網(wǎng)站異常。
而且處于oom這個狀態(tài)時所袁,系統(tǒng)會kill掉一些占用內(nèi)存多的服務盏档,來釋放掉一部分內(nèi)存,供系統(tǒng)內(nèi)核使用燥爷。
如何判斷,web服務是因為用戶訪問過多懦窘,達到瓶頸前翎。
還是因為程序Bug導致的內(nèi)存占用過多。
解決辦法:
提前對web服務進行壓力測試(比如說上線的新web網(wǎng)站)畅涂,并記錄下web的并發(fā)壓力值港华,如2000并發(fā)。
這個時候就可以用這個值來進行監(jiān)控午衰,達到多少的時候立宜,就報警。
2. 常見的Linux監(jiān)控命令
命令 | 功能 |
---|---|
free | 顯示系統(tǒng)中空閑內(nèi)存和使用內(nèi)存的數(shù)量 |
df | 報告文件系統(tǒng)磁盤空間使用情況 |
top | 顯示Linux進程 |
htop | 交互式進程查看器 |
uptime | 說明系統(tǒng)運行了多長時間 |
iftop | 按主機在接口上顯示帶寬使用情況 |
iostat | 報告中央處理器(CPU)的統(tǒng)計數(shù)據(jù)以及設備和分區(qū)的輸入/輸出統(tǒng)計數(shù)據(jù)臊岸。 |
vmstat | 報告虛擬內(nèi)存統(tǒng)計數(shù)據(jù) |
netstat | 打印網(wǎng)絡連接橙数、路由表、接口統(tǒng)計信息帅戒、偽裝連接和多播成員關系 |
nethogs | Net top工具對每個進程的帶寬進行分組 |
3. 使用shell腳本來監(jiān)控服務器
監(jiān)控內(nèi)存:每隔一分鐘監(jiān)控一次內(nèi)存灯帮,當內(nèi)存低于100M時,觸發(fā)郵件報警,并在郵件內(nèi)顯示剩余內(nèi)存钟哥。
while true
do
free=free -m|awk 'NR==2{print $NF}'
if [ $free -lt 100 ]
then
echo $free | mail -s "當前內(nèi)存" 123@qq.com
fi
sleep 60
done
4. Zabbix架構圖及原理講解
安裝zabbix所需服務(角色)
(1)數(shù)據(jù)庫
zabbix支持mysql迎献、mariadb、PG等多種數(shù)據(jù)庫腻贰。
(2)zabbix-server
配置連接數(shù)據(jù)庫的一系列信息吁恍。
(3)zabbix-web(http\amp)
(4)zabbix-agent
agent取到的監(jiān)控值發(fā)給server
工作過程
(1)zabbix-agent負責采集客戶端的監(jiān)控信息,然后發(fā)送給zabbix-server播演。
(2)zabbix-server對該數(shù)據(jù)践盼,根據(jù)設置的監(jiān)控條件來進行分析處理,一旦數(shù)據(jù)滿足監(jiān)控條件宾巍,則觸發(fā)報警咕幻。
(3)處理完的監(jiān)控數(shù)據(jù),存入數(shù)據(jù)庫中顶霞。
(4)然后由web界面顯示這些由server端處理完的數(shù)據(jù)肄程。
(5)每次添加監(jiān)控主機、監(jiān)控項時选浑,都是在web頁面進行添加蓝厌,提交這些操作時,數(shù)據(jù)寫入數(shù)據(jù)庫古徒。
(5)server會定期同步數(shù)據(jù)庫(默認同步時間為60秒一次)拓提,從數(shù)據(jù)庫里面讀取數(shù)據(jù),也就是讀取我們在web界面添加的監(jiān)控主機隧膘、監(jiān)控項等代态,然后向zabbix-agent取值,進行監(jiān)控疹吃。
安裝Zabbix
1. 安裝硬件要求
ip地址 | 硬件配置 | 主機名 |
---|---|---|
10.0.0.61 | 1CPU蹦疑、1G內(nèi)存 | zabbix-server |
2. 安裝步驟
(1)下載zabbix官方源
[root@zabbix-server /etc/yum.repos.d]# wget -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
wget到本地,方便下次使用
[root@zabbix-server /etc/yum.repos.d]# rpm -Uvh zabbix-release-4.0-1.el7.noarch.rpm
warning: zabbix-release-4.0-1.el7.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-4.0-1.el7 ################################# [100%]
[root@zabbix-server /etc/yum.repos.d]# ll -h
total 28K
-rw-r--r-- 1 root root 1.6K Dec 1 2016 CentOS-Base.repo
-rw-r--r-- 1 root root 664 May 11 2018 epel-7.repo
drwxr-xr-x. 2 root root 187 Apr 19 12:36 test
-rw-r--r-- 1 root root 14K Oct 2 2018 zabbix-release-4.0-1.el7.noarch.rpm
-rw-r--r-- 1 root root 410 Oct 2 2018 zabbix.repo
(2)更改zabbix.repo
[root@zabbix-server /etc/yum.repos.d]# vim zabbix.repo_bak
把第3行的baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/
改成
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/$basearch/
把第10行的baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
改成
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/7/$basearch/
(3)安裝zabbix服務端和zabbix-web前端
[root@zabbix-server /etc/yum.repos.d]# yum install zabbix-server-mysql zabbix-web-mysql -y
(4)安裝數(shù)據(jù)庫并啟動
[root@zabbix-server /etc/yum.repos.d]# yum -y install mariadb-server
[root@zabbix-server /etc/yum.repos.d]# systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@zabbix-server /etc/yum.repos.d]# systemctl start mariadb.service
[root@zabbix-server /etc/yum.repos.d]# echo $?
0
(5)初始化數(shù)據(jù)庫
[root@zabbix-server /etc/yum.repos.d]# mysql_secure_installation
回車
n
一直y
(6)登錄數(shù)據(jù)庫創(chuàng)建zabbix庫及授權
[root@zabbix-server ~]# 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@localhost identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye
(7)導入數(shù)據(jù)
使用 MySQL 來導入 Zabbix server 的初始數(shù)據(jù)庫 schema 和數(shù)據(jù)
[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix
(8)檢查導入是否成功
[root@zabbix-server ~]# mysql -uroot zabbix -e 'show tables'
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| application_discovery |
| application_prototype |
| application_template |
| applications |
| auditlog |
| auditlog_details |
| autoreg_host |
| conditions |
| config |
| corr_condition |
| corr_condition_group |
| corr_condition_tag |
| corr_condition_tagpair |
| corr_condition_tagvalue |
| corr_operation |
| correlation |
| dashboard |
| dashboard_user |
| dashboard_usrgrp |
| dbversion |
| dchecks |
| dhosts |
| drules |
| dservices |
| escalations |
| event_recovery |
| event_suppress |
| event_tag |
| events |
| expressions |
| functions |
| globalmacro |
| globalvars |
| graph_discovery |
| graph_theme |
| graphs |
| graphs_items |
| group_discovery |
| group_prototype |
| history |
| history_log |
| history_str |
| history_text |
| history_uint |
| host_discovery |
| host_inventory |
| hostmacro |
| hosts |
| hosts_groups |
| hosts_templates |
| housekeeper |
| hstgrp |
| httpstep |
| httpstep_field |
| httpstepitem |
| httptest |
| httptest_field |
| httptestitem |
| icon_map |
| icon_mapping |
| ids |
| images |
| interface |
| interface_discovery |
| item_application_prototype |
| item_condition |
| item_discovery |
| item_preproc |
| items |
| items_applications |
| maintenance_tag |
| maintenances |
| maintenances_groups |
| maintenances_hosts |
| maintenances_windows |
| mappings |
| media |
| media_type |
| opcommand |
| opcommand_grp |
| opcommand_hst |
| opconditions |
| operations |
| opgroup |
| opinventory |
| opmessage |
| opmessage_grp |
| opmessage_usr |
| optemplate |
| problem |
| problem_tag |
| profiles |
| proxy_autoreg_host |
| proxy_dhistory |
| proxy_history |
| regexps |
| rights |
| screen_user |
| screen_usrgrp |
| screens |
| screens_items |
| scripts |
| service_alarms |
| services |
| services_links |
| services_times |
| sessions |
| slides |
| slideshow_user |
| slideshow_usrgrp |
| slideshows |
| sysmap_element_trigger |
| sysmap_element_url |
| sysmap_shape |
| sysmap_url |
| sysmap_user |
| sysmap_usrgrp |
| sysmaps |
| sysmaps_elements |
| sysmaps_link_triggers |
| sysmaps_links |
| tag_filter |
| task |
| task_acknowledge |
| task_check_now |
| task_close_problem |
| task_remote_command |
| task_remote_command_result |
| timeperiods |
| trends |
| trends_uint |
| trigger_depends |
| trigger_discovery |
| trigger_tag |
| triggers |
| users |
| users_groups |
| usrgrp |
| valuemaps |
| widget |
| widget_field |
+----------------------------+
(9)為 Zabbix server/proxy 配置數(shù)據(jù)庫
編輯 zabbix_server.conf 或 zabbix_proxy.conf 文件以使用已創(chuàng)建的數(shù)據(jù)庫
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
91行:# DBHost=localhost
改成
DBHost=localhost
DBName=zabbix 不用改
DBUser=zabbix 不用改
124行:# DBPassword=
改成
DBPassword=123456
(10)啟動 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.
[root@zabbix-server ~]# systemctl start zabbix-server
(11)檢查啟動情況
[root@zabbix-server ~]# netstat -lntup|grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 7718/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 7718/zabbix_server
(12)Zabbix 前端配置
[root@zabbix-server ~]# vim /etc/httpd/conf.d/zabbix.conf
把20行的:# php_value date.timezone Europe/Riga
改成
php_value date.timezone Asia/Shanghai
(13)啟動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.
[root@zabbix-server ~]# systemctl start httpd
(14)瀏覽器訪問
ip+/zabbix
3. 在zabbix服務端添加agent
(1)下載rpm包
[root@zabbix-server ~]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm
[root@zabbix-server ~]# ls
anaconda-ks.cfg zabbix-release-4.0-1.el7.noarch.rpm
zabbix-agent-4.0.11-1.el7.x86_64.rpm
(2)安裝
[root@zabbix-server ~]# rpm -ivh zabbix-agent-4.0.11-1.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-agent-4.0.11-1.el7 ################################# [100%]
(3)啟動服務
[root@zabbix-server ~]# systemctl start zabbix-agent.service
[root@zabbix-server ~]# systemctl enable zabbix-server.service
(4)網(wǎng)頁驗證