zabbix5.0

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

监控:监视,控制 事后追责 随着用户的增多,服务随时可能会被oom(内存溢出)

2.常见的linux监控命令

1.top 进程监控

Linux下的Top命令是一个性能监控程序,许多系统管理员常常用它来监控Linux性能,在许多Linux或者类Unix操作系统里都有这个命令。

Top命令用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。这条命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程PID、所使用命令以及其他。它还可以显示正在运行进程的内存和CPU占用多的情况。

2.htop 交互式进程监控

优点:

  • 直接支持鼠标点击操作( 就问你6不6!)
  • 画面可以水平垂直滚动,更像一个窗口
  • 可以跟踪进程,显示进程打开的文件
  • 支持进程的树状图显示
  • 支持按照名称查找进程
htop常用功能键 
F1 : 查看htop使用说明
F2 : 设置
F3 : 搜索进程
F4 : 过滤器,按关键字搜索
F5 : 显示树形结构
F6 : 选择排序方式
F7 : 减少nice值,这样就可以提高对应进程的优先级 
F8 : 增加nice值,这样可以降低对应进程的优先级
F9 : 杀掉选中的进程
F10 : 退出htop

/ : 搜索字符
h : 显示帮助
l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
u :显示所有用户,并可以选择某一特定用户的进程
s : 将调用strace追踪进程的系统调用
t : 显示树形结构

H :显示/隐藏用户线程
I :倒转排序顺序
K :显示/隐藏内核线程   
M :按内存占用排序
P :按CPU排序   
T :按运行时间排序

上下键或PgUP, PgDn : 移动选中进程
左右键或Home, End : 移动列表   
pace(空格) : 标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程

3.iotop 监控硬盘IO的使用

Linux 下系统自带的IO统计工具如 iostat,nmon等大多数是只能统计到 per设备的读写情况,如果你想知道每个进程是如何使用 IO的就比较麻烦,使用 iotop命令可以很方便的查看。

4.iftop 流量和带宽监控工具

用于查看实时的网络流量、监控TCP/IP连接等

iftop 命令常用的参数如下,这里做个小规模总结:

- `-i` 设定监测的网卡,如:`# iftop -i eth1`
- `-B` 以bytes为单位显示流量 (默认是bits),如:`# iftop -B`
- `-n` 使 host信息默认直接都显示 IP,如:`# iftop -n`
- `-N` 使端口信息默认直接都显示端口号,如: `# iftop -N`
- `-F` 显示特定网段的进出流量,如 `# iftop -F 10.10.1.0/24` 或 `# iftop -F 10.10.1.0/255.255.255.0`
- `-h`(display this message),帮助,显示参数信息
- `-p` 使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
- `-b` 使流量图形条默认就显示;

再来总结一下,进入 iftop 视图画面后的一些操作命令 (注意大小写):

- 按 `h`切换是否显示帮助;
- 按 `n`切换显示本机的IP或主机名;
- 按 `s`切换是否显示本机的host信息;
- 按 `d`切换是否显示远端目标主机的host信息;
- 按 `t`切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
- 按 `N`切换显示端口号或端口服务名称;
- 按 `S`切换是否显示本机的端口信息;
- 按 `D`切换是否显示远端目标主机的端口信息;
- 按 `p`切换是否显示端口信息;
- 按 `P`切换暂停/继续显示;
- 按 `b`切换是否显示平均流量图形条;
- 按 `T`切换是否显示每个连接的总流量;
- 按 `l`打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
- 按 `L`切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
- 按 `j`或按`k`可以向上或向下滚动屏幕显示的连接记录;
- 按 `1`或`2`或`3`可以根据右侧显示的三列流量数据进行排序;
- 按`<`根据左边的本机名或 IP排序;
- 按`>`根据远端目标主机的主机名或 IP排序;
- 按`o`切换是否固定只显示当前的连接;

5.iostst 输入输出统计

iostat是一个用于收集显示系统存储设备输入和输出状态统计的简单工具。这个工具常常用来追踪存储设备的性能问题,其中存储设备包括设备、本地磁盘,以及诸如使用NFS等的远端磁盘

