Zabbix 4.0企业级分布式监控 day01

Zabbix

  • 第一章 监控系统
  • 第二章 Zabbix功能与架构
    • Zabbix功能
    • Zabbix架构
      • Zabbix Server组成
    • Zabbix基本术语
      • 组件功能
      • 监控收集
      • 数据展示
      • 告警相关
      • 认证和权限
  • 第三章 Zabbix安装
    • Zabbix二进制安装
    • Zabbix源码包安装
    • Zabbix容器安装
    • Zabbix前端介绍

 

第一章 监控系统

为什么需要监控系统? 为用户提供文档、高校、安全的服务
监控系统功能:数据采集、数据保存、图像展示、报警系统(告警策略、告警发送)

收集数据可以通过客户端、SNMP协议等

监控系统的组成
Zabbix 4.0企业级分布式监控 day01_第1张图片
如何选择监控系统?
Zabbix 4.0企业级分布式监控 day01_第2张图片

第二章 Zabbix功能与架构

Zabbix功能

Zabbix数据收集的方式

  • Agent 多平台部署 (centos ubuntu)
  • 支持SNMP和IPMI(网络设备 打印机 ups等)
  • 支持无agent监控(tcp udp)
  • 自定义监控 (可执行脚本)
  • 支持监控计算和聚合
  • Web事务监控

Zabbix数据展示

  • 图表及监控大屏
  • 网络拓扑图
  • 幻灯片图表
  • 图片展示插件

Zabbix故障检测

  • 故障预警
  • 故障规则和恢复规则独立
  • 多个告警规则组合
  • 与历史数据对比分析告警
  • 支持数据波动规则
  • 告警依赖关系

Zabbix告警发送

  • 发送告警信息
  • 自动修复故障(在告警的时候执行脚本)
  • 告警升级
  • 自定义告警信息
  • 告警关联

Zabbix安全和认证

  • 加密通信
  • 统一认证
  • 权限管理

Zabbix自动化

  • 网络自动发现
  • 低级别自动发现(LLD)
  • Agent自动注册

Zabbix API

  • 自动化配置管理
  • 与第三方系统结合

Zabbix4.0特性

  • 性能提升10%-20%
  • 分布式网络带宽降低80%
  • 与ES haddoop kafka
  • 告警处理流程提升
  • 支持Http Agent
  • Tag多个功能支持
  • 支持单点登录

Zabbix架构

Zabbix Agent:Zabbix客户端,负责数据收集上传
Zabbix Server:Zabbix的服务端,负责数据汇总,处理,告警策略,告警发送等等
Zabbix Web:Zabbix前端页面,提供了友好的展示和操作界面,负责数据的展示,监控系统的配置管理,用户权限配置管理等功能
Database:数据和配置存储数据库,Zabbix支持多种数据库,包括MySQL,Oracle,DB2等等
Java GateWay:Java网关,负责通过JMX监控收集Java应用性能数据
Zabbix Proxy:Zabbix代理,分布式部署架构会用到,主要是收集设备的监控数据并将数据发送给对应的Zabbix Server
Zabbix 4.0企业级分布式监控 day01_第3张图片
流程:数据通过Zabbix客户端收集并发送给Zabbix服务端,Zabbix服务端负责存储、分析数据、触发告警等功能,用户或管理员可以通过Zabbix前端页面进行数据展示和配置管理。如果设备规模较多,分布在多地域、多机房都可以通过Zabbix Proxy实现分布式架构部署

Zabbix Server组成

Zabbix 4.0企业级分布式监控 day01_第4张图片数据通过以下这些进程从客户端收集过来

  • Poller进程主要负责Server主动拉取类型的监控数据
  • Trapper进程主要负责Agent主动上报的监控数据 Http
  • Poller进程主要负责URL监控类型的数据收集
  • icmp pinger进程负责ping存活监控数据收集
  • java gateway进程负责和java gateway通信处理数据
  • java poller进程负责拉取JMX类型数据获取
  • ipmi poller进程负责IPMI类型数据获取
  • timer进程负责处理和时间有关的数据以及告警
  • vmware collector进程负责收集vmware虚拟化环境监控数据
  • unreachable Poller负责处理无法到达类的监控处理

