zabbix监控系统介绍与如何安装zabbix

一、监控系统介绍

1.什么是监控?

监控系统是整个运维环节,乃至整个产品生命周期中最重要的一个环节,事前及时预警发现故障,事后提供数据用于追查定位问题。

2.为什么要做监控?

#生活中:
1.超市监控,防内外偷
2.交通监控:测速,违章

#企业中:
1.系统的监控:实际是对系统不间断的实时监控
2.实时反馈系统当前状态,我们监控某个硬件,或者是某个系统,都是需要能实时看到当前系统的状态,是正常,异常或者是故障
3.保证服务可靠性安全性,我们监控的目的就是要保证系统,业务能够正常运行
4.保证业务持续稳定运行,如果我们对的监控做的很完善,即使出现故障,能第一时间接收到故障报警,在第一时间处理解决,保证业务持续性的稳定运行(通常,第一时间知道业务宕机的都是用户)

3.监控怎么来实现?

1.CACTI            网络监控
2.NAGIOS           系统监控
3.zabbix           分布式监控            关系型数据库
4.open-falcon      小米监控产品
5.普罗米修斯         监控docker,K8S      时序数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G5vOlJLi-1615878129888)(D:\linux\zabbix监控系统\img\image-20210311092646206.png)]

4.为什么监控服务器性能很重要?

- 监控服务器可用性和数据丢失
- 监控服务器的响应性。
- 了解服务器容量、用户负载和服务器速度。
- 检测并防止任何可能影响服务器的问题。

5.监控的范畴

#硬件层面
如果说到硬件,肯定要先说服务器用的什么型号?
--物理服务器,选型 Dell R710 720  730
IDRAC自带一个远程管理卡,安装上一个软件包之后,就可以监控

--如果不使用Dell的IDRAC那就使用zabbix的IPMI接口监控硬件
1)cpu温度
2)风扇转速
3)磁盘是否损坏
4)CMOS电池电量
5)内存是否损坏

#系统层面
1)cpu:使用率,负载
2)内存:使用率
3)磁盘:使用率,IO
4)进程

#网络层面:
1)网络设备:路由器,交换机
2)网卡入口流量
3)网卡出口流量
4)带宽的峰值
--使用zabbix的snmp方式监控

#应用层面
1)MySQL模板:主从复制是否有延迟(zabbix监控模板)
2)redis:主从复制是否有延迟
监控思路:zabbix没有固定模板,可以在主库中set一个key为时间戳,然后从库会同步这个时间戳(动态)写脚本时会获取这两个时间戳,做对比
3)NFS:磁盘挂载状况
4)tomcat:JVM监控,老年代,新生代,永久带,full-gc,垃圾回收
5)rsync的同步情况,MD5校验文件是否被篡改

#业务层面
1)URL的监控
2)API的监控
3)nginx的状态码
4)tomcat的exception
5)请求时间
6)响应时间
7)加载时间
8)渲染时间

二、zabbix的组件

zabbix监控系统介绍与如何安装zabbix_第1张图片

Zabbix监控组件主要包括:Zabbix ServerZabbix ProxyZabbix Agent;其中Zabbix Server包括:Web GUIDatabaseZabbix Server#每个组件的作用:
abbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;

Database:用户存储所有配置信息,以及存储由Zabbix Server收集到的数据;

Web GUIZabbix的interface接口,通常与Server运行在同一台主机上;

Zabbix Proxy:常用于分布监控环境中,代理Server收集部分被监控的监控数据并统一发往Server端;(通常大于500台主机需要使用)

Zabbix Agent:部署在被监控主机上,负责收集本地数据发往Server端或Proxy

三、zabbix监控方式

Zabbix分布式监控系统监控客户端的方式常见有三种:Agent、SNMP、IPMI。

Agent:Zabbix可以基于自身zabbix_agent客户端插件监控OS的状态,例如CPU、内存、硬盘、网卡、文件等。

SNMP:Zabbix通过SNMP协议监控网络设备或windows主机等。通过设定SNMP的参数将相关监控数据传送至服务端,交换机、防火墙等网络设备一般都支持SNMP协议。

IPMI(Intelligent Platform Management Interface):智能平台管理接口,即主要应用于设备的物理特性,包括:温度、电压、电扇工作状态,电源供应以及机箱入侵等。IPMI最大的优势在于无论OS的开机还是关机状态下,只要接通电源就可以实现对服务器的监控。

