能够用来做监控软件:

nagios, cacti, zabbix , Anturis,prometheus

监控命令:
top
vmstat
pidstat
mpstat
sar
free
iostat
ss
tcpdump
tcpflow
nload
htop
glances
strace
dmesg
dtrace

zabbix 版本

zabbix1.8

zabbix2.0

zabbix 2.2 LTS 长期支持版本

zabbix 2.4

zabbix 3.0 LTS

zabbix 3.2 标准版

zabbix3.4 标准版

zabbix 4.0 LTS 长期版

4.2

4.4

5.0 长期支持版
6.0 版本

6.0 的新特性: https://www.zabbix.com/cn/whats_new_6_0

标准版是7个月,LTS是长期版本,不是选最新版本哦

Zabbix LTS版本每一年半发布一次,且为Zabbix客户提供五年的支持服务

官网: https://www.zabbix.com/cn/life_cycle_and_release_policy

面试问题:

  1. zabbix 主动模式和被动模式:

Zabbix的主动模式和被动模式都是相对agent来说的。一般情况下默认使用的是zabbix的被动模式,即zabbix server根据监控项定义的时间主动去收集zabbix agent上的数据

优点是能使用更多的模板,更具有灵活性,

缺点是当zabbix agent节点过多的时候会增加zabbix server的负荷。

主动模式就是zabbix agent将消息推送给zabbix server,优点是减轻了zabbix server的压力,缺点是所有的模板要修改为主动模式

  1. 监控指标有哪些?

https://blog.csdn.net/xinshuzhan/article/details/108396781

  1. 无非是5大块,服务器,中间件,数据库,网络设备,应用。
  2. 1. 监控web服务
  3. web服务是否正常
  4. 业务(网页是否能访问、是否可以完成下订单、注册用户)
  5. 服务的响应时间
  6. 服务的并发量(活动用户、非活动用户)
  7. 2. 监控数据库
  8. 监控磁盘使用情况
  9. 监控内存内存使用
  10. 查看并发连接数量
  11. 检查数据库执行增删改查的频率
  12. 检查主从状态
  13. 检查数据库的备份情况
  14. 3. 服务器监控
  15. 磁盘
  16. 使用率
  17. inode
  18. block
  19. 读写速率
  20. CPU
  21. 监控cpu负载
  22. 监控使用cpu资源最多的进程
  23. 内存
  24. 使用率
  25. 缓冲区
  26. 缓存区
  27. 交换分区大小
  28. 网络
  29. 监控每个网卡的上先行速率
  30. 监控占用网络带宽见多的进程
  31. 监控数据包的丢包
  32. 监控网络数据包的阻塞情况
  33. 进程
  34. 当前系统中的总进程数
  35. 监控特定的程序的进程数
  36. 其他:
  37. 1.硬件监控——路由器、交换机、防火墙
  38. 2.系统监控——cpu、内存、磁盘、网络、进程、tcp
  39. 3.服务监控——nginxphptomcatredismemcachemysql
  40. 4.web监控——响应时间、加载时间、渲染时间,页面是不是200
  41. 5.日志监控——ELK、(收集、存储、分析、展示)日志
  42. 6.安全监控——firewalldWAF(nginx+lua)、安全宝、牛盾云、安全狗
  1. 监控的底层逻辑是什么?
  1. 不管是zabbix,还是其他的开源监控,说到底都是在做五件事:
  2. 1. 数据的采集
  3. 2. 采集过来的数据存储
  4. 3. 把存储起来的数据进行分析
  5. 4. 把分析的结果使用图标展示
  6. 5. 把有问题的地方采用各种方式告警。
  1. 你们公司的监控架构图是怎样的?

zabbix安装 - 图1

  1. 采集服务器: 1台, 8C8G 100G硬盘
  2. 数据库服务器:2 816G 3IP地址
  3. web服务器 1 4核心4G
  4. 采集代理服务器: n台, 88G 100G硬盘, 根据主机和网段增加
  1. 你知道的zabbix一些相关的概念有哪些?
  1. 主机(host): 要监控的网络设备,可由ipDNS名称指定。
  2. 主机组(host group): 主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模版不能互相链接,主机组通常在组用户或用户组指派监控权限时使用。
  3. 监控项(item): 一个特定监控指标的相关的数据,这些数据来自于被监控对象,itemzabbix进行数据收集的核心,没有item,就没有数据,每个item都由“key”进行标识。
  4. 触发器(trigger): 一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阈值;接收到的数据量大于阈值时,触发器状态将从“OK”转变为“Problem”,当数据量再次回到合理范围时,其状态将从“Problem”转换回“OK”。
  5. 事件(event): 即发生的一个值得关注的事件,如触发器的状态转变,新的agent或重新上线的agent的自动注册等。
  6. 动作(action): 指对于特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作)。
  7. 报警升级(escalation): 发送警报或执行远程命令的自定方案,如每隔多长时间发送一次警报,共发送多少次。
  8. 媒介(media): 发送通知的手段或通道,如EmailJabberSMS等。
  9. 通知(motification): 通过选定的媒介向用户发送的有关某事件的信息。
  10. 远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行。
  11. 模版(template): 用于快速定义被监控主机的预设条目集合,通常包含了itemtriggergraphscreenapplicationlow-level discovery rule,模板可以直接链接到单个主机。
  12. 应用(application): 用于检测web站点可用性的一个或多个HTTP请求。
  13. 前端(frontend): zabbixweb接口。