数据收集之后是通过以下进程进行处理

  • preprocessing manager进程会对监控数据进行预处理
  • history syncer进程负责将数据分析并保存至数据库中
  • housekeeper进程负责定期清理历史数据

数据告警

  • alerter进程处理发送告警消息
  • alerter manager是负责管理alerter进程
  • escalator进程是负责处理告警过程中的各个步骤的,比如有告警升级之类的

分布式

  • prox poller进程负责分布式通信

自动发现

  • discovery process是负责设备自动发现功能的

 

Zabbix基本术语

组件功能

frontend 前端
Zabbix API Zabbix的接口
Zabbix Server Zabbix服务端
Zabbix Proxy Zabbix代理
Network discovery 网络自动发现
Active agent auto-registration 主动Agent自动注册
Low-level discovery 低级自动发现

监控收集

host 主机
host group 主机组
item 监控项
value preprocessing 预处理
template 模板
application 应用
web scenario web场景
Macros

item 监控项,监控 CPU使用率,负责,网卡接收流量等

value preprocessing 监控数据预处理,就是数据再存入数据库之前按照指定的规则预处理,比如处理成数据的变换量,数据的的每秒变化速率,或者是单位的换算,从ms算成s

application 应用,一组监控项的逻辑分组,比如Nginx的监控项统一分到Nginx应用中

template 模板,就是可以应用多个监控设备的监控集合,包含监控项,触发器,图形,LLD,web监控等等。 同一类的监控就可以整理成模板,从而可以重复利用,大幅度提高了监控的效率

web scenario web场景,是监控Web的一个或多个http请求,一个场景中可以是单个URL,也可以是多个URL。 比如可以将用户登录,搜索,点击商品详情,加入购物车等操作放入一个场景进行监控,当所有的步骤都成功,该场景的监控才是成功的

Macros 宏,可以认为是一个变量,可以应用在告警,模板等功能中

数据展示

graph 图表
screen 聚合图表
maps 拓扑图
Slide 幻灯片演示

graph 图表,可以将一个或多个监控项的监控数据放入同一张图表中,比如将CPU的用户使用率、系统使用率、空闲率都放入到PCU监控图表中

screen 聚合图表,就是将多个graph聚在一张监控大屏中,比如将CPU、网卡、内存、IO这些图表放在一起,就组成了主机的聚合图表

maps 网络拓扑图,Zabbix还支持拓扑图展示监控,并在拓扑图加入对应的监控指标,当该监控项异常时,拓扑图也会显示异常,很方便定位问题

slide show 幻灯片播放,每隔一段时间轮流播放多个聚合图表,可以实现将主机、网络、存储、缓存、数据库的各个聚合图表轮流播放

告警相关

Trigger 触发器
event 事件
problem 异常状态
OK 正常状态
action 操作
escalation 升级
media 媒介
notification 通知
remote command 远程命令
Maintenance 维护模式

Trigger 触发器,告警的策略设置,可以分别设置正常状态和异常状态触发器,比如CPU持续5分钟使用率超过80%就触发告警

event 事件,比如告警状态的变化,自动发现策略生效,客户端注册成功等等这些都是事件,当CPU持续5分钟使用率超过80%就触发告警,触发器状态会从OK变成Problem,这就是一个事件

action 操作,是根据事件以及条件定义的一系列动作,当CPU告警发生时,可以触发一个操作,这操作是发送告警信息给管理员,让他及时处理 。 操作也可以是服务重启

escalation 升级,是在一个动作内执行的操作,告警的升级操作就是通过这个实现,比如上面的告警信息发送就是一个escalation

media 媒介,指告警通知的方式,短信,邮件,微信等等

remote command 远程命令,指预先定义的,在指定条件下会被执行的命令

Maintenance 维护模式,就是系统升级或者维护的时间段,该时间段可以不发送告警,或者发送告警,但是不计入服务可用性

认证和权限

User 用户
User Group 用户组
permission 权限
User Type 用户类型

第三章 Zabbix安装