1.zabbix工作模式

Zabbix监控客户端分为主动监控与被动监控。Zabbix监控客户端默认为被动模式,可以修改为主动模式,只需要在客户端配置文件中添加 StartAgents=0。

Zabbix主动模式:Agent主动请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,zabbix agent首先向ServerActive配置的IP请求获取active items,获取并提交active items数据至server/proxy。

Zabbix被动模式:Server向agent请求获取监控项的数据,agent返回数据,server打开一个TCP连接,Server发送请求agent.ping,Agent接收到请求并且响应,Server处理接收到的数据。

2.zabbix的监控概念

#概念	解释说明
主机(host)	           #被监控的网络设备,可以写IP或者DNS;
主机组(host group)	      #主机组用于管理主机,可以批量设置权限;
监控项(item)	          #具体监控项,items值由独立的keys进行识别;
触发器(trigger)	      #为某个items设置触发器,达到触发器会执行action动作;
事件(event)	           #达到某个触发器,称之为一个事件;
动作(action)	           #对于特定事件事先定义的处理方法,默认可以发送信息及发送命令;
报警升级(escalation)	  #发送警报或执行远程命令的自定义方案,如隔5分钟发送一次警报,共发送5次等。
媒介(media)	           #发送通知的方式,可以支持Mail、SMS、Scripts等;
通知(notification)	   #通过设置的媒介向用户发送的有关某事件的信息;
远程命令	               #达到触发器,可以在被监控端执行命令;
模板(template)	       #可以快速监控被监控端,模块包含:item、trigger、graph、screen、application;
web场景(web scennario)   #用于检测web站点可用性,监控HTTP关键词;
web前端(frontend)	       #Zabbix的web接口;
图形(graph)	           #监控图像;
屏幕(screens)	           #屏幕显示;
幻灯(slide show)	       #幻灯显示

四、单机监控命令

1.linux性能监控常用命令

可参考:https://cloud.tencent.com/developer/article/1426555

2.CPU监控命令

1)w
2)top
3)htop
4)glances (yum install glances -y)
5)uptime

#不管什么命令监控,查看CPU,我们都必须了解,系统的用户和内核态
us:  用户态 跟用户的操作有关35%
sy:  内核态 跟内核的处理有关65%
id:  cpu空闲

#当我们执行一个命令的时候,很快就能出来结果,但是他都占用了哪些时间呢?
--例:
[root@db02 ~]# time ls
anaconda-ks.cfg  mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz  school.sql  t100w.sql  world.sql

real	0m0.002s          #真实执行时间
user	0m0.000s          #用户执行时间
sys	0m0.002s              #系统执行时间

3.内存监控命令

1)free
free -m
free -h
2)top
3)glances
4)htop

#如何查看单个进程占用内存?
--进程占用内存公式
pmem = VmRSS / MemTotal * 100
process mem = 虚拟内存 / 总内存 * 100

python脚本

[root@web02 ~]# cat mem.py
#!/usr/bin/env python
# _*_ coding:UTF-8 _*_
# 收集程序所占用的物理内存大小,占所有物理内存的比例
# Python: 2.7.6

import sys
import os
from subprocess import Popen,PIPE

def get_pid(program):
    '获取目标程序的PID列表'
    p = Popen(['pidof',program],stdout=PIPE,stderr=PIPE)
    pids,stderrput = p.communicate()
#     pids = p.stdout.read()  #这种方法也是可以的
#     这里也可以对stderrput来进行判断
    if pids:
        return pids.split()
    else:
        raise ValueError

def mem_calc(pids):
    '计算PIDs占用的内存大小'
    mem_total = 0
    for pid in pids:
        os.chdir('/proc/%s' % pid)
        with open('status') as fd:
            for line in fd:
                if line.startswith('VmRSS'):
                    mem = line.strip().split()[1]
                    mem_total += int(mem)
                    break
    return mem_total


def mem_percent(mem):
    '计算程序内存占用物理内存的百分比'
    with open('/proc/meminfo') as fd:
        for line in fd:
            if line.startswith('MemTotal'):
                total = line.strip().split()[1]
        percent = (float(mem)/int(total)) * 100
    return percent


