zabbix(一) 什么是监控, 为什么需要监控 常见的linux监控命令 使用shell脚本来监控服务器 zabbix的基础服务架构 zabbix安装 监控一台服务器主机 自定义监控 自定义触发器


  • 监控: 监视, 控制

    随着用户的增多, 服务器随时可能会被OOM(out of memory), 内核为了防止系统崩溃, 就会杀进程来释放内存


  • 当系统的内存不足的时候, 会触发OOM
Nov 24 16:20:20 xmaster kernel: Out of memory: Kill process 4721 (httpd) score 14 or sacrifice child
Nov 24 16:20:20 xmaster kernel: Killed process 4721 (httpd), UID 48, total-vm:467296kB, anon-rss:13472kB, file-rss:0kB, shmem-rss:12kB

  • 当swap分区被大量占用, 系统会特别卡

  • 压力测试工具, 测出网站的瓶颈

  • 并发

    单位时间内达到的请求数


常见的linux监控命令


free

$ free -m
              total        used        free      shared  buff/cache   available
Mem:            972         495          67           7         409         316
Swap:             0           0           0

df

$  df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 475M     0  475M    0% /dev
tmpfs                    487M  4.0K  487M    1% /dev/shm
tmpfs                    487M  7.8M  479M    2% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  2.9G   15G   17% /
/dev/sda1               1014M  193M  822M   19% /boot
tmpfs                     98M     0   98M    0% /run/user/0


top


%Cpu(s): 43.6 us, 43.6 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi, 12.9 si,  0.0 st

us: 用户态, 跟用户的操作有关

sy: 内核态, 跟内核的处理有关

$  time df -hP
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 475M     0  475M    0% /dev
tmpfs                    487M  4.0K  487M    1% /dev/shm
tmpfs                    487M  7.8M  479M    2% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  3.4G   14G   20% /
/dev/sda1               1014M  193M  822M   19% /boot
tmpfs                     98M     0   98M    0% /run/user/0

real	0m0.098s   
user	0m0.001s   >>>> 用户态进程CPU处理的事件
sys	0m0.004s   >>>> 内核态进程CPU处理的事件

htop

$  htop 

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


uptime

$  uptime 
00:15:57 up 2 days,  2:03,  2 users,  load average: 0.10, 0.05, 0.05

cat /proc/uptime 
180350.18 176528.13    >>>> 系统启动时间  系统空闲时间

$  echo 180350.18/3600|bc
50

说明 一般来说, 内存中的系统启动时间/proc/uptimeuptime获取的系统的启动时间的差值越小, 表示系统越闲


iftop

$  iftop

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


iostat

$  yum -y install sysstat
$  rpm -ql sysstat |grep bin
/usr/bin/cifsiostat
/usr/bin/iostat
/usr/bin/mpstat
/usr/bin/nfsiostat-sysstat
/usr/bin/pidstat
/usr/bin/sadf
/usr/bin/sar
/usr/bin/tapestat

$  iostat 
Linux 3.10.0-1062.4.1.el7.x86_64 (xmaster) 	2019年11月24日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.08    0.00    1.00    0.01    0.00   97.91

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.73         7.25        18.05    1314429    3272661
dm-0              0.76         7.07        17.68    1282562    3204894
dm-1              0.04         0.10         0.07      18848      13560


主要参数解释

Device:            tps    kB_read/s    kB_wrtn/s    					kB_read    kB_wrtn
sda               0.73         7.25        18.05    					1314429    3272661
设备名				每秒传输次数		每秒从硬盘读的大小  每秒写入硬盘的大小   从硬盘读的总大小   写入硬盘的总大小


iotop

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


vmstat

$  vmstat 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 156356      0 496688    0    0     7    18   49  114  1  1 98  0  0


netstat

查看端口

$  netstat -at|grep ESTABLISHED|grep http|grep -v 'tcp6'
tcp       0      0 xmaster:33938     xmaster:http     ESTABLISHED  
tcp       0      0 xmaster:33942    xmaster:http     ESTABLISHED  
tcp       0      0 xmaster:33940    xmaster:http     ESTABLISHED 


  • 查看网关
$  netstat  -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         172.16.240.2    0.0.0.0         UG        0 0          0 ens33
172.16.240.0    0.0.0.0         255.255.255.0   U         0 0          0 ens33


nethogs

$  yum -y install nethogs
$  nethogs

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


使用shell脚本来监控服务器


每隔1分钟监控一次内存, 当可用内存低于100M, 发邮件报警

配置mail

$  yum -y install mailx
$  vim /etc/mail.rc 
set from=zabix1219server@163.com        
set smtp=smtp.163.com
set smtp-auth-user=zabix1219server@163.com
set smtp-auth-password=ak1234
set smtp-auth=login
$  echo "Hello" | mail -s "标题" 1392263019@qq.com