二进制 源码 docker 三种安装方式

资源要求
Zabbix 4.0企业级分布式监控 day01_第5张图片
环境准备
vmware
CentOS 7.6 http://mirrors.163.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

Zabbix二进制安装

安装Zabbix服务端
安装Zabbix前端(php,web server)
安装Zabbix数据库
安装Zabbix客户端

二进制包是已经经过编译,可以直接运行的程序软件。rpm包就是二进制包的一种,二进制包的特点是安装简单,方便。缺点可定制性不足
二进制包安装-命令列表

基础配置

初始化CentOS 7.6
添加镜像源、关闭防火墙

centos 7 添加阿里云镜像,加速一下操作系统的一些软件包的安装,镜像配置覆盖操作系统本身
wget -O /etc/yum.repos.d/CentOS-Base.repo   http://mirrors.aliyun.com/repo/Centos-7.repo  # wget -O 指定文件名
yum install epel-release   # 安装基础镜像里所不包含的常用的软件


安装常用的开发组件
yum groups install "Development Tools"
yum groups info  "Development Tools"


增加Zabbix镜像源
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm


关闭SElinux
systemctl stop firewalld.service
systemctl disable firewalld.service  #禁止开机启动

vim /etc/selinux/config
SELINUX=disabled

yum install iptables-services

开始 安装Zabbix Server和Frontend和MySQL

安装Zabbix Server和Frontend
yum install zabbix-server-mysql
yum install zabbix-web-mysql


安装MySQL   mariadb可以是mysql的一个分支,可以理解为mysql
yum install mariadb-server
systemctl  start mariadb.service
systemctl  status mariadb.service
mysql_secure_installation  # 运行这条命令,进行一些数据初始化设置,我这里就不设置密码了,直接回车


创建Zabbix数据库
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
创建用户
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix@findsec123';
刷新权限
flush privileges;

导入Zabbix数据库的表结构以及相关的数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix@findsec123  zabbix

登进去show databases;  use zabbix;  show tables;
配置Zabbix Server
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix@findsec123

启动Zabbix Server
systemctl  start zabbix-server.service
systemctl  status zabbix-server.service

more /var/log/zabbix/zabbix_server.log


配置Zabbix frontend
vim /etc/php.ini   # 有注释的注释去掉,数字不同的改掉

max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
max_input_vars = 10000
always_populate_raw_post_data = -1
date.timezone = Asia/Shanghai


启动httpd
systemctl  start  httpd.service
systemctl  status  httpd.service

http://192.168.93.145/zabbix/setup.php
安装过程中的数据库用户名和密码是上面所设置的
Zabbix server details的Name:Zabbix Server

用户名:Admin
默认密码:zabbix
安装Zabbix Agent
yum install zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf  检查三个东西,确认ServerActive和Server是否填写正确,还有hostname要与之前的保持一致

systemctl  start zabbix-agent.service
启动失败排查:
5月 11 20:26:05 bogon systemd[1]: zabbix-server.service failed.
[root@bogon ~]# getenforce
Enforcing
[root@bogon ~]# setenforce 0
[root@bogon ~]# getenforce
Permissive

Zabbix 4.0企业级分布式监控 day01_第6张图片这个名字Zabbix Server要和待会zabbix agent的hostname 需要相匹配
Zabbix 4.0企业级分布式监控 day01_第7张图片Zabbix 4.0企业级分布式监控 day01_第8张图片
用户名:Admin
默认密码:zabbix

Zabbix 4.0企业级分布式监控 day01_第9张图片

systemctl  start zabbix-server.service
systemctl  start mariadb.service
systemctl  start  httpd.service
systemctl  start zabbix-agent.service

 

 

Zabbix源码包安装

源码包是需要进行编译以后才能够生成可运行的二进制程序,源码包它是包含了程序的源代码。源码包安装的特点:可以定制功能和参数。缺点是它需要编译安装容易出错,并且安装时间消耗较长的时间

docker 主要是基于linux的容器技术,实现的进程级别的虚拟化,将应用和所依赖的库都封装在容器当中,对应用来说,资源都是独立的并且隔离的,由于容器的可持续部署和隔离性,一般在企业的生产环境都是选择容器,源码包的安装方式居多 或者 定制企业自己的二进制包

