首页 > 技术文章 > zabbix(一)

cjwnb 2019-11-24 13:55 原文

什么是监控, 为什么需要监控


  • 监控: 监视, 控制

    随着用户的增多, 服务器随时可能会被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 


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


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


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


使用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安装


官方文档: 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


  • 创建监控账户
> 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数据库密码的时候, 需要修改的配置文件

    /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端加入主机


自定义监控


监控磁盘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添加自定义监控项


  • 修改监控项同步时间


  • 查看数据


监控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


自定义触发器


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

第一步: 新建触发器


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


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


第三步: 设置收件人


第四步: 启用动作

推荐阅读