def main():
    try:
        program = sys.argv[1]
        pids = get_pid(program)
    except IndexError as e:
        sys.exit('%s need a Program name ' % __file__)
    except ValueError as e:
        sys.exit('%s not a Process Name or not Start' % program )
    mem_total = mem_calc(pids)
    percent = mem_percent(mem_total)
    return program,mem_total,percent

if __name__ == '__main__':
    program,mem_total,mem_percent=main()
    print('进程名称:%s\n物理内存为:%s\n百分比为:%.2f%%'% (program,mem_total,mem_percent))

4.磁盘监控命令

1)df
df -h
文件系统        容量  已用  可用 已用% 挂载点
df -i
文件系统         Inode 已用(I) 可用(I) 已用(I)% 挂载点
2)iotop
3)iostat
4)dstat
5)glances

5.网络监控命令

1)glances
2)iftop
3)nethogs        #可以查看某个进程所使用的流量
4)ifconfig
5)route

6.TCP 11种状态监控命令

1)netstat
netstat -an
[root@db02 ~]# netstat -an|awk '/^tcp/ {print $NF}'|sort|uniq -c
      3 ESTABLISHED
      7 LISTEN
[root@db02 ~]#  netstat -an|awk '/^tcp/ {++state[$NF]} END {for(key in state) print key," \t" ,state[key]}'
LISTEN  	 7
ESTABLISHED  	 3

2)ss
[root@db02 ~]#  ss -n|awk '{print $2}'|sort|uniq -c
     90 ESTAB
      1 State

--生产场景需求
如何每1分钟监控当前系统的内存使用状态,如果可用低于100MB则发送邮件。同时打印当前还剩余多少内存

1.如何获取内存的状态信息 free -m
2.如何获取内存的可用状态 free -m|awk '/Mem/{print $NF}'
3.如何进行数字的比对,高于100MB不处理,低于100MB,发送邮件。
4.如何每分钟执行

--脚本:[root@db02 ~]# vim free.sh
#!/bin/bash

while true;do
  free_av=$(free -m|awk '/^Mem/{print $NF}')
  Hostname=$(hostname)_$(hostname -I|awk '{print $2}')
  Date=$(date +%F)

  if [ $free_av -lt 100 ];then
    echo "$Date: ${Hostname},内存低于100MB,还有${free_av}MB内存可用"
  fi
      sleep 2
done

[root@db02 ~]# sh free.sh
2020-10-12: web02_,内存低于100MB,还有20MB内存可用
2020-10-12: web02_,内存低于100MB,还有6MB内存可用
2020-10-12: web02_,内存低于100MB,还有5MB内存可用
[root@db02 ~]# dd < /dev/zero > /dev/null bs=2000M

7.系统的oom

随着时间的推移,用户不断增多,服务消耗的内存越来越多,当系统内存不足的时候,可能会导致系统产生oom(out of memory)

1.当系统内存不足时就会大量使用swap(虚拟内存)
2.当系统大量使用swap的时候,系统会特别卡
注意:有时可能内存还有剩余300M或者500M,但是swap依然被使用

[root@db02 ~]# dd < /dev/zero > /dev/null bs=2000M

[root@db02 ~]# tail -f /var/log/messages
Out of memory: Kill process 29957 (dd) score 366 or sacrifice child
Killed process 29957 (dd) total-vm:2532680kB, anon-rss:1416508kB, filers:0kB

8.使用脚本监控nginx

#使用脚本+定时任务的方法,进行监控,并使用邮件报警

#!/bin/bash
nginx_process=`ps -ef|grep -c [n]ginx`
if [ $nginx_process -lt 2 ];then
    echo "目前nginx进程数是:$nginx_process"|mail -s "完犊子nginx挂了" 133411023@qq.com
fi

五、如何安装zabbix

1.安装要求

1.1硬件
内存和磁盘
Zabbix同时需要物理内存和磁盘空间。刚开始使用Zabbix,建议128MB物理内存和256MB可用磁盘空间。然而, 具体需要的内存大小和磁盘空间要根据主机数量和监控参数而定。如果你计划对监控的参数进行长期保存,你应该考虑至少在数据库中预留几个GB的空间,以用来保留历史数据。 每个Zabbix的守护进程需要与数据库服务器建立多个连接。分配给连接的内存数量,取决于数据库引擎的配置。

CPU
根据监控参数及选择的数据库引擎,Zabbix,特别是Zabbix数据库,可能需要大量的CPU资源
1.2硬件配置示例

下表是几个硬件配置的示例:

名称 平台 CPU/内存 数据库 监控主机数量
小型 CentOS 虚拟应用 MySQL InnoDB 100
中型 CentOS 2 CPU cores/2GB MySQL InnoDB 500
大型 RedHat Enterprise Linux 4 CPU cores/8GB RAID10 MySQL InnoDB or PostgreSQL >1000
巨大型 RedHat Enterprise Linux 8 CPU cores/16GB 快速RAID10 MySQL InnoDB or PostgreSQL >10000

具体的配置极其依赖于Active Item数量和轮询频率。如需要进行大规模部署,强烈建议将数据库进行独立部署。

1.3 时钟同步
对于Zabbix稳定运行而言,服务获得精确的系统时间是非常重要的。[ntpd](http://www.ntp.org/) 是一个最流行的用于同步主机和其他服务器之间的时间的后台程序。对于所有运行Zabbix组件的系统,强烈建议这些系统的时间保持同步。

2.安装方式

2.1方法一:
1)关闭防火墙和selinux
之前做了优化就不必再关
2)配置zabbix官方仓库
RHEL 7:

# rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

RHEL 6:

# rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/6/x86_64/zabbix-release-3.4-1.el6.noarch.rpm

RHEL 5:

# rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/5/x86_64/zabbix-release-3.4-1.noarch.rpm
3) 安装zabbix部署包
[root@db02~]# yum -y install zabbix-server-mysql zabbix-web-mysql 
2.2 方法二:
1)配置zabbix第三方仓库
[root@zabbix ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
获取https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.NlJfKB: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zabbix-release-3.4-2.el7     ################################# [100%]
2)安装zabbix-server
[root@zabbix ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server
3)配置zabbix-server
1)初始化数据库
#启动数据库
[root@zabbix ~]# systemctl start mariadb
#连接数据库
[root@zabbix ~]# mysql
#创建zabbix库
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
#退出数据库
MariaDB [(none)]> exit
#进入SQL文件目录
[root@zabbix ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.15/
#导入SQL文件
[root@zabbix zabbix-server-mysql-3.4.15]# zcat create.sql.gz |mysql zabbix
#检查导入结果
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbix
MariaDB [zabbix]> show tables;
#创建用户
MariaDB [zabbix]> grant all on zabbix.* to zabbix@'localhost' identified by '123';
MariaDB [zabbix]> grant all on zabbix.* to zabbix@'10.0.0.%' identified by '123';
2)编辑zabbix-server配置
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf 
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123
3)启动zabbix-server并加入开机自启
[root@zabbix ~]# systemctl start zabbix-server
[root@zabbix ~]# systemctl enable zabbix-server
[root@zabbix ~]# netstat -lntup
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      5129/zabbix_server
4)修改时区,启动httpd
1.安装ntp时间服务
[root@zabbix ~]# yum install ntpdate -y

2.关闭默认的时间同步,然后再进行设置
[root@zabbix ~]# timedatectl set-ntp no 

3.查看
[root@zabbix ~]# timedatectl status

4.列出可用时区
[root@zabbix ~]# timedatectl list-timezones

5.设置
[root@zabbix ~]# timedatectl set-timezone "Asia/Shanghai"

6.更新当前系统时间
[root@zabbix ~]# ntpdate ntp1.aliyun.com

[root@zabbix ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai

[root@zabbix ~]# systemctl start httpd
[root@zabbix ~]# systemctl enable httpd

5)访问
#访问:http://10.0.0.71/zabbix
6)解决中文乱码问题
防止使用浏览器访问Zabbix的时候字符集显示的问题