安装Zabbix服务端
安装Zabbix前端(php,web server)
安装Zabbix数据库
安装Zabbix客户端

Zabbix Server采用源码包安装,前端web和数据库以及agent采用二进制的安装

源码包安装-命令列表

下载zabbix server源码包
wget -O zabbix-4.0.4.tar.gz  https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.4/zabbix-4.0.4.tar.gz/download

安装zabbix依赖包
yum install wget telnet net-tools python-paramiko gcc gcc-c++ dejavu-sans-fonts python-setuptools python-devel sendmail mailx net-snmp net-snmp-devel net-snmp-utils freetype-devel libpng-devel perl unbound libtasn1-devel p11-kit-devel OpenIPMI unixODBC  libevent-devel  mysql-devel  libxml2-devel  libssh2-devel  OpenIPMI-devel  java-1.8.0-openjdk-devel  openldap-devel  curl-devel unixODBC-devel

解压并编译安装
tar -zxvf zabbix-4.0.4.tar.gz
cd  zabbix-4.0.4/

建立编译安装目录
mkdir -p /data/findsec/zabbix
./configure --prefix=/data/findsec/zabbix  --enable-server  --enable-agent --enable-java  --with-mysql --with-libxml2 --with-unixodbc  --with-net-snmp --with-ssh2 --with-openipmi --with-ldap --with-libcurl --with-iconv
# prefix是指定安装的目录,默认是按照到/usr/local下的
# 这里安装的是server,所以是 --enable-server    如果是proxy就 enable-proxy
# java监控,mysql后端数据库,net-snmp网络监控,openipmi硬件相关的监控,ldap认证,libcurl是web监控 
make
make install

cd /data/findsec/zabbix/
tree .  查看zabbix下的目录结构

验证安装是否成功:/data/findsec/zabbix/sbin/zabbix_server  -V 
可以看道是 4.0.5版本

前端web和数据库以及agent采用二进制的安装

数据库安装
yum install mariadb-server
systemctl  start mariadb.service
systemctl  status mariadb.service
mysql_secure_installation  初始化诗句哭
是否设置root密码 n
是否删除匿名用户 Y
是否禁止root远程登录 n
删除测试数据库 Y
重新加载权限 Y


创建数据库
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix@findsec123';

导入数据结构,zabbix源码包安装的数据库表结构是在源码包里面的,导入schema表结构,导入images,导入data
mysql -uzabbix -pzabbix@findsec123  zabbix < /root/zabbix-4.0.4/database/mysql/schema.sql 
mysql -uzabbix -pzabbix@findsec123  zabbix < /root/zabbix-4.0.4/database/mysql/images.sql
mysql -uzabbix -pzabbix@findsec123  zabbix < /root/zabbix-4.0.4/database/mysql/data.sql 

修改zabbix server配置
vim /data/findsec/zabbix/etc/zabbix_server.conf
检查DBHost,DBname,DBUser,DBPassword=zabbix@findsec123

增加用户,zabbix的用户默认是禁止登录
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

启动服务
帮助查看:/data/findsec/zabbix/sbin/zabbix_server -h 
指定zabbix server的配置文件并启动:/data/findsec/zabbix/sbin/zabbix_server -c /data/findsec/zabbix/etc/zabbix_server.conf

tailf /tmp/zabbix_server.log


增加Zabbix镜像源
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

安装Zabbix Frontend
yum install zabbix-web-mysql

配置Zabbix frontend
vim /etc/php.ini

max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
max_input_vars = 10000
always_populate_raw_post_data = -1
date.timezone = Asia/Shanghai


启动httpd
systemctl  start  httpd.service
systemctl  status  httpd.service

http://xxx.xxx.xxx.xxx/zabbix/setup.php

Admin
zabbix


安装Zabbix Agent
yum install zabbix-agent
systemctl  start zabbix-agent.service

————————————————————————————————————————————————————————————————————————
补充一下如果想要agent源码安装:
上面在 ./configure 已经 --enable-agent