zabbix安装

安装步骤:

  1. 安装步骤
  2. - 安装Lnmp lamp
  3. - 添加zabbix拓展源
  4. https://repo.zabbix.com/zabbix/4.9/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
  5. - 安装zabbix server web前端,agent
  6. - 创建数据库 (创建一个用户叫dbuser=zabbix 它可以通过一个passwd=123456,远程访问数据库名dbname=zabbix
  7. - 导入初始架构和数据(官网给我们提供)
  8. - 配置文件中指定变量赋值
  9. - 为前端配置php zabbix6 (网页端安装时候提示你选择)
  10. - 启动zabbix server zabbix agent
  11. - 进入网页端进行配

1. 安装lamp的环境

  1. yum install httpd httpd-devel mariadb mariadb-server mariadb-devel php-common php-gd php-mbstring php-xml php-bcmath php-mysql php-cli php-devel php-pear -y

2. 添加Zabbix扩展源;

  1. # rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
  2. # yum clean all
  3. yum makecache

3. 安装Zabbix server,Web前端,agent

  1. yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
  2. (这一部分时间比较长,大家可以去喝水,休息)

4. 创建初始数据库

  1. 启动数据库及httpd
  2. [root@itlaoxin ~]# systemctl start mariadb && systemctl start httpd
  3. 授权
  4. [root@itlaoxin ~]# mysql
  5. MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
  6. Query OK, 1 row affected (0.00 sec)
  7. MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by '123456';
  8. Query OK, 0 rows affected (0.00 sec)
  9. MariaDB [(none)]> flush privileges;
  10. Query OK, 0 rows affected (0.00 sec)
  11. MariaDB [(none)]> quit
  12. Bye
  13. [root@itlaoxin ~]

5. 导入初始架构和数据,系统将提示您输入新创建的密码。

  1. [root@itlaoxin ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
  2. Enter password: 123456
  3. [root@itlaoxin ~]#

6. 为zabbix server配置数据库

  1. [root@itlaoxin ~]# vim /etc/zabbix/zabbix_server.conf
  2. 124 DBPassword=123456

7. 为Zabbix前端配置PHP

  1. [root@itlaoxin ~]# vim /etc/httpd/conf.d/zabbix.conf
  2. 改为
  3. 20 php_value date.timezone Asia/Shanghai

8. 启动Zabbix server和agent进程

启动Zabbix server和agent进程,并为它们设置开机自启:

  1. # systemctl restart zabbix-server zabbix-agent httpd
  2. # systemctl enable zabbix-server zabbix-agent httpd

9. 进入网页开始配置

http://192.168.1.18/zabbix/

image.png

image.png

image.png

image.png

image.png
image.png

现在 登陆了。 这里注意用户:Admin 密码: zabbix

注意大小写
image.png

问题重现

zabbix server is not running

解决方案:

  1. 关闭selinux,防火墙
  2. 在配置文件中配置
  3. [root@itlaoxin zabbix]# vim zabbix_server.conf
  4. DBPassword=123456

改成中文:
image.png

警告设置
image.png

这里我们只需要将进程默认值
image.png

这里提示我的服务器 进程过多,我们来查看下进程

  1. [root@itlaoxin ~]# ps -aux |wc -l
  2. 321

300,改为3000即可

等个2分钟,会自动消失告警。

安装zabbix-agent监控Linux服务器

1. 安装zabbix源

  1. cd /etc/yum.repos.d/

写一个脚本来执行:

vim zabbix.sh

  1. #!/bin/bash
  2. echo -e "请给出要安装的zabbix版本号,建议使用4.x的版本 \033[31musage:./zabbix_aliyun.sh 4.0|4.4|4.5 \033[0m"
  3. echo "例如要安装4.4版本,在命令行写上 ./zabbix_aliyun.sh 4.4"
  4. if [ -z $1 ];then
  5. exit
  6. fi
  7. VERSION=$1
  8. if [ -f /etc/yum.repos.d/zabbix.repo ];then
  9. rm -rf /etc/repos.d/zabbix.repo
  10. fi
  11. rpm -qa | grep zabbix-release && rpm -e zabbix-release
  12. rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/$VERSION/rhel/7/x86_64/zabbix-release-$VERSION-1.el7.noarch.rpm
  13. sed -i "s@zabbix/.*/rhel@zabbix/$VERSION/rhel@g" /etc/yum.repos.d/zabbix.repo
  14. sed -i 's@repo.zabbix.com@mirrors.aliyun.com/zabbix@g' /etc/yum.repos.d/zabbix.repo
  15. [ $? -eq 0 ] && echo "阿里云的zabbix源替换成功" || exit 1
  16. yum clean all
  17. yum makecache fast

使用脚本安装

  1. [root@itlaoxin18 yum.repos.d]# bash zabbix.sh 4.0

2. 安装依赖程序

  1. yum -y install zabbix-agent

3. 备份配置文件

  1. 备份配置文件
  2. [root@itlaoxin18 yum.repos.d]# cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.bak

4. 修改zabbix客户端主配置文件

  1. [root@itlaoxin18 ~]# vim /etc/zabbix/zabbix_agentd.conf
  2. 96 Server= 192.168.1.17
  3. zabbix 服务器的ip
  4. 需要注意: 在这个Server下面还有个Server=127.0.0.1 (可以删除,或者在这直接修改)
  5. 137 ServerActive=192.168.1.17
  6. 148 Hostname=itlaoxin18
  7. ZABBIX 客户端计算机IP或者hostname

5. 启动zabbix-agent服务

  1. [root@itlaoxin18 ~]# systemctl start zabbix-agent.service
  2. [root@itlaoxin18 ~]# netstat -anptu | grep zabbix
  3. tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 6154/zabbix_agentd
  4. tcp6 0 0 :::10050 :::* LISTEN 6154/zabbix_agentd
  5. [root@itlaoxin18 ~]#

6. 通过浏览器配置zabbix服务器监控linux

配置-主机-创建主机

点击群组后面的选择,选Linux servers

接下来,修改IP地址,和端口号

添加模板:

点击选择—选OSlinux,-点击添加—更新

注意: 此处如果不点击添加,是没法用的

客户端要关闭selinux和防火墙

这样我们就可以看到已经监控到了:

查看linux客户端监控效果

监控(monitoring)-graphs(图形)-群组-主机-图形:

异常处理:

如果无法监控到客户端,可以在server端,执行命令获取agent的items key值是否有返回

需要安装一个命令zabbix-get

  1. root@itlaoxin ~]# yum install zabbix-get
  2. [root@itlaoxin ~]# /usr/bin/zabbix_get -s 192.168.1.18 -k system.uname
  3. Linux itlaoxin18 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64

三. zabbix 配置文件优化实战

Zabbix监控系统组件分为Server、Proxy、Agentd端,对参数的详细了解,能够更加深入理解Zabbix监控功能,及对Zabbix进行调优,如下为三个组件常用参数详解:

(1) Zabbix_server.conf配置文件参数详解:

  1. DBHost 数据库主机地址;
  2. DBName 数据库名称;
  3. DBPassword 数据库密码;
  4. DBPort 数据库端口,默认为3306
  5. AlertScriptsPath 告警脚本存放路径;
  6. CacheSize 存储监控数据的缓存;
  7. CacheUpdateFrequency 更新一次缓存时间;
  8. DebugLevel 日志级别;
  9. LogFile 日志文件;
  10. LogFileSize 日志文件大小,超过自动切割;
  11. LogSlowQueries 数据库慢查询记录,单位毫秒;
  12. PidFile PID文件;
  13. ProxyConfigFrequency Proxy被动模式下,Server多少秒同步配置文件至proxy
  14. ProxyDataFrequency 被动模式下,Server间隔多少秒向proxy请求历史数据;
  15. StartDiscoverers 发现规则线程数;
  16. Timeout 连接Agent超时时间;
  17. TrendCacheSize 历史数据缓存大小;
  18. User Zabbix运行的用户;
  19. HistoryCacheSize 历史记录缓存大小;
  20. ListenIP 监听本机的IP地址;
  21. ListenPort 监听端口;
  22. LoadModule 模块名称;
  23. LoadModulePath 模块路径。

(2) Zabbix_Proxy.conf配置文件参数详解:

  1. ProxyMode Proxy工作模式,默认为主动模式,主动发送数据至Server
  2. Server 指定Server端地址;
  3. ServerPort ServerPORT
  4. Hostname Proxy端主机名;
  5. ListenPort Proxy端监听端口;
  6. LogFile Proxy代理端日志路径;
  7. PidFile PID文件的路径;
  8. DBHost Proxy端数据库主机名;
  9. DBName Proxy端数据库名称;
  10. DBUser Proxy端数据库用户;
  11. DBPassword Proxy端数据库密码;
  12. DBSocket Proxy数据库SOCKET路径;
  13. DBPort Proxy数据库端口号;
  14. DataSenderFrequency ProxyServer发送数据的时间间隔;
  15. StartPollers Proxy程池数量;
  16. StartDiscoverers Proxy端自动发现主机的线程数量;
  17. CacheSize 内存缓存配置;
  18. StartDBSyncers 同步数据线程数;
  19. HistoryCacheSize 历史数据缓存大小;
  20. LogSlowQueries 慢查询日志记录,单位为毫秒;
  21. Timeout 超时时间。

3)Zabbix_agentd.conf配置文件参数详解:

  1. EnableRemoteCommands 运行服务端远程至客户端执行命令或者脚本;
  2. Hostname 客户端主机名;
  3. ListenIP 监听的IP地址;
  4. ListenPort 客户端监听端口;
  5. LoadModulePath 模块路径;
  6. LogFile 日志文件路径;
  7. PidFile PID文件名;
  8. Server 指定Server IP地址;
  9. ServerActive Zabbix主动监控serverip地址;
  10. StartAgents Agent启动进程,如果设置为0,表示禁用被动监控;
  11. Timeout 超时时间
  12. User 运行Zabbix的用户;
  13. UserParameter 用户自定义key
  14. BufferSize 缓冲区大小;
  15. DebugLevel Zabbix日志级别。

