linux云计算之Zabbix监控概念架构工作流程和组件及其作用和搭建Zabbix

监控 zabbix

1.zabbix的概念   监控工具/软件

1.监控体系概述    为什么 怎么开启自定义监控 监控  具备的功能  工具

怎么开启自定义监控

1、首先编写自定义监控脚本
2、修改zabbix_agentd.conf配置文件
3、选择要增加监控项的主机
4、创建监控项
5、根据自定义键值填写监控项,自定义的键值只能手动输入,不能通过选择。
6、添加成功后,在最新数据中查看是否获取到数据
7、为这个监控项添加触发器,在这里我们定义当check_httpd监控项返回为0的时候告警。即httpd进程不存在
8、创建触发器,自定义触发器名称以及严重程度,然后表达式哪里,点击添加
9、添加触发器表达式,监控项选择我们自定义监控项,功能可以根据自己的需求选择,这里我们选择最后一个值是0的时候则告警(即httpd进程不存在)
10、至此,自定义监控项和自定义告警已添加完成,如果有其他监控需求,自己写监控脚本即可。

 

 

1.为什么要监控?

保证业务的正常稳定运行(关注指标是否正常

 

2.监控什么?  IT架构体系 (服务器

硬件监控(风扇、电源、硬盘

系统监控(CPU/内存/硬盘/网络吞吐量/进程

应用监控(服务状态:web服务 nginx 数据库 每秒钟执行多少事务

 

3.怎么来监控?

远程管理服务器

监控硬件

监控系统资源(CPU、内存、磁盘、网络

 

4.监控需要具备的功能?

收集数据

存储数据

图形展示(可视化)

告警通知(提前设置阈值,比如cpu使用率到达75%,发邮件或者短信通知管理员

 

2.监控工具

Nagios 配置比较复杂

Cacti仙人掌

Cacti主要是对网络做一些流量的监控

Zabbix   c/s

Prometheus(普罗米修斯)

 

1.Prometheus 是一套开源的系统监控、报警、时间序列数据库的组合,最初有 SoundCloud 开发的,后来随着越来越多公司使用,于是便独立成开源项目。

 

2.常用的 Kubernetes 容器集群管理中,通常会搭配 Prometheus 一起来进行监控。Prometheus 基本原理通过 Http 协议周期性抓取被监控组件的状态,输出这些被监控的组件的 Http 接口为 Exporter,

 

3.好处任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程

非常适合虚拟化环境比如VM或者Docker。

3.Zabbix概述  组成  支持的通信方式

zabbix是一个基于WEB界面的 提供分布式系统监视 以及网络监视功能的 企业级的开源解决方案。

Zabbix由zabbix-server服务端zabbix-agent监控端组成。

Zabbix支持的通信方式

agent(代理):专用的代理服务方式进行监控,专属的协议,装有zabbix-agent的主机就可以被zabbix-server监控。主动或被动的方式,把数据给到server进行处理。

 

ssh/telent:Linux主机支持ssh/telent协议

 

SNMP:网络设备路由器、交换机不能安装第三方程序(agent),使用简单网络管理协议。大多数的路由交换设备支持SNMP协议。

 

IPMI:通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态,电源状态等。

 

IPMIIntelligent Platform Management Interface)协议被广泛用于服务器监控中,包括采集CPU温度、风扇转速、主板温度,以及远程开关机等等。而且IPMI独立于硬件和操作系统,无论是CPU、BIOS,还是OS出现故障,都不会影响IPMI的工作。因为IPMI的硬件设备BMC(Baseboard Management Controller)是一个独立的板卡,独立供电。

 

JMX:通过JMX进行监控,JMX(Java Management Extensions,即Java管理扩展),监控JVM虚拟机时,使用这种方法也是非常不错的选择。

 

4.Zabbix架构  组件介绍  分布式架构

 

 

 

 

 

 

Zabbix组件介绍

 

1.   Zabbix Server:负责接收Agent发送的报告信息,组织所有配置、数据和操作。

2.  Database Storage: 存储配置信息以及收集到的数据

3.  Web Interface:Zabbix的GUI接口,通常与server运行在同一台机器上

4.  Proxy: 可选组件,常用于分布式监控环境中

5.  Agent: 部署在被监控主机上,负责收集数据发送给Server

 

 

分布式架构

 

 

 

 

 

5.zabbix的工作流程

 

Agent获取被监控端数据,发送给Server。

Server记录所接收到的数据,存储在Database中并按照策略进行相应操作。

如果是分布式,Server会将数据传送一份到上级Server中。

 

Web Interface将收集到的数据和操作信息显示给用户。

 

监控模式:主动模式/被动模式

 

 

 

agent, trapper, proxy 三种常见zabbix 监控模式

0,agent 被动模式:

Server=192.168.10.10

 

zabbix-agent 启动 10050 端口

zabbix-server 主动向已注册的 zabbix-agent 拉取监控数据

 

1,agent 主动模式:

ServerActive=192.168.10.10

zabbix-server 启动 10051 端口

zabbix-agent主动向 zabbix-server 推送监控数据

 

2,trapper 模式:

zabbix-server 启动 10051 端口

zabbix-sender 主动向 zabbix-server 推送监控数据

 

3,proxy 模式:

ProxyMode 0为主动拉取zabbix-agent数据,1 为被动接收zabbix-agent数据

zabbix-agent -> zabbix-proxy -> zabbix-server

zabbix的进程

 

6.默认情况下zabbix包含5个程序  即服务组件程序 的各自作用

zabbix_agentd、  zabbix_get、  zabbix_proxy、  zabbix_sender、  zabbix_server,

另外zabbix_java_gateway是可选,这个需要另外安装。

 

服务组件 各自的作用

1.zabbix_agentd:客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。

 

2.zabbix_get:zabbix 排错  工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令,通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内存的方式来做故障排查。

 

3.zabbix_sender:zabbix主动提交数据 工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。可以在收集监控数据的脚本执行完毕之后,使用sender主动提交数据。

 

4.zabbix_server:zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server。

备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。

 

5.zabbix_proxy:zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交 /被提交到server里。

 

6.zabbix_java_gateway:zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。

需要特别注意的是,它只能主动去获取数据,不能被动获取数据。它的数据最终会给到server或者proxy。

 

7.zabbix的逻辑关系图

 

 

 

 

 

2.zabbix组件及其作用

1)zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;

2)database storage:专用于存储所有配置信息,以及由zabbix收集的数据;

3)web interface:zabbix的GUI接口;通常与 Server 运行在同一台主机上;

4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;

5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端; 第六个

 

3.Zabbix监控环境常用术语

zabbix监控环境中相关术语

 

主机(host):要监控的网络设备,可由IP或DNS名称指定;

 

主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;

主机组通常在给用户或用户组指派监控权限时使用;

 

监控项item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由”key”标识;

 

触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从”OK”转变为”Problem”,当数据再次恢复到合理范围,又转变为”OK”;

 

事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;

 

动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;

 

报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;

 

媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;

 

通知(notification):通过选定的媒介向用户发送的有关某事件的信息;

 

远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;

 

模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至某个主机;

 

应用(application):一组item的集合;

 

web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;

 

前端(frontend):Zabbix的web接口。

 

 

 

 

4.Zabbix服务端安装  基本配置环境

Zabbix有集中式安装 和 分布式安装。这里为集中式安装。版本选择zabbix3.4。

 

安装部署思路

 

准备工作:安装源码库配置部署包

安装zabbix server

初始化zabbix database

配置zabbix server端并启动

安装zabbix sweb配置并启动

访问zabbix 需要zabbix的web界面 要成功访问web界面 需要启动Http服务 需要对http服务进行配置

 

初始化zabbix配置

安装zabbix agent

修改配置文件

启动zabbix agent

1.环境配置   联网 配置yum  关闭selinux防火墙

 

ping www.baidu.com

 

 

 

 

 

vim fhq

 

iptables -F

iptables -X

iptables -Z

systemctl stop firewalld.service

setenforce  0

systemctl disable firewalld

 

chmod 777 fhq

./fhq

 

 

 

 

vi /etc/sysconfig/selinux

 

 

改为disabled

getenforce查看selinux的状态

 

 

 

 

 

 

 

 

 

配置yum 下载源

 

cd /etc/yum.repos.d

vi CentOS-Base.repo

 

#[base]

#name=CentOS-$releasever - Base

#baseurl=file:///media/cdiso

#gpgcheck=0

#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

[os]

name=os

enable=1

gpgcheck=0

baseurl=http://mirrors.aliyun.com/centos/7.7.1908/os/x86_64/

[extras]

name=ext

enable=1

gpgcheck=0

baseurl=http://mirrors.aliyun.com/centos/7.7.1908/extras/x86_64/

[zabbix]

name=zabbix

enable=1

gpgcheck=0

baseurl=http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/

[non-supported]

name=non-supported

enabled=1

gpgcheck=0

baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/x86_64/

 

 

 

 

 

 

2.安装zabbix和mysql软件包

 

1.安装Zabbix部署包

yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server -y

 

2.安装初始化数据库密码为zabbix

systemctl start mariadb

 

mysql -uroot -p回车进入即可

create database zabbix character set utf8 collate utf8_bin;

grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

show databases;

exit;

 

 

 

 

 

3.导入初始架构(Schema)和数据

cd /usr/share/doc/zabbix-server-mysql-3.4.15/

zcat create.sql.gz |mysql -uroot zabbix -p 回车导入即可

 

 

 

 

 

 

查看压缩包,查看后交给mysql

mysql -uroot -p回车即可

show databases;

use zabbix;

show tables;

 

 

 

 

4.在zabbix_server.conf中编辑数据库配置

指定数据库的主机是谁,数据库名称,用户和密码是什么。

 

vi /etc/zabbix/zabbix_server.conf

 

DBHost=localhost

 

 

 

 

DBName=zabbix

 

 

 

 

DBUser=zabbix

 

 

 

 

DBPassword=zabbix

 

 

 

 

 

 

 

systemctl enable zabbix-server

systemctl start zabbix-server

systemctl status zabbix-server

 

 

 

 

 

grep '^[a-Z]' /etc/zabbix/zabbix_server.conf              ?????

 

 

 

 

 

5.编辑Zabbix前端httpd的PHP配置 修改时区

调整一个时区,如果不调整,一打开页面会有很多乱码。

vi /etc/httpd/conf.d/zabbix.conf

 

php_value date.timezone Asia/ShangHai增加这行即可

 

 

 

 

 

 

systemctl start httpd

systemctl status httpd

 

 

 

 

6.登陆页面 注册信息

192.168.10.10/zabbix/

每点一步都是在生成配置文件。

 

zabbix_server服务端端口是10051

zabbix_agent监控端端口是10050

 

server端安装zabbix-get

agent端安装zabbix-sender

 

 

 

 

 

数据库连接

Localhost本机

0表示默认端口3306

密码为zabbix

 

 

 

 

 

设置关于页面的信息

Zabbix_Server表示监控主机的意思

 

 

 

 

 

确认信息

 

 

 

 

 

 

 

 

 

假如配置写错, 可去文件中查看修改

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

 

 

 

 

 

登录

Admin为用户名

Zabbix为密码

 

 

 

 

 

 

 

修改为中文模式点击右上角 Chinese     update更新保存即可

 

 

 

 

 

 

 

 

 

7.解决乱码问题

 

登录后,可以调整为中文,还会遇到乱码的情况,是因为zabbix自身对中文简体的支持不完善,需要我们手动的去上传新的字体进行替换:

/usr/share/zabbix/include/defines.inc.php文件中字体的配置,将里面关于字体设置从graphfont替换成msyh

 

vi /usr/share/zabbix/include/defines.inc.php

 

命令行查找替换修改

:s/graphfont/msyh/g

 

systemctl restart zabbix-server.service

 

 

 

 

 

 

 

 

 

8.配置 服务端的agent监控server  启动server

 

vim /etc/zabbix/zabbix_agentd.conf

 

被动模式

 

 

 

主动模式

 

这个控制主机名

 

 

 

 

 

systemctl start zabbix-agent.service

systemctl status zabbix-agent.service

 

 

 

 

启动

 

 

 

 

 

Ip改为192.168.10.10

更新

 

 

 

 

 

 

 

 

 

5.Zabbix客户端安装  和基本操作

1.安装agent客户端软件  修改被动主动模式 客户端服务名称 启动服务

yum install -y zabbix-agent.x86_64

 

vim /etc/zabbix/zabbix_agentd.conf 修改配置文件的模式

 

被动模式

 

 

主动模式

 

 

 

 

 

 

修改服务主机名

Hostname=zabbix_agent01

 

 

 

 

 

修改完成启动agent服务

systemctl start zabbix-agent.service

systemctl status zabbix-agent.service

 

2.添加监控 客户端的主机

配置 主机 添加主机

 

 

 

 

 

 

 

 

 

选择好模板   添加  更新

 

 

 

 

 

 

 

可见名称是在外可见的主机名称

新的组群可自己创建

Ip地址agent客户端的ip

下面 添加ip是同一个主机服务端 的另一个网卡

 

SNMP为网络接口

JMX接口JAVA虚拟主机的接口

IPMI物理性能上的指标

 

 

模板里面有 触发器 监控项 图形

 

3.客户端  添加监控项 自定义item

 

当前登录用户不超过2个,如果超过就报警->触发动作->通知

 

定义key->触发器->通知给谁,发邮件

 

查看

who

w执行的是echo $PATH   环境中的w

echo $PATH

which w

 

 

 

 

 

 

w|awk 'NR==1{print $4}'命令行获取当前登录用户个数

 

 

 

 

 

 

vi /etc/zabbix/zabbix_agentd.conf     写入agent配置文件

 

末行模式 查找/UserParameter=

UserParameter=log_user,/usr/bin/w|awk 'NR==1{print $4}'

 

 

 

 

log_user监控项对应的key

/usr/bin/w|awk 'NR==1{print $4}'写绝对路径来找  用户登录的数值

 

systemctl restart zabbix-agent.service 写完要重启下zabbix-agent服务

 

 

添加监控项

 

 

 

 

 

 

 

 

 

键值  对应  key

新的应用集表示监控项的集合

 

 

 

 

 

4.客户端anent创建图形   get获取

 

 

 

 

检测中 图形  群组 主机   图形中查看

 

yum -y install zabbix-get.x86_64 zabbix server主机上

zabbix_get -s 192.168.10.20 -k log_user

 

在添加之前,先zabbix_get验证是不是能获取到,再添加到dashboard上。

 

 

 

 

 

 

 

5.添加触发器

创建

 

 

 

 

 

写入名称 严重性 添加表达式

 

{zabbix_agent01:log_user.last()}>3 01主机 log_user监控项 调用.last函数   >3成立

 

 

 

 

 

 

 

 

 

 

 

点击表达式构造器  测试

 

 

 

 

 

 

 

 

关闭 表达式构造器

完成添加

 

 

 

 

 

 

 

6.zabbix实现钉钉报警

一,申请钉钉账号,登录账号。

二,创建一个告警群组,添加一个机器人。

三,脚本配置

主服务器的  cd /usr/lib/zabbix/alertscripts目录下面创建脚本,名称为zabbix_dingding.py

 

vi zabbix_dingding.py

脚本的内容如下:

 

#!/usr/bin/python

# -*- coding: utf-8 -*-

 

import requests

import json

import sys

 

import requests

import json

import sys

import os

 

headers = {'Content-Type': 'application/json;charset=utf-8'}

api_url = "写机器人的webhook链接"

 

def msg(text):

json_text= {

"msgtype": "text",

"text": {

"content": text

},

"at": {

"atMobiles": [

"1xxxxxxxxxxxxx"

],

"isAtAll": False

}

}

print requests.post(api_url,json.dumps(json_text),headers=headers).content

 

if __name__ == '__main__':

text = sys.argv[1]

msg(text)

 

只修改这个即可

 

 

 

 

 

复制这个

 

 

 

 

chmod +x zabbix_dingding.py

ll zabbix_dingding.py

测试

./zabbix_dingding.py test

 

 

 

 

 

会报错因为缺少pip包

yum -y install epel-release

yum -y install python-pip

pip install requests

./zabbix_dingding.py test

 

 

 

 

 

 

 

7.添加报警媒介类型

1.创建报警媒介

管理-报警媒介类型-创建媒介类型  名称“钉钉”-类型“脚本”-脚本名称“zabbix_dingding.py”-脚本参数“{ALERT.MESSAGE}”

 

注意脚本名称要和 写的配置文件要一样

 

 

 

 

zabbix_dingding.py脚本名称

 

 

 

 

脚本参数

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

 

 

 

 

 

 

 

8.绑定到用户

管理- 用户admin- 报警媒介-添加

 

 

 

 

 

 

 

 

 

 

 

 

 

9.创建动作

 

 

 

 

 

 

 

 

 

 

 

 

在增加操作

服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!

 

消息内容

告警主机: {HOST.NAME}

告警IP: {HOST.IP}

告警时间:{EVENT.DATE}-{EVENT.TIME}

告警等级: {TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}:{ITEM.VALUE}

事件 ID: {EVENT.ID}

 

 

 

 

 

 

点击新的   增加用户和组

 

 

 

 

 

 

 

 

仅送到dingding

 

 

 

 

 

点击上面的  小添加

 

 

 

 

也可以 增加条件

 

 

然后点击 恢复操作

 

默认标题

服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!

 

消息内容

恢复主机: {HOST.NAME}

恢复IP: {HOST.IP}

恢复时间:{EVENT.DATE}-{EVENT.TIME}

恢复等级: {TRIGGER.SEVERITY}

恢复信息: {TRIGGER.NAME}:{ITEM.VALUE}

恢复 ID: {EVENT.ID}

 

 

 

 

 

恢复操作 也增加 用户  仅送到

 

 

 

 

 

点击添加  动作添加完成

 

 

 

 

 

 

 

 

 

??进阶管理  操作 新的

 

 

6.简答& 实验

 

简答题

Zabbix主要组件有哪些?

简述zabbix报警流程?

如何实现自定义监控项?

 

实验题

安装zabbix server和zabbix agent

添加主机、监控项、媒介、触发器和动作等常用操作

实现钉钉告警

 

posted @ 2020-08-10 18:33  浅唱I  阅读(686)  评论(0编辑  收藏  举报