#!/bin/bash
mon=`free -m |awk 'NR==2 {print $NF}'`
if [ $mon -le 500 ];then
echo "`date` memory is less than 500" >> /tmp/check_mem.log
echo -e "please check the memory is less than 500" |mail -s "check memory for the hostname `hostname`" 1392263019@qq.com
fi

说明: 规模比较小的时候, 使用shell脚本+定时任务来做监控


zabbix的基础服务架构

zabbix-agent(采集数据) --> zabbix-server(清洗数据, 报警) --> mysql(数据存储) <-- zabbix-web(数据展示)

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


zabbix安装


官方文档: https://www.zabbix.com/documentation/3.0/manual/installation/install_from_packages

前端安装文档: https://www.zabbix.com/documentation/3.0/manual/installation/install#installing_frontend


第一步: 配置zabbix yum仓库

  • 下载并安装 zabbix-release-3.0-1.el7.noarch.rpm
$  wget https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
$  rpm -ivh zabbix-release-3.0-1.el7.noarch.rpm


  • 修改zabbix.repo文件, 将源改为清华源
$  vim /etc/yum.repos.d/zabbix.repo 
baseurl=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/3.0/rhel/7/x86_64/
baseurl=https://mirror.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/7/x86_64/


第二步: 安装zabbix服务端和zabbix-web前端

$  yum install zabbix-server-mysql zabbix-web-mysql

 Package                                                架构                                  版本                                              源                                                   大小
==========================================================================================================================================================================================================
正在安装:
 zabbix-server-mysql                                    x86_64                                3.0.28-1.el7                                      zabbix                                              1.8 M
 zabbix-web-mysql                                       noarch                                3.0.28-1.el7                                      zabbix                                              6.3 k
为依赖而安装:
 OpenIPMI                                               x86_64                                2.0.27-1.el7                                      base                                                243 k
 OpenIPMI-libs                                          x86_64                                2.0.27-1.el7                                      base                                                523 k
 OpenIPMI-modalias                                      x86_64                                2.0.27-1.el7                                      base                                                 16 k
 dejavu-fonts-common                                    noarch                                2.33-6.el7                                        base                                                 64 k
 dejavu-sans-fonts                                      noarch                                2.33-6.el7                                        base                                                1.4 M
 fontpackages-filesystem                                noarch                                1.44-8.el7                                        base                                                9.9 k
 fping                                                  x86_64                                3.10-4.el7                                        epel                                                 46 k
 gnutls                                                 x86_64                                3.3.29-9.el7_6                                    base                                                680 k
 iksemel                                                x86_64                                1.4-2.el7.centos                                  zabbix-non-supported                                 49 k
 libX11                                                 x86_64                                1.6.7-2.el7                                       base                                                607 k
 libX11-common                                          noarch                                1.6.7-2.el7                                       base                                                164 k
 libXau                                                 x86_64                                1.0.8-2.1.el7                                     base                                                 29 k
 libXpm                                                 x86_64                                3.5.12-1.el7                                      base                                                 55 k
 libjpeg-turbo                                          x86_64                                1.2.90-8.el7                                      base                                                135 k
 libxcb                                                 x86_64                                1.13-1.el7                                        base                                                214 k
 libzip                                                 x86_64                                0.10.1-8.el7                                      base                                                 48 k
 net-snmp-libs                                          x86_64                                1:5.7.2-43.el7                                    base                                                750 k
 nettle                                                 x86_64                                2.7.1-8.el7                                       base                                                327 k
 php                                                    x86_64                                5.4.16-46.1.el7_7                                 updates                                             1.4 M
 php-bcmath                                             x86_64                                5.4.16-46.1.el7_7                                 updates                                              58 k
 php-cli                                                x86_64                                5.4.16-46.1.el7_7                                 updates                                             2.7 M
 php-common                                             x86_64                                5.4.16-46.1.el7_7                                 updates                                             565 k
 php-gd                                                 x86_64                                5.4.16-46.1.el7_7                                 updates                                             128 k
 php-ldap                                               x86_64                                5.4.16-46.1.el7_7                                 updates                                              53 k
 php-mbstring                                           x86_64                                5.4.16-46.1.el7_7                                 updates                                             505 k
 php-mysql                                              x86_64                                5.4.16-46.1.el7_7                                 updates                                             101 k
 php-pdo                                                x86_64                                5.4.16-46.1.el7_7                                 updates                                              99 k
 php-xml                                                x86_64                                5.4.16-46.1.el7_7                                 updates                                             126 k
 t1lib                                                  x86_64                                5.1.2-14.el7                                      base                                                166 k
 trousers                                               x86_64                                0.3.14-2.el7                                      base                                                289 k
 unixODBC                                               x86_64                                2.3.1-14.el7                                      base                                                413 k
 zabbix-web                                             noarch                                3.0.28-1.el7                                      zabbix                                          


第三步: 安装mariadb, 创建zabbix, 授权zabbix用户

  • 安装mariadb
$  yum -y install mariadb-server
$  systemctl start mariadb
$  systemctl enable mariadb


  • 初始化数据库