四. Zabbix自动发现及注册

熟练通过Zabbix监控平台监控单台客户端之后,企业中有成千上万台服务器,如果手工添加会非常耗时间,造成大量的人力成本的浪费,有没有什么好的自动化添加客户端的方法呢?

Zabbix自动发现就是为了解决批量监控而设计的功能之一,什么是自动发现呢,简单来说就是Zabbix Server端可以基于设定的规则,自动批量的去发现局域网若干服务器,并自动把服务器添加至Zabbix监控平台,省去人工手动频繁的添加,节省大量的人力成本。

Zabbix相对于Nagios、Cacti监控来说,如果要想批量监控,Nagios、Cacti需要手动单个添加设备、分组、项目、图像,也可以使用脚本,但是不能实现自发方式添加。

Zabbix最大的特点之一就是可以批量自动主机并监控,利用发现(Discovery)模块,实现自动发现主机、自动将主机添加到主机组、自动加载模板、自动创建项目(Items)、自动创建监控图像,操作步骤如下:

1) 配置自动发现规则

配置—自动发现-自动发现规则

备注解释:

  1. Name 规则名称;
  2. Discovery by proxy : 通过代理探索;
  3. IP range : zabbix_server 探索区域的IP范围;
  4. Delay : 搜索一次的时间间隔;
  5. Checks : 检测方式,如用ping方式去发现主机,zabbix_server需安装fping,此处使用Agent方式发现;
  6. Device uniqueness criteria: IP地址作为被发现主机的标识。