查看zabbix server的日志:tailf /tmp/zabbix_server.log
检查agent.conf配置文件
/data/findsec/zabbix/etc/zabbix_agentd.conf
确认hostname=Zabbix server和日志看到的是一致的,检查Server和ServerActive

启动zabbix agent并指定agent配置文件
/data/findsec/zabbix/sbin/zabbix_agentd -c /data/findsec/zabbix/etc/zabbix_agentd.conf

查看zabbix agent的日志:tailf /tmp/zabbix_agentd.log

ps aux|grep zabbix_agentd

Zabbix容器安装

docker 主要是基于linux的容器技术,实现的进程级别的虚拟化,将应用和所依赖的库都封装在容器当中,对应用来说,资源都是独立的并且隔离的,由于容器的可持续部署和隔离性,一般在企业的生产环境都是选择容器,源码包的安装方式居多 或者 定制企业自己的二进制包

#yum install docker-latest
#docker -h  查看帮助
#systemctl start docker-latest
#systemctl status docker-latest
#docker ps


如果没安装会从容器中拉取,然后再安装

安装Apache
把容器的80端口映射到本地的80端口
#docker run -d -p 80:80 httpd 
#docker ps 

安装mysql
#docker run --name mysql-server -t -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix@findsec123" -e MYSQL_ROOT_PASSWORD="zabbix@findsec123" -d mysql:5.7 --character-set-server=utf8 --collation-server=utf_bin

安装zabbix-java-gateway
#docker run --name zabbix-java-gateway -t -d zabbix/zabbix-java-gateway:latest

容器之间的通信
安装zabbix-server
#docker run --name zabbix-server-mysql -t -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix@findsec123" -e MYSQL_ROOT_PASSWORD="zabbix@findsec123" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" --link mysqlserver:mysql --link zabbix-java-gateway:zabbix-java-gateway -p 10051:10051 -d zabbix/zabbix-server-mysql:latest

#docker ps

安装前端
#docker run --name zabbix-web-nginx-mysql -t -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix@findsec123" -e MYSQL_ROOT_PASSWORD="zabbix@findsec123" --link mysql-server:mysql --link zabbix-server-mysql:zabbix-server -p 80:80 -d zabbix/zabbix-web-nginx-mysql:latest

安装agent
#docker run --name zabbix-agent -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" --link zabbix-server-mysql:zabbix-server -d zabbix/zabbix-agent:latest


验证mysql
# docker exec -it mysql-server /bin/bash
root@2da13db7bb0f:/# mysql
root@2da13db7bb0f:/# mysql -uroot -pzabbix@findsed123

Zabbix前端介绍

zabbix前端是和用户交互的媒介,主要包含了监控数据的查看配置管理监控报表等相关的功能,对于一个监控系统来说,前端页面的功能是否丰富,是否易用,数据展示是否多样等这些因素它都会影响监控系统的使用和普及程度。

修改中文。建立使用英文, 不推荐修改,知道一下这种方法。
Zabbix 4.0企业级分布式监控 day01_第10张图片
Monitoring 监控数据相关信息
Zabbix 4.0企业级分布式监控 day01_第11张图片
Inventory 资产配置(多少监控设备,然后监控设备的一些基本信息)

Reports 报表(包含了一些监控系统的信息、可用性的报告、告警top 100、审计日志)
Report中Action log 产生告警 会触发action操作 都会记录在这
Configuration下Event correlation 事件的关联.用于解决告警风暴,即服务器宕机只会发送宕机报 警,不会发送服务器端口不可用等一系列问题.
Configuration下Service 用来衡量soa
Administration 下面的Queue,用来查看是否有监控项的数据,最近一段时间都没有收到数据

Configuration(包括主机,主机组模板,主机,维护模式,操作,告警事件关联,自动发现功能和服务)

Administration(主要包含了zabbix的一些管理功能,包括了一些proxy的配置、认证方式的配置,用户和用户组,用户的媒介,脚本,队列)

后期会研究研究,准备弄深信服 翔鹰计划,暂时停更哦

你可能感兴趣的:(运维,#,监控)