$  mysql_secure_installation

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


  • 创建监控账户
> create database zabbix character set utf8 collate utf8_bin;
> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
> flush privileges;


  • 导入zabbix表结构和初始数据
$  zcat /usr/share/doc/zabbix-server-mysql-3.0.*/create.sql.gz | mysql -uzabbix -p zabbix


  • 检查zabbix库是否导入成功
$  mysql zabbix -e 'show tables'


第四步: 配置启动zabbix-server

  • 设置配置文件
$  vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix


  • 启动
$  systemctl start zabbix-server
$  systemctl enable zabbix-server
$  netstat -ntulp |grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      2131/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      2131/zabbix_server


  • 查看zabbix日志的路径
grep -Ew 'LogFile' /etc/zabbix/zabbix_server.conf |grep -v '^#'
LogFile=/var/log/zabbix/zabbix_server.log


  • 查看日志
  2487:20191124:154212.902 IPv6 support:              YES
  2487:20191124:154212.902 TLS support:               YES
  2487:20191124:154212.902 ******************************
  2487:20191124:154212.902 using configuration file: /etc/zabbix/zabbix_server.conf
  2487:20191124:154212.909 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: YES)
  2487:20191124:154212.909 database is down: reconnecting in 10 seconds
  2487:20191124:154222.911 [Z3001] connection to database 'zabbix' failed: [1045] Access denied 


第五步: zabbix前端的PHP配置

Zabbix前端的Apache配置文件位于/etc/httpd/conf.d/zabbix.conf中. 某些额PHP设置已经配置. 但是有必要取消注释 datetime.timezone 设置为中国的时区

$  vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai


第五步: SElinux配置

在强制模式下启用SElinux状态后, 需要对zabbix前端进行放行

$  setsebool -P httpd_can_connect_zabbix on


在前端和SELinux配置完成后, 需要重新启动web服务器**

$  systemctl restart httpd
$  systemctl enable httpd

$  netstat -ntulp |grep http
tcp6       0      0 :::80                   :::*                    LISTEN      2855/httpd                


第六步: 前端PHP的安装

访问地址 http://172.16.240.12/zabbix/

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


  • 后期修改zabbix数据库密码的时候, 需要修改的配置文件

    /etc/zabbix/web/zabbix.conf.php


  • 登录的zabbix的账号密码
Admin
zabbix


监控一台服务器主机


第一步: 安装zabbix-agent

$  rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.20-1.el7.x86_64.rpm
$  rpm -q zabbix-agent
zabbix-agent-3.0.20-1.el7.x86_64


第二步: 配置

$  vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.240.12
$  iptables -I INPUT -p tcp -m tcp --dport 10050 -j ACCEPT 


第三步: 启动

$  systemctl start zabbix-agent
$  systemctl enable zabbix-agent
$  netstat -ntulp|grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      19154/zabbix_agentd 
tcp6       0      0 :::10050                :::*                    LISTEN      19154/zabbix_agentd 


第四步: zabbix-web端加入主机

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


自定义监控


监控磁盘IO


第一步: zabbix-agent配置

$  vim /etc/zabbix/zabbix_agentd.conf
265:Include=/etc/zabbix/zabbix_agentd.d/*.conf

$  grep -Evn '^$|^#' /etc/zabbix/zabbix_agentd.conf 
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
95:Server=172.16.240.12
136:ServerActive=127.0.0.1
147:Hostname=Zabbix server
265:Include=/etc/zabbix/zabbix_agentd.d/*.conf

$  vim /etc/zabbix/zabbix_agentd.d/tps.conf
UserParameter=tps,iostat |awk '$1~/sda/{print $2}'
$  systemctl restart zabbix-agent.service


第二步: zabbix-server测试

$  yum -y install zabbix-get
$  zabbix_get -s 172.16.240.13 -p 10050 -I 172.16.240.12 -k tps
20.72


第三步: zabbix-web添加自定义监控项

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


  • 修改监控项同步时间

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


  • 查看数据

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


监控tcp的状态


第一步: zabbix-agent配置

$  vim /etc/zabbix/zabbix_agentd.d/tcp.conf
UserParameter=tcp,netstat -antt|fgrep -c 'ESTABLISHED'
$  systemctl restart zabbix-agent.service


第二步: zabbix-server测试

$  zabbix_get -s 172.16.240.13 -p 10050 -I 172.16.240.12 -k tcp


自定义触发器


前提是有监控项, 并且这个监控项可以取到值

第一步: 新建触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


第二步: 设置报警媒介类型

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


注意 这里的密码需要填写163邮箱的授权码

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


第三步: 设置收件人

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器


第四步: 启用动作

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器

zabbix(一)
什么是监控, 为什么需要监控
常见的linux监控命令
使用shell脚本来监控服务器
zabbix的基础服务架构
zabbix安装
监控一台服务器主机
自定义监控
自定义触发器