[root@db02 ~]# yum -y install wqy-microhei-fonts
[root@db02 ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

zabbix监控系统介绍与如何安装zabbix_第2张图片
zabbix监控系统介绍与如何安装zabbix_第3张图片
zabbix监控系统介绍与如何安装zabbix_第4张图片
zabbix监控系统介绍与如何安装zabbix_第5张图片
zabbix监控系统介绍与如何安装zabbix_第6张图片
zabbix监控系统介绍与如何安装zabbix_第7张图片

用户名:Admin
密码:zabbix

Zabbix在安装后只定义了两个用户。

- 'Admin' 用户是Zabbix的一个超级管理员,拥有所有权限。
- 'Guest' 用户是一个特殊的默认用户。如果你没有登陆,你访问Zabbix的时候使用的其实是“guest”权限。默认情况下,“guest”用户对Zabbix中的对象没有任何权限。

点击 *创建用户(Create user)* 以增加用户。

在添加用户的表单中,确认将新增的用户添加到了一个已有的[用户组](https://www.zabbix.com/documentation/3.4/manual/config/users_and_usergroups/usergroup),比如'Zabbix administrators'。

默认情况下,没有为新增的用户定义媒介(media,即通知发送方式) 。如需要创建,可以到'媒介(Media)'标签下,然后点击*增加(Add*。

在这个对话框中,为用户输入Email地址。

你可以为媒介指定一个时间活动周期,(访问[时间周期说明](https://www.zabbix.com/documentation/3.4/manual/appendix/time_period)页面,查看该字段格式的描述)。默认情况下,媒介一直是活动的。你也可以通过自定义[触发器严重等级](https://www.zabbix.com/documentation/3.4/manual/config/triggers/severity)来激活媒介,默认所有的等级都保持开启。

点击*新增(Add*,然后在用户属性表单中点击*新增(Add*。新的用户将出现在用户清单中。

修改语言为中文

zabbix监控系统介绍与如何安装zabbix_第8张图片

六、zabbix的使用,zabbix如何监控一台主机?

1.需要在被监控的主机上安装zabbix客户端

[root@db02 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
获取https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.lM3M2e:V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ################################# [100%]
	file /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX from install of zabbix-release-3.4-2.el7.noarch conflicts with file from package zabbix-release-3.0-1.el7.noarch
	file /etc/yum.repos.d/zabbix.repo from install of zabbix-release-3.4-2.el7.noarch conflicts with file from package zabbix-release-3.0-1.el7.noarch

#客户端安装zabbix-agent端
[root@db02 ~]# yum install zabbix-agent -y

2.配置客户端并且启动

#修改配置文件
[root@db02 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.71
ServerActive=10.0.0.71
#启动客户端
[root@db02 ~]# systemctl start zabbix-agent
#添加开机自启
[root@db02 ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
#检查10050端口
[root@db02 ~]# netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      9204/zabbix_agentd

3.测试连通性

#添加监控之前我们必须保证10050端口可以通信
[root@zabbix ~]# telnet 10.0.0.52 10050
Trying 10.0.0.52...
Connected to 10.0.0.52.
Escape character is '^]'.
Connection closed by foreign host.
    
*****注意:关闭或者挂起虚拟机时,在开机时,一定要同步时间
[root@db02 ~]# yum install ntpdate -y
[root@db02 ~]# ntpdate ntp1.aliyun.com
[root@db02 ~]# hwclock -w

4.如何在web页面添加主机详细步骤

zabbix监控系统介绍与如何安装zabbix_第9张图片
zabbix监控系统介绍与如何安装zabbix_第10张图片
zabbix监控系统介绍与如何安装zabbix_第11张图片
zabbix监控系统介绍与如何安装zabbix_第12张图片

5.查看监控内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5MzH7ZAL-1615878129915)(D:\linux\zabbix监控系统\img\image-20210316085528703.png)]

检测中  >> 最新数据
在最新数据中需要筛选,
输入ip或者名字都能够搜索出来
### 查看图像
检测中 >> 图形
选择正确的主机。选择要查看的图形即可出图

6.更改字体

#找到本地盘下:C:\Windows\Fonts,我自己选择的是楷体常规
[root@zabbix ~]# cd /usr/share/zabbix/fonts
[root@zabbix fonts]# ll
总用量 0
lrwxrwxrwx 1 root root 33 15 10:39 graphfont.ttf -> /etc/alternatives/zabbix-web-font
#上传
[root@zabbix fonts]# rz
#删除原来的字体
[root@zabbix fonts]# rm -rf graphfont.ttf 
#给字体改名
[root@zabbix fonts]# mv simkai.ttf graphfont.ttf
[root@zabbix fonts]# ll
-rw-r--r-- 1 root root 11787328 32 2019 graphfont.ttf
#再次刷新页面

7.再次刷新查看

zabbix监控系统介绍与如何安装zabbix_第13张图片

七、问题解决

重启启动虚拟机后,要先重启数据库
***注意:一定要先重启数据库,然后再重启zabbix-server
如果httpd没有加入开机自启的话,再启动一下httpd

你可能感兴趣的:(zabbix监控,zabbix)