2) zabbix客户端安装agent

由于发现规则里选择checks方式为Agent,所以需在所有被监控的服务器安装zabbix Agent,安装的方法可以手动安装,也可以使用Shell脚本,附Zabbix客户端安装脚本,脚本运行方法:sh auto_install_zabbix.sh。

a. 安装zabbix源

  1. cd /etc/yum.repos.d/

写一个脚本来执行:

vim zabbix.sh

  1. #!/bin/bash
  2. echo -e "请给出要安装的zabbix版本号,建议使用4.x的版本 \033[31musage:./zabbix_aliyun.sh 4.0|4.4|4.5 \033[0m"
  3. echo "例如要安装4.4版本,在命令行写上 ./zabbix_aliyun.sh 4.4"
  4. if [ -z $1 ];then
  5. exit
  6. fi
  7. VERSION=$1
  8. if [ -f /etc/yum.repos.d/zabbix.repo ];then
  9. rm -rf /etc/repos.d/zabbix.repo
  10. fi
  11. rpm -qa | grep zabbix-release && rpm -e zabbix-release
  12. rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/$VERSION/rhel/7/x86_64/zabbix-release-$VERSION-1.el7.noarch.rpm
  13. sed -i "s@zabbix/.*/rhel@zabbix/$VERSION/rhel@g" /etc/yum.repos.d/zabbix.repo
  14. sed -i 's@repo.zabbix.com@mirrors.aliyun.com/zabbix@g' /etc/yum.repos.d/zabbix.repo
  15. [ $? -eq 0 ] && echo "阿里云的zabbix源替换成功" || exit 1
  16. yum clean all
  17. yum makecache fast

b. 使用脚本安装

  1. [root@itlaoxin19 yum.repos.d]# bash zabbix.sh 4.0
  2. # yum -y install zabbix-agent

C. 备份配置文件

  1. 备份配置文件
  2. [root@itlaoxin19 yum.repos.d]# cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.bak

d. 修改配置文件

  1. [root@itlaoxin18 ~]# vim /etc/zabbix/zabbix_agentd.conf
  2. 96 Server= 192.168.1.17
  3. zabbix 服务器的ip
  4. 需要注意: 在这个Server下面还有个Server=127.0.0.1 (可以删除,或者在这直接修改)
  5. 137 ServerActive=192.168.1.17
  6. 148 Hostname=itlaoxin19
  7. ZABBIX 客户端计算机IP或者hostname

修改hostname

  1. [root@zmedu63 yum.repos.d]# hostnamectl set-hostname itlaoxin19
  2. [root@zmedu63 yum.repos.d]# bash
  3. [root@itlaoxin19 yum.repos.d]#

e. 启动zabbix-agent服务

  1. [root@itlaoxin19 ~]# systemctl start zabbix-agent.service
  2. [root@itlaoxin19 ~]# netstat -anptu | grep zabbix
  3. tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 6154/zabbix_agentd
  4. tcp6 0 0 :::10050 :::* LISTEN 6154/zabbix_agentd
  5. [root@itlaoxin18 ~]#

临时性问题:

安装完discory后,发现告警:

Zabbix discoverer processes more than 75% busy

原因:

配置的每个discovery任务在一定时间内占用1个discovery进程,而zabbix_server.conf中默认配置只有1个discovery(被注释,默认生效);

同时为了快速验证自动发现效果,将discovery任务的”Delay”时间由默认的3600s设置成60s。

总结:两个原因导致平均时间内discovery processes过高而报警。

解决办法:

  1. [root@itlaoxin-17 ~]# vim /etc/zabbix/zabbix_server.conf
  2. 244 StartDiscoverers=60
  3. 497 UnavailableDelay=360
  4. [root@itlaoxin-17 ~]# systemctl restart zabbix-server.service

等两分钟后,自动告警自动消失

3) 创建发现Action

Zabbix发现规则创建完毕,客户端Agent安装完后,被发现的IP主机不会自动添加至Zabbix监控列表,需要添加发现动作,添加方法如下:

配置—动作—创建动作

可以自动创建动作,也可以使用原来的动作

查看自动发现效果:

五. zabbix 监控告警实战

1. 邮件告警

Zabbix监控服务端、客户端都已经部署完成,被监控主机已经添加,Zabiix监控运行正常,通过查看Zabbix监控服务器,可以了解服务器的运行状态是否正常,运维人员不会时刻登录Zabbix监控平台刷新,查看服务器的状态。

可以在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到设定的触发器预设值时,不管任何时候,会自动发送报警邮件、微信信息到指定的人员,运维人员收到信息有利于第一时间解决故障。Zabbix邮件报警设置步骤如下:

=====================================================

1) 设置邮件模板及邮件服务器

2) 配置接收报警的邮箱

3) 添加报警触发器

报警邮件标题可以使用默认信息,亦可使用如下中文报警内容:

  1. 名称:Action-Email
  2. 默认标题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
  3. 默认信息:
  4. 告警主机:{HOSTNAME1}
  5. 告警时间:{EVENT.DATE} {EVENT.TIME}
  6. 告警等级:{TRIGGER.SEVERITY}
  7. 告警信息: {TRIGGER.NAME}
  8. 告警项目:{TRIGGER.KEY1}
  9. 问题详情:{ITEM.NAME}:{ITEM.VALUE}
  10. 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
  11. 事件ID:{EVENT.ID}

恢复邮件标题可以使用默认信息,亦可使用如下中文报警恢复内容:

  1. 恢复标题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
  2. 恢复信息:
  3. 告警主机:{HOSTNAME1}
  4. 告警时间:{EVENT.DATE} {EVENT.TIME}
  5. 告警等级:{TRIGGER.SEVERITY}
  6. 告警信息: {TRIGGER.NAME}
  7. 告警项目:{TRIGGER.KEY1}
  8. 问题详情:{ITEM.NAME}:{ITEM.VALUE}
  9. 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
  10. 事件ID:{EVENT.ID}

4) 配置监控apache,然后模拟apache故障

a. 安装apache并启动

  1. [root@itlaoxin19 ~]# yum install httpd
  2. [root@itlaoxin19 ~]# systemctl restart httpd

设置zabbixagent 允许客户端远程执行命令, 0表示拒绝,1表示允许

  1. [root@itlaoxin19 ~]# vim /etc/zabbix/zabbix_agentd.conf
  2. 73 EnableRemoteCommands=1

配置-主机-监控项\

5.在zabbix的web界面添加主机**

configuration(配置)–>Hosts(主机)–>Create host(创建主机)

16.1.2 为主机链接监控模板

链接监控模板Template OS Linux

注意:此处一定要点添加后,进行更新,否则模板链接不上。

刷新浏览器,然后等待几十秒,即可看到可用性ZBX变为绿色。

16.1.3 为主机添加监控项

然后通过zabbix-get测试键值是否可以获取到数据,此操作在zabbix-server服务端进行。

  1. [root@itlaoxin-17 alertscripts]# zabbix_get -s 192.168.1.19 -k net.tcp.listen[80]
  2. 0

若返回值是1的话,说明Apache端口正在监听,也就是httpd服务是运行。
若返回值是0的话,说明Apache端口没有监听,也就是httpd服务是未运行。

创建触发器

创建图形

查看图形:

测试apache端口异常

[root@itlaoxin19 ~]# systemctl stop httpd

查看监控

邮件没有发送成功。

我们来设置邮件告警账号信息(用下面的mail邮件实现流程)

[root@itlaoxin63 ~]# vim /etc/mail.rc #在此文件中间,随机找个位置插入以下内容:

  1. [root@itlaoxin tmp]# cat /etc/mail.rc
  2. set from=xinsz08vip@163.com smtp=smtp.163.com
  3. set smtp-auth-user=xinsz08vip smtp-auth-password=CNSYCIQAOUUGOSOA smtp-auth=login

set from=xinsz08vip@163.com smtp=smtp.163.com # 指定发件人的邮箱
set smtp-auth-user=xinsz08vip # 写自己发件人的邮箱账号
smtp-auth-password=CNSYCIQAOUUGOSOA # 写发件人邮箱的授权码
smtp-auth=login

测试邮件发送:

[root@itlaoxin tmp]# mail -s “demo” xinsz08vip@163.com < /tmp/ilog