各项含义: avg-cpu段:

%user: 在用户级别运行所使用的CPU的百分比.
%nice:优先进程消耗的CPU时间,占所有CPU的百分比.
%system: 在系统级别(kernel)运行所使用CPU的百分比.
%iowait: CPU等待硬件I/O时,所占用CPU百分比.
%steal: 管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比.
%idle: CPU空闲时间的百分比.

Device段:

tps: 每秒钟发送到的I/O请求数.
KB_read /s: 每秒读取的block数.
KB_wrtn/s: 每秒写入的block数.
KB_read: 启动到现在 读入的block总数.
KB_wrtn: 启动到现在写入的block总数.

查看帮助:

$ man iostat

6.vmstat 虚拟内存统计

1.介绍:Linux 的 VmStat 命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动 等的统计信息
2.使用:一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数

如果要求vmstat每2秒采集数据,一直采集,直到结束程序(Ctrl+c)。则省略采集次数:

$ vmstat 2

测试参数讲解:

r :表示运行队列,如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高
b :表示阻塞的进程数swpd :虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器
free :空闲的物理内存的大小
buff : 系统占用的缓存大小
cache :直接用来记忆我们打开的文件,给文件做缓冲
si :每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了
us :用户CPU时间
sy :系统CPU时间
so : 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
sy : 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id : 空闲 CPU时间,一般来说,id + us + sy = 100
wt : 等待IO CPU时间。

7.netstat 网络状态统计

参数讲解:

  -a或–all   显示所有连线中的Socket。
  -A<网络类型>或–<网络类型>   列出该网络类型连线中的相关地址。
  -c或–continuous   持续列出网络状态。
  -C或–cache   显示路由器配置的快取信息。
  -e或–extend   显示网络其他相关信息。
  -F或–fib   显示FIB。
  -g或–groups   显示多重广播功能群组组员名单。
  -h或–help   在线帮助。
  -i或–interfaces   显示网络界面信息表单。
  -l或–listening   显示监控中的服务器的Socket。
  -M或–masquerade   显示伪装的网络连线。
  -n或–numeric   直接使用IP地址,而不通过域名服务器。
  -N或–netlink或–symbolic   显示网络硬件外围设备的符号连接名称。
  -o或–timers   显示计时器。
  -p或–programs   显示正在使用Socket的程序识别码和程序名称。
  -r或–route   显示Routing Table。
  -s或–statistice   显示网络工作信息统计表。
  -t或–tcp   显示TCP传输协议的连线状况。
  -u或–udp   显示UDP传输协议的连线状况。
  -v或–verbose   显示指令执行过程。
  -V或–version   显示版本信息。
  -w或–raw   显示RAW传输协议的连线状况。
  -x或–unix   此参数的效果和指定”-A unix”参数相同。
  –ip或–inet   此参数的效果和指定”-A inet”参数相同。

8.uptime 显示进程状态

参数讲解:

uptime -p  #人性化的格式来显示运行多长时间
uptime -s  #指定显示系统开始运行的时间和日期
uptime -V  #获取版本信息
uptime -h  #获取帮助信息

9.lsof 列出打开的文件

用于以列表的形式显示所有打开的文件和进程。打开的文件包括磁盘文件、网络套接字、管道、设备和进程
使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候。使用这条命令,你可以很容易地看到正在使用哪个文件

10.nethogs 进程流量监控

用来按进程或程序实时统计网络带宽使用率

详细介绍:

NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是按照进程进行带宽分组。NetHogs不需要依赖载入某个特殊的内核模块。如果发生了网络阻塞你可以启动NetHogs立即看到哪个PID造成的这种状况。这样就很容易找出哪个程序跑飞了然后突然占用你的带宽

安装依赖包

[root@rs-server ~]# yum install libpcap libpcap-devel -y
[root@rs-server ~]# yum -y install epel-release

安装nethogs

[root@rs-server ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@rs-server ~]# uname -r
3.10.0-693.el7.x86_64
[root@rs-server ~]# yum install nethogs -y

NetHogs的一些交互命令(键盘快捷键)