或者:

echo “zabbix test” |mail -s “zabbix” xinsz08vip@163.com

[root@itlaoxin-17 ~]# cd /usr/lib/zabbix/alertscripts/

[root@itlaoxin-17 alertscripts]# mv sendEmail.sh sendmail.sh
[root@itlaoxin-17 alertscripts]# vim sendmail.sh
[root@itlaoxin-17 alertscripts]# chown zabbix.zabbix sendmail.sh
[root@itlaoxin-17 alertscripts]# chmod +x sendmail.sh

==========================================================

1) mail邮件实现流程

  1. 1.配置zabbix-server服务端mailx,并在zabbix-server.conf配置文件的脚本路径中添加邮件脚本;
  2. 2.配置web界面选项的动作,报警媒介类型,
  3. 3.在用户中添加告警媒介,设置类型,收件人等选项

a. 安装mailx

yum install mailx -y

b. 修改配置文件

vim /etc/mail.rc

  1. set from=xinsz08vip@163.com smtp=smtp.163.com
  2. set smtp-auth-user=xinsz08vip smtp-auth-password=CNSYCIQAOUUGOSOA smtp-auth=login

c. 测试是否正常

echo “zabbix test mail” |mail -s “zabbix” xinsz08vip@163.com

d. 编写发邮件脚本

/usr/lib/zabbix/alertscripts

  1. [root@itlaoxin-17 alertscripts]# cat mailx.sh
  2. #!/bin/bash
  3. #send mail
  4. messages=echo $3 | tr '\r\n' '\n'
  5. subject=echo $2 | tr '\r\n' '\n'
  6. echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

e. 修改权限

  1. touch /tmp/mailx.log
  2. chown -R zabbix.zabbix /tmp/mailx.log
  3. chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
  4. chown -R zabbix.zabbix /usr/lib/zabbix/

f. 测试脚本发送邮件

[root@itlaoxin-17 alertscripts]# ./mailx.sh xinsz08vip@163.com

2) web端配置流程

配置报警媒介回到zabbix-server 界面,在告警媒介添加新的告警

{ALERT.SENDTO}:发送给谁
{ALERT.SUBJECT}:概要
{ALERT.MESSAGE}:告警内容

  1. 操作选项中,消息内容要把需要的报警信息填进去,会在邮件中显示,操作细节必须填写,要设定发送邮件给定的主机或主机组,恢复操作细节也是,但也可以不写,不写在事故恢复时,不会发邮件告诉我事故已经没有了,,
  2. 操作-->消息内容:
  3. 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
  4. 告警主机:{HOSTNAME1}
  5. 告警时间:{EVENT.DATE} {EVENT.TIME}
  6. 告警等级:{TRIGGER.SEVERITY}
  7. 告警信息: {TRIGGER.NAME}
  8. 告警项目:{TRIGGER.KEY1}
  9. 问题详情:{ITEM.NAME}:{ITEM.VALUE}
  10. 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
  11. 事件ID:{EVENT.ID}
  12. 恢复操作-->消息内容:
  13. 恢复故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
  14. 恢复主机:{HOSTNAME1}
  15. 恢复时间:{EVENT.DATE} {EVENT.TIME}
  16. 告警等级:{TRIGGER.SEVERITY}
  17. 告警信息: {TRIGGER.NAME}
  18. 恢复告警项目:{TRIGGER.KEY1}
  19. 问题详情:{ITEM.NAME}:{ITEM.VALUE}
  20. 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
  21. 事件ID:{EVENT.ID}

3) 关闭apache进行测试

systemctl stop httpd

2. 微信告警

六. zabbix +grafana

包下载比较慢

可以上传

可以使用清华源 https://mirrors.tuna.tsinghua.edu.cn/

  1. wget https://dl.grafana.com/oss/release/grafana-6.3.5-1.x86_64.rpm
  2. sudo yum -y localinstall grafana-6.3.5-1.x86_64.rpm
  3. systemctl daemon-reload
  4. systemctl enable grafana-server
  5. systemctl start grafana-server

[root@itlaoxin zabbix]# systemctl start grafana-server
[root@itlaoxin zabbix]# netstat -plnt |grep 3000
tcp6 0 0 :::3000 :::* LISTEN 79905/grafana-serve

网页端管理:

ip+3000

账号: admin

密码: admin

密码改为: jfedu123

安装zabbix插件需要网比较好(vpn0

grafana-cli plugins

  1. [root@192 grafana]``# cd /var/lib/grafana/plugins/``[root@192 plugins]``# grafana-cli plugins install alexanderzobnin-zabbix-app<br>[root@192 plugins]# systemctl restart grafana-server

zabbix安装 - 图12

zabbix安装 - 图13

zabbix安装 - 图14

zabbix安装 - 图15

zabbix安装 - 图16

zabbix安装 - 图17

zabbix安装 - 图18

zabbix安装 - 图19

zabbix安装 - 图20

第二种方法

  1. [root@192 plugins]``# yum -y install grafana-6.7.3-1.x86_64.rpm``[root@192 plugins]``# systemctl start grafana-server``[root@192 ~]``# systemctl start grafana-server``[root@192 ~]``# cd /var/lib/grafana/plugins/``[root@192 plugins]``# pwd``/var/lib/grafana/plugins``[root@192 plugins]``# ll``总用量 0``[root@192 plugins]``# tar zxf zabbix-plugins.tar.gz``[root@192 plugins]``# systemctl restart grafana-server``[root@192 plugins]``#

zabbix安装 - 图21

zabbix安装 - 图22

zabbix安装 - 图23

zabbix安装 - 图24

微信报警:

微信报警脚本:

  1. # vim weixin.sh
  2. #!/bin/bash
  3. CorpID="wwd5932acb806b41850c" # 你的企业id
  4. Secret="BbUbI_g_4zwvgYjlRinxBu5V_xK8R1VRT-QiNLYW5O0" #你的SecretID
  5. GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
  6. Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
  7. # echo $Token
  8. PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
  9. function body(){
  10. local int agentid=1000002 # 你的agentdid
  11. local UserID="@all" # 发送的用户ID
  12. local PartyID=1 # 部门ID
  13. local Msg=$(echo "$@" | cut -d" " -f3-) # 发送给所有人
  14. printf '{\n'
  15. printf '\t"touser": "'"$UserID"\"",\n"
  16. printf '\t"toparty": "'"$PartyID"\"",\n"
  17. printf '\t"msgtype": "text",\n'
  18. printf '\t"agentid": "'"$agentid"\"",\n"
  19. printf '\t"text": {\n'
  20. printf '\t\t"content": "'"$Msg"\""\n"
  21. printf '\t},\n'
  22. printf '\t"safe":"0"\n'
  23. printf '}\n'
  24. }
  25. /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL

设置总部门名称添加成员

创建应用:

收集信息

  1. 部门ID
    部门ID为1
  2. AgentID 和secret ID

AgentId 1000002

Secret N4z_3sY33VrgTIoGrrhRtVdcfQxDnd0zgc4MpWMzCAs

  1. 企业ID

企业ID

wwcff54e56d9d45e1c

配置微信报警脚本

[root@itlaoxin-17 ~]# cd /usr/lib/zabbix/alertscripts/
[root@itlaoxin-17 alertscripts]#

  1. #!/bin/bash
  2. CorpID="wwcff54e56d9d45e1c"
  3. Secret="N4z_3sY33VrgTIoGrrhRtVdcfQxDnd0zgc4MpWMzCAs"
  4. GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
  5. Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
  6. # echo $Token
  7. PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
  8. function body(){
  9. local int agentid=1000002
  10. local UserID="@all"
  11. local PartyID=1
  12. local Msg=$(echo "$@" | cut -d" " -f3-)
  13. printf '{\n'
  14. printf '\t"touser": "'"$UserID"\"",\n"
  15. printf '\t"toparty": "'"$PartyID"\"",\n"
  16. printf '\t"msgtype": "text",\n'
  17. printf '\t"agentid": "'"$agentid"\"",\n"
  18. printf '\t"text": {\n'
  19. printf '\t\t"content": "'"$Msg"\""\n"
  20. printf '\t},\n'
  21. printf '\t"safe":"0"\n'
  22. printf '}\n'
  23. }
  24. /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL

测试:

[root@itlaoxin-17 alertscripts]# chmod 777 weixin.sh
[root@itlaoxin-17 alertscripts]# ./weixin.sh test
{“errcode”:0,”errmsg”:”ok”,”invaliduser”:””}[root@itlaoxin-17 alertscripts]#

{ALERT.SENDTO}:发送给谁
{ALERT.SUBJECT}:概要
{ALERT.MESSAGE}:告警内容

参考文档 https://blog.csdn.net/whell_scl/article/details/106722721

七. zabbix 自定义告警监控TCP链接数

1. 获取TCP连接数相关方法

方法一:

  1. [root@itlaoxin162 ~]# netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}'
  2. LISTEN 9
  3. ESTABLISHED 1

解释:

  1. netstat
  2. -a 显示所有连接(显示的是本地计算机的netbios名字+端口
  3. -n 表示显示本地IP地址+端口
  4. NF :当前记录里域的个数

方法二:

  1. [root@itlaoxin162 ~]# ss -ant | awk 'NR>1 {a[$1]++} END {for (b in a) print b,a[b]}'
  2. LISTEN 9
  3. ESTAB 1
  4. [root@itlaoxin162 ~]#

2. TCP 状态的信息描述

  1. ESTABLISHED socket已经建立连接
  2. CLOSED socket没有被使用,无连接
  3. CLOSING 服务器端和客户端都同时关闭连接
  4. CLOSE_WAIT 等待关闭连接
  5. TIME_WAIT 表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态
  6. LAST_ACK 远端关闭,当前socket被动关闭后发送FIN报文,等待对方ACK报文
  7. LISTEN 监听状态
  8. SYN_RECV 接收到SYN报文
  9. SYN_SENT 已经发送SYN报文
  10. FIN_WAIT1 The socket is closed, and the connection is shutting down
  11. FIN_WAIT2 Connection is closed, and the socket is waiting for a shutdown from the remote end.

实操方法:

  1. 第一步:导入tcp状态监控模板
  2. 可以从网上下载tcp状态监控模板,也可以自定义状态监控模板,在这里就不演示了。
  3. 第二步:编写tcp状态监控脚本
  4. #!/bin/bash
  5. if [ $# -ne 1 ];then
  6. echo "Follow the script name with an argument "
  7. fi
  8. case $1 in
  9. established) #socket已经建立连接
  10. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | grep -w ESTABLISHED | cut -d " " -f 2`
  11. echo $result
  12. ;;
  13. listen) #监听状态
  14. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | grep -w LISTEN | cut -d " " -f 2`
  15. echo $result
  16. ;;
  17. timewait) #表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态
  18. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | grep -w TIME_WAIT | cut -d " " -f 2`
  19. echo $result
  20. ;;
  21. closed)
  22. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | awk '/CLOSED/{print $2}'`
  23. echo $result
  24. ;;
  25. closewait)
  26. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | awk '/CLOSE_WAIT/{print $2}'`
  27. if [ "$result" == "" ];then
  28. echo 0
  29. else
  30. echo $result
  31. fi
  32. ;;
  33. closing)
  34. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | awk '/CLOSING/{print $2}'`
  35. echo $result
  36. ;;
  37. finwait1)
  38. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | awk '/FIN_WAIT1/{print $2}'`
  39. echo $result
  40. ;;
  41. finwait2)
  42. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | awk '/FIN_WAIT2/{print $2}'`
  43. echo $result
  44. ;;
  45. lastack)
  46. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | awk '/LAST_ACK /{print $2}'`
  47. echo $result
  48. ;;
  49. synrecv)
  50. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | awk '/SYN_RECV/{print $2}'`
  51. echo $result
  52. ;;
  53. synsent)
  54. result=`netstat -an | awk '/^tcp/ {a[$NF]++} END {for (b in a) print b,a[b]}' | awk '/SYN_SENT/{print $2}'`
  55. echo $result
  56. ;;
  57. *)
  58. echo -e "\e[033mUsage: sh $0 [closed|closing|closewait|synrecv|synsent|finwait1|finwait2|listen|established|lastack|timewait]\e[0m"
  59. esac