- m : 修改单位
- r : 按流量排序
- s : 按发送流量排序
- q : 退出命令提示符

参数介绍:

- -V : 显示版本信息,注意是大写字母V. 
- -v:切换显示单位,默认是默认是KB/s(0表示 KB/s,1表示KB,2表示B,3表示MB)
- -c:检测次数(后面直接跟数字)
- -a:检测所有的设备
- -d : 延迟更新刷新速率,以秒为单位。默认值为 1. 
- -t : 跟踪模式. 
- -b : bug 狩猎模式 — — 意味着跟踪模式. 
- -p : 混合模式(不推荐). 
- device: 要监视的设备名称. 默认为 eth0 

11.Nload 实时监控流量和带宽

nload是一个实时监控网络流量和带宽使用情况,展示进出的流量情况,不仅有数值,也可以有动态图展示

nload 安装

[root@rs-server ~]# yum -y install epel-release
nload安装
[root@rs-server ~]# yum install nload -y
nload如果直接输入这个命令默认只查看第一个网络的流量进出情况,一般是在nload后面指定网络,可以指定多个网络

nload操作介绍

nload 默认分为上下两块:
- 上半部分是:Incoming也就是进入网卡的流量
- 下半部分是:Outgoing,也就是从这块网卡出去的流量

每部分都有当前流量(Curr)
平均流量(Avg)
最小流量(Min)
最大流量(Max)
总和流量(Ttl)这几个部分,看起来还是蛮直观的

nload默认eth0网卡,监测eth1网卡的流量如下:

#nload eth1

参数介绍

- -a:全部数据的刷新时间周期,单位是秒,默认是300
- -i:进入网卡的流量图的显示比例最大值设置,默认10240 kBit/s
- -m:不显示流量图,只显示统计数据
- -o:出去网卡的流量图的显示比例最大值设置,默认10240 kBit/s
- -t:显示数据的刷新时间间隔,单位是毫秒,默认500
- -u:设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的.注意大小写单位不同!
- h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc
- H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc
- -U:设置右边Ttl的数据单位,默认是自动变的.注意大小写单位不同(与-u相同)!
- Devices:自定义监控的网卡,默认是全部监控的,使用左右键切换

界面操作

- 上下方向键、左右方向键、enter键或者tab键都就可以切换查看多个网卡的流量情况
- 按 F2 显示选项窗口。
- 按 F5 将当前设置保存到用户配置文件。
- 按 F6 从配置文件重新加载设置。
- 按 q 或者 Ctrl+C 退出 nload。

12.tcpdump 网络包分析器

用于捕捉或者过滤网络上指定接口上接收或者传输的TCP/IP包

它还有一个选项用于把捕捉到的包保存到文件里,以便以后进行分析

  • -h:查看命令帮助
  • -i:网络接口
  • -c :需要输出包数量
$ sudo apt-get update
$ sudo apt-get install tcpdump 
$ tcpdump -h
$ sudo tcpdump -i eth0 -c 3

13.IPTraf 实时局域网IP监控

IPTraf是一个在Linux控制台运行的、开放源代码的实时网络(局域网)监控应用。它采集了大量信息,比如通过网络的IP流量监控,包括TCP标记、ICMP详细信息、TCP/UDP流量分离、TCP连接包和字节数。同时还采集有关接口状态的常见信息和详细信息:TCP、UDP、IP、ICMP、非IP,IP校验和错误,接口活动等

$ sudo apt-get install iptraf
$ sudo iptraf

查看命令帮助信息,根据需要选择合适的参数,进行监控。此处便不再赘述命令参数:

$ sudo iptraf -h

3.使用shell脚本来监控服务器

#shell,取剩余内存的值
MEM=`free -m |awk 'NR==2{print $NF}'`

监控软件

nagios : 没有数据库,不能存储历史数据(弃用)

cacti : 有数据库,基于php开发,添加监控项很难,5分钟采集一次

zabbbix : 有数据路,配置简单,有模板,支持广泛,

open-falcon : 小米公司开源软件;有开发基础的适用

promethues :

4.zabbix的基础服务架构

![0WZ4W9EK4JVT)~{5DWK_%B.png

5.zabbix生产环境安装

5.1安装nginx+php7.2+环境

#修改yum源为阿里云的源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#安装php需要epel源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

#下载更新epel源,修改地址为阿里云
yum install epel-release.noarch -y
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#安装php源
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

#安装nginx + php
yum install nginx php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd -y

#修改php配置文件
vim  /etc/php-fpm.d/www.conf
#修改两行内容
8 user = nginx
10 group = nginx

#编辑nginx配置文件
grep -Ev '^$|#' /etc/nginx/nginx.conf.default > /etc/nginx/nginx.conf
vim /etc/nginx/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /html;
            index  index.php index.html index.htm;
        }
       location ~ \.php$ {
           root           /html;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  /html$fastcgi_script_name;
           include        fastcgi_params;
       }
   }
}

#创建站点目录
mkdir /html

#启动nginx和php
systemctl start nginx php-fpm
systemctl enable nginx php-fpm

#安装完成后删除php的专属yum源---->影响yum安装的网速

5.2 安装mariadb

yum install mariadb-server -y
#启动maraiadb
systemctl start mariadb.service 
systemctl enable mariadb.service
mysql_secure_installation 

#创建数据库:字符集为utf8
mysql> create database zabbix character set utf8 collate utf8_bin;
#创建用户
mysql> create user 'zabbix'@'localhost' identified by '123456';
#授权
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';

5.3 安装zabbix-server

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#修改yum源地址为清华源
vim /etc/yum.repos.d/zabbix.repo
#在vim命令行执行
:%s#http://repo.zabbix.com/zabbix#https://mirrors.tuna.tsinghua.edu.cn/z
abbix/zabbix/#g

#安装zabbix-server
yum install zabbix-server-mysql -y
#导入zabbix数据库 
zcat /usr/share/doc/zabbix-server-mysql-5.0.6/create.sql.gz|mysql zabbix
两条命令等效:mysql zabbix < zcat /usr/share/doc/zabbix-server-mysql-5.0.6/create.sql.gz

#修改zabbix配置文件
vim /etc/zabbix/zabbix_server.conf
91 DBHost=localhost
100 DBName=zabbix
116 DBUser=zabbix
124 DBPassword=123456
#如果数据库是二进制安装,需要配置socket路径
131 # DBSocket=

#启动
systemctl start zabbix-server.service 
systemctl enable zabbix-server.service

#验证
netstat -lntup
tcp     0     0 0.0.0.0:10051      0.0.0.0:*        LISTEN      27914/zabbix_server

5.4 安装zabbix-server

tar xf zabbix-5.0.6.tar.gz 
cd zabbix-5.0.6/ui/