ubuntu 安装zabbix 6.0

  1. 安装LAMP
    sudo apt install apache2 -y
    systemctl status apache2
    安装MySQL
    sudo apt install mysql-server mysql-client

登陆MySQL

systemctl status mysql.service 已经是启动状态

无法登陆,使用内置用户登陆

  1. itlaoxin@itlaoxin:~/桌面$ sudo cat /etc/mysql/debian.cnf
  2. Automatically generated for Debian scripts. DO NOT TOUCH!
  3. [client]
  4. host = localhost
  5. user = debian-sys-maint
  6. password = 59VEDvWjUwi9H20O
  7. socket = /var/run/mysqld/mysqld.sock
  8. [mysql_upgrade]
  9. host = localhost
  10. user = debian-sys-maint
  11. password = 59VEDvWjUwi9H20O
  12. socket = /var/run/mysqld/mysqld.sock

itlaoxin@itlaoxin:~/桌面$ mysql -udebian-sys-maint -p59VEDvWjUwi9H20O

  1. mysql> use mysql
  2. mysql> select host,user,authentication_string from user;
  3. +-----------+------------------+------------------------------------------------------------------------+
  4. | host | user | authentication_string |
  5. +-----------+------------------+------------------------------------------------------------------------+
  6. | localhost | debian-sys-maint | $A$005$2fm=sE
  7. 9uI
  8. -#}\ZMgP158asxx3qHMH47z1RiLWLmzjRnC6IYO5XIcrjED |
  9. | localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
  10. | localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
  11. | localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
  12. | localhost | root | |
  13. +-----------+------------------+------------------------------------------------------------------------+
  14. 5 rows in set (0.00 sec)
  15. mysql>

发现root密码为空

修改root密码

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘Passwd@jfedu123!’;

退出重新登陆,测试下

安装php

sudo apt-get install php

php -v

关联php与MySQL,与php

itlaoxin@itlaoxin:~/桌面$ sudo apt-get install libapache2-mod-php

sudo apt-get install php-mysql

测试环境:

itlaoxin@itlaoxin:~/桌面$ cd /var/www/html/
itlaoxin@itlaoxin:/var/www/html$ sudo touch test.php test.html
itlaoxin@itlaoxin:/var/www/html$

  1. itlaoxin@itlaoxin:/var/www/html$ vim test.php
  2. itlaoxin@itlaoxin:/var/www/html$ sudo vim test.php
  3. itlaoxin@itlaoxin:/var/www/html$ sudo vim test.html
  4. itlaoxin@itlaoxin:/var/www/html$ cat test.html
  5. <?php
  6. phpinfo();
  7. ?>
  8. itlaoxin@itlaoxin:/var/www/html$

参考文档:https://www.cnblogs.com/hugboy/p/12865445.html

centos8-stream https://cloud.tencent.com/developer/article/1945597