#移动文件到站点目录
mv zabbix-5.0.6/ui/* /html/
chown -R nginx:nginx /html

#解决登录问题
#创建必要目录
mkdir /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session
#修改php参数
vim /etc/php.ini 
656 post_max_size = 16M
368 max_execution_time = 300
378 max_input_time = 300
877 date.timezone = Asia/Shanghai

#重启生效
systemctl restart php-fpm.service

--->在浏览器输入10.0.0.71进入登录界面
QQ截图20201221132646.png

QQ截图20201221132844.png

复制监控项-1.png

复制监控项-2.png

添加监控节点-1.png

添加监控节点-2.png

添加监控节点-3.png

添加监控节点-4.png

6.监控一台服务器主机

6.1监控zabbix-server服务端主机

[root@zabbix-server ~]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.6-1.el7.x86_64.rpm
​
#安装zabbix-agent
[root@zabbix-server ~]# rpm -ivh zabbix-agent-5.0.6-1.el7.x86_64.rpm
​
#启动
[root@zabbix-server ~]# systemctl start zabbix-agent.service 
[root@zabbix-server ~]# systemctl enable zabbix-agent.service

6.2 监控zabbix客户端主机

``` zabbix客户端安装
服务器规划 zabbix-web01 10.0.0.7 配置1c1g

下载zabbix-agent-5.0.6

[root@zabbix-web01 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.6-1.el7.x86_64.rpm

安装zabbix-agent

[root@zabbix-web01 ~]# rpm -ivh zabbix-agent-5.0.6-1.el7.x86_64.rpm

修改配置文件

[root@zabbix-web01 ~]# vim /etc/zabbix/zabbix_agentd.conf
117 Server=10.0.0.71

启动

[root@zabbix-web01 ~]# systemctl start zabbix-agent.service
[root@zabbix-web01 ~]# systemctl enable zabbix-agent.service

在zabbix的web界面上添加监控节点

zabbix模板是监控项的集合,zabbix应用集是监控项的分组`

扩展:

zabbix C语言开发

zabbix-agent C语言开发

zabbix-agent2 go语言开发

->zabbix-agentzabbix-agent2 可以同时安装,但是不能同时启动,因为他们使用相同的端口,会产生端口冲突。

->zabbix-agent2的配置方法和zabbix-agent的配置方法是一样的,但是配置为文件名是不同的。

## 7.自定义监控项

```#在客户端执行以下操作:
以监控nginx为例:
#安装nginx服务
yum -y install nginx
systemctl start nginx 
systemctl enable nginx 
​
#通过命令查看开启的端口个数判断nginx是否存活
[root@zabbix-web01 ~]# netstat -tlun|grep -w -c '80'
2      --->值为2时,nginx存活
[root@zabbix-web01 ~]# netstat -tlun|grep -w -c '80'
0      --->值为0时,nginx宕机
​
========================================================================
​
---->查看端口的命令中不能有-p参数,因为-p参数只有root权限才能执行
---->如果一定要使用-p参数,则有以下解决方法:
方法一:给netstat命令添加s权限;s权限的作用是总是以root用户的身份去执行这个命令
[root@zabbix-web01 ~]# chmod u+s /usr/bin/netstat
​
方法二:修改启动配置文件,使zabbix-agent以root用户启动运行
[root@zabbix-web01 ~]# vim /usr/lib/systemd/system/zabbix-agent.service
16 User=root
17 Group=root
​
=========================================================================
​
#修改zabbix-agent的配置文件,添加自定义监控项
[root@zabbix-web01 ~]# vim /etc/zabbix/zabbix_agentd.conf
338 UserParameter=nginx_status,netstat -lntu|grep -w -c '80'
 UserParameter解析:
 --->nginx_status   监控项的key
 --->netstat -lntu|grep -w -c '80'  监控项的取值方法(一个shell命令)

#重启生效
[root@zabbix-web01 ~]# systemctl restart zabbix-agent.service 
​
#在zabbix的web界面添加自定义监控项
自定义监控项-1.png

自定义监控项-2.png

自定义监控项-3.png

自定义监控项-4.png

8.自定义触发器

测试触发器:关闭客户端nginx,查看zabbix监控数据

自定义触发器-1.png

自定义触发器-2.png

自定义触发器-3.png

自定义触发器-4.png

自定义触发器-5.png

9.邮件报警和微信报警

9.1邮件报警

邮件报警-1.png

邮件报警-2.png

邮件报警-3.png

邮件报警-4.png

邮件报警-5.png

邮件报警-6.png

邮件报警-7.png

9.2脚本实现微信报警

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: bgx
#date: 2018
#comment: zabbix接入微信报警脚本
​
import requests
import sys
import os
import json
import logging
​
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
 datefmt = '%a, %d %b %Y %H:%M:%S',
 filename = os.path.join('/tmp','weixin.log'),
 filemode = 'a')
​
​
corpid='wwf0110d0133a7cf5e'
appsecret='F2YevauFcP83Vrp_N8VUHBXV0a2I-rSvhBV2IF4onn8'
agentid=1000002
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
​
#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
​
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]
​
params={
 "touser": touser,
#       "toparty": toparty,
 "msgtype": "text",
 "agentid": agentid,
 "text": {
 "content": message
 },
 "safe":0
}
​
req=requests.post(msgsend_url, data=json.dumps(params))
​
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message) 
1.#给脚本执行权限
chmod +x weixin.py
python weixin.py MiaoJie(企业微信账号) '下雨了' '回家收衣服'(报警主题)  #运行会缺少模块pip
2.#安装pip 
yum install python-pip -y &>/dev/null
echo $?
3.#优化加速
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
4.#在执行一次企业微信会有信息
python weixin.py MiaoJie(企业微信账号) '下雨了' '回家收衣服'(报警主题) 
5.#结合zabbix
[root@zabbix-server ~]#grep -Ev '^$|#' /etc/zabbix/zabbix_server.conf #过滤配置文件
AlertScriptsPath=/usr/lib/zabbix/alertscripts   #报警目录
​
a.#将脚本移动至指定的报警目录
mv weixin.py /usr/lib/zabbix/alertscripts
b.#在zabbix页面上填写微信报警信息并加入变量
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
c.#测试会发现报错(权限拒绝)
rm -rf /tmp/weixin.log 
-rw-rw-r-- 1 zabbix zabbix 114249 Dec 22 20:18 /tmp/weixin.log  #用户和用户组都是zabbix
d.#配置发件,收件人
用户--->报警类型--->添加-->更新
#注意只写自己的账号,否则是广播
e.#添加消息类型(不添加默认没信息,会报错)
f.#触发报警
管理--->一般--->其他---<刷新不支持的项目改为10秒
1.#将web端的nginx停掉
[root@zabbix-web01 ~]#systemctl stop nginx
2.#企业微信收到故障信息
3.#自定义时间发送信息
image-20201222201611287.png

image-20201222201832915.png

image-20201222202938191.png

image-20201222203622187.png

image-20201222203835327.png

image-20201222205409946.png

9.3zabbix故障预处理和报警升级

yum install ansible -y
vim /etc/ansible/hosts
[web]
192.168.100.12  ansible_ssh_user='root' ansible_ssh_pass='123456'
​
ansible web -m shell -a 'systemctl restart httpd.service'
[root@oldboy ~]# systemctl status httpd
2.#zabbix-server上的zabbix-agent启用远程命令功能
vim /etc/zabbix/zabbix_agentd.conf 
EnableRemoteCommands=1
AllowRoot=1
​
systemctl restart zabbix-agent.service
3.#在zabbix-web上配置触发器动作 见下图(带序号的)
4.#测试zabbix-agent报警升级
测试1:停止httpd服务
[root@oldboy ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
 Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
 Active: activating (start) since Tue 2019-08-06 22:20:08 CST; 4s ago
 Docs: man:httpd(8)
 man:apachectl(8)
 Process: 2839 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
 Main PID: 2894 (httpd)
 CGroup: /system.slice/httpd.service
 └─2894 /usr/sbin/httpd -DFOREGROUND
测试2:停止httpd服务
#使用nc监听80端口,模拟httpd重启失败
yum install nc  -y
nc -l 80
image-20201222210938643.png

image-20201222211053800.png

自定义报警信息

服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}
#重新测试故障看到的信息为定制的报警内容
#宏使用场景
详情见:https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location
image-20201222204311656.png

image-20201222204733717.png

10.自定义图像

10.1 zabbix自定义图形

修改图像乱码

DejaVuSans.ttf
[root@zabbix-server ~#ls /html/assets/fonts/
#在windows将中文字体覆盖到默认字体目录
#此电脑--->本地磁盘c--->Windows---->Fonts
[root@zabbix-server fonts]#\mv SIMHEI.TTF DejaVuSans.ttf
image-20201222211440948.png

TIME OUT优化 注意:负载节点不能优化

第一次挥手:主动关闭方发送一个FIN+ACK报文,此时主动方进入FIN_WAIT1状态,主动方停止发送数据但仍然能接收数据
第二次挥手:被动方收到FIN+ACK,发送一个ACK给对方,此时被动方进入CLOSE-WAIT状态,被动方仍然可以给主动方发送数据
第三次挥手:主动方收到ACK后,此时主动方进入FIN_WAIT2状态,被动方确定没有数据要发后就会发送FIN+ACK报文
第四次挥手:主动方收到FIN+ACK,此时主动方进入TIME-WAIT状态,发送一个ACK给被动方,方被动方进入CLOSED状态
#详情参考:
https://blog.csdn.net/qq_39503880/article/details/108999993
https://www.cnblogs.com/dadonggg/p/8778318.html
#处理TIMEWAIT过多-->编辑内核文件/etc/sysctl.conf
net.ipv4.tcp_syncookies = 1 
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
net.ipv4.tcp_tw_reuse = 1   #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_recycle = 1 #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
net.ipv4.tcp_fin_timeout    #修改系默认的 TIMEOUT 时间
sysctl -p #参数生效
image-20201222212328074.png

image-20201222212716990.png

自定义监控项

UserParameter=tw_count,netstat -ant|grep -c TIME_WAIT
[root@zabbix-server ~]#systemctl restart zabbix-agent.service 
[root@zabbix-server ~]#zabbix -get -s 127.0.0.1 -k tw_count  #查看是否有值
image-20201222213824424.png

image-20201222214048463.png

image-20201222214308939.png

image-20201222214425572.png

image-20201222214618764.png

image-20201222214819753.png

10.2 使用grafana出图

wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-7.3.6-1.x86_64.rpm
yum localinstall grafana-7.3.6-1.x86_64.rpm -y 
systemctl start grafana-server.service
#2.访问页面10.0.0.71:3000 账号密码都为admin
#3.安装插件 (默认不支持zabbix)
方法一:
[root@zabbix-server ~]#grafana-cli plugins list-remote|grep zabbix
id: alexanderzobnin-zabbix-app version: 4.0.2
[root@zabbix-server ~]#grafana-cli plugins install alexanderzobnin-zabbix-app
方法二:
[root@zabbix-server ~]#cd /var/lib/grafana/plugins/
[root@zabbix-server plugins]#ll
drwxr-xr-x 8 root root 336 Nov 13 22:24 alexanderzobnin-zabbix-app
[root@zabbix-server plugins]#unzip alexanderzobnin-zabbix-app
[root@zabbix-server plugins]#systemctl restart grafana-server.service
#4.取值url接口 /html/api_jsonrpc.php

11.自定义模板(减少重复的操作)

1.#使用其他人分享的zabbix模板
a:导入模板(测试模板的兼容性)
b:把zabbix-agent的自定义key的配置文件放到/etc/zabbix/zabbix_agentd.d
c:如果有取值脚本,将取值脚本放在对应的目录
d:手动执行脚本测试取值(使用root身份执行)
e:使用zabbix_get测试取值(使用zabbix身份执行)
f:目标主机监控关联模板
2.#配置文件(监控tcp的11种状态)
 【 for n in ESTABL ISHED SYN SENT SYN RECV FIN WAIT1 FIN WAIT2 TIME WAIT CLOSE CLOSE WAIT LAST_ ACK LISTECLOSING;do echo UserParameter="$n","netstat -ant |grep -c $n >>/etc/ zabbix/ zabbix_ agent. d/ tcp conf ; done】
[root@web01 html]# cat /etc/zabbix/zabbix_agent2.d/tcp.conf 
UserParameter=ESTABLISHED,netstat -ant|grep -c ESTABLISHED
UserParameter=SYN_SENT,netstat -ant|grep -c SYN_SENT
UserParameter=SYN_RECV,netstat -ant|grep -c SYN_RECV
UserParameter=FIN_WAIT1,netstat -ant|grep -c FIN_WAIT1
UserParameter=FIN_WAIT2,netstat -ant|grep -c FIN_WAIT2
UserParameter=TIME_WAIT,netstat -ant|grep -c TIME_WAIT
UserParameter=CLOSE,netstat -ant|grep -c CLOSE
UserParameter=CLOSE_WAIT,netstat -ant|grep -c CLOSE_WAIT
UserParameter=LAST_ACK,netstat -ant|grep -c LAST_ACK
UserParameter=LISTEN,netstat -ant|grep -c LISTEN
UserParameter=CLOSING,netstat -ant|grep -c CLOSING

12.使用redis模板

你可能感兴趣的:(zabbix5.0)