zabbix监控服务说明

zabbix软件结构组成

zabbix-server 监控服务端

zabbix-agent 监控客户端

zabbix-web 监控网站服务

php 处理动态请求

mysql 数据库存储监控数据

zabbix-proxy 负责收集agent信息汇总告知zabbix-server

zabbix软件安装部署过程

软件选择: 4.0 LTS(long time support 长期支持版)

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警









01.zabbix服务端部署软件流程

第一个里程: 下载安装zabbix yum 源文件

LTS long time support

1) aliyun zabbix yum 源

2) 清华源

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm  -- 老版本

3) 官方源

https://www.zabbix.com/documentation/4.0/manual/installation/install_from_packages/rhel_centos

# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm


zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_02

   







第二个里程: 下载安装zabbix服务端相关软件

[root@zabbix yum.repos.d]# cat /etc/resolv.conf

# Generated by NetworkManager

nameserver 8.8.8.8

nameserver 114.114.114.114

修改DNS后需要重启network,如果安装过程未成功但有进度条,可以多安装几次~

zabbix服务程序软件: zabbix-server-mysql

zabbix服务web软件: zabbix-web-mysql httpd php

数据库服务软件: mariadb-server

[root@zabbix yum.repos.d]# yum install -y zabbix-server-mysql zabbix-web-mysql httpd php mariadb-server

   

第三个里程: 软件配置

vim /etc/zabbix/zabbix_server.conf

DBPassword=zabbix

vim /etc/httpd/conf.d/zabbix.conf

php_value date.timezone Asia/Shanghai

   

第四个里程: 编写配置数据库服务

[root@zabbix /]# systemctl start  mariadb

[root@zabbix /]# systemctl enable   mariadb

[root@zabbix /]# mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; ---创建zabbix数据库--zabbix

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; ---创建数据库管理用户

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit

在zabbix数据库中导入相应的表信息

[root@zabbix /]# zcat /usr/share/doc/zabbix-server-mysql-4.0.19/create.sql.gz|mysql -uzabbix -pzabbix zabbix

zabbix修改和查看登录密码:mysql  -e "select * from zabbix.users\G"

   

第五个里程: 启动zabbix程序相关服务

[root@zabbix /]# systemctl start zabbix-server.service httpd mariadb.service

[root@zabbix /]# systemctl enable  zabbix-server.service httpd mariadb.service

   说明: 至此zabbix-server命令行操作结束

LNMP: nginx php mysql

LAMP: apache(php模块) mysql

   

第六个里程: 登录zabbix服务端web界面, 进行初始化配置

http://192.168.157.71/zabbix/setup.php

[root@zabbix /]# chown -R apache  /usr/share/zabbix/assets/    

10051  zabbix-server 服务端端口号

10050  zabbix-agent  客户端端口号

/etc/zabbix/web/zabbix.conf.php   -- 记录web页面初始化信息

   

第七个里程: 登录zabbix服务web页面

用户名Admin 密码zabbix

   

02.监控客户端部署流程

第一个里程: 下载安装zabbix yum 源文件

   LTS long time support

   1) aliyun zabbix yum 源

   2) 清华源

[root@web01 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

   

第二个里程: 下载安装zabbix客户端软件

[root@web01 ~]yum install -y zabbix-agent

或者

[root@web01 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm

   

第三个里程: 编写zabbix客户端配置文件

[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf

98 Server=172.16.1.71

   

第四个里程: 启动zabbix-agent服务

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

[root@web01 ~]# netstat -lntup|grep 10050

   tcp      0     0 0.0.0.0:10050           0.0.0.0:*            LISTEN      4509/zabbix_agentd  

   tcp      0     0 :::10050                :::*                 LISTEN      4509/zabbix_agentd

03. 实现zabbix默认第一台主机的监控

第一步: 配置---主机---创建主机(创建要监控的主机)

第二步: 配置监控的主机

主机信息中: 名称 主机组 监控的主机地址

模板信息中: 指定需要链接的模板信息

第三步: 保存退出,进行监控检查

检查主机有没有变绿

监测--最新数据

04. 实现zabbix自定义配置监控

监控项: 可以自定义监控收集主机的信息

应用集: 将多个类似的监控项进行整合 便于查看检查

模板:   将多个监控项 触发器 图形都配置在模板中, 方便多个监控的主机进行调用

动作: 指定将报警信息发送给谁OK/定义报警的信息ok/定义报警的类型OK(邮件 微信 短信电话)

PS: 宏信息定义方法: https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location

触发器: 可以实现报警提示(条件表达式),默认页面提示报警

图形:   将多个图整合成一张,便于分析数据

报警媒介: 定义报警的方式

   

05. 实现zabbix自定义监控---监控项作用

简单的自定义监控配置(单一服务状态)

需求: 监控nginx服务是否启动

1) 在zabbix-agent进行配置文件编写

第一个历程: 编写自定义监控命令

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_03




第二个历程: 编写zabbix-agent配置文件

第一种方法: 直接修改zabbix-agent配置文件参数

UserParameter=

第二种方法: 在zabbix_agentd.d/目录中编写自定义监控文件

UserParameter=键(变量名),值(变量信息)

[root@web01 ~]# cat  /etc/zabbix/zabbix_agentd.d/web_server.conf

UserParameter=web_state,ps -ef|grep -c [n]ginx

第三个历程: 重启zabbix-agent服务

systemctl restart zabbix-agent

2) 在zabbix-server命令行进行操作

第一个历程: 检测自定义监控信息是否正确

[root@zabbix ~]# yum install -y zabbix-get

[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k web_state

2

3) 在zabbix-server网站页面进行配置

第一个历程: 进入到创建监控项页面

配置---主机---选择相应主机的监控项

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_04








第二个历程: 监控项页面如何配置

名称 键值 更新间隔时间 应用集

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_05













第三个历程: 检查是否收集到监控信息

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_06










复杂的自定义监控配置(多个服务状态)

1) 在zabbix-agent端编写配置文件

[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/web_server.conf

UserParameter=server_status[*],systemctl status $1 |grep 'Active:'|cut -c 12-27

2) 在zabbix-server命令测试

[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k server_status[sshd]

active (running)

[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k server_status[nginx]

active (running)

3) 修改配置页面

键值: server_status[sshd]

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_07






06. 实现zabbix报警功能---触发器/动作

报警方式:

001. 页面提示信息报警(值班运维)   OK

002. 邮件信息报警                   OK

003. 微信功能报警 OK

004. 短信报警/电话报警 OK

001.页面提示和声音报警实践

第一个历程: 创建触发器

配置---主机---选择相应监控主机触发器---创建触发器

设置好表达式

{web01:server_state[nginx].last()}<=2

{监控主机名称:键值名称.调用的表达式函数}<=2

表达式总结:

last()   收集到最新信息(数值)  *****

max() 在一定周期内,收集到的最大值

min()    在一定周期内,收集到的最小值

diff()   在一定时间内,判断收集的信息是否不同

change() 在一定时间内,判断收集的信息是否不同

avg()    取一段时间的平均值  

企业工作遇见告警信息处理思路步骤:

第一步: 看到告警提示信息,定位主机信息

第二步: 看到主机信息之后,定位报警原因 获得监控项Key值

第三步: 根据key值信息,最终获得报警原因

第二个历程: 修改网页配置,有提升声音报警

小人头---正在发送消息---前端信息勾选

PS: 如何修改报警铃声:

1) 找到文件所在目录(在站点目录中找)

find /usr/share/zabbix -type f -name "alarm_disaster.wav"

2) 将原有声音文件做替换

替换成指定声音文件

3) 需要清除浏览器缓存,进行测试

<option

002.邮件信息报警

第一个历程: 创建触发器

配置---主机---选择相应监控主机触发器---创建触发器

设置好表达式

{web01:server_state[nginx].last()}<=2

{监控主机名称:键值名称.调用的表达式函数}<=2

第二个历程: 修改动作配置

配置---动作---将默认动作进行开启

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_08













第三个历程: 建立和163邮箱服务关系

管理---报警媒介类型---创建报警媒介(密码为授权码)

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_09















第四个历程: 定义接收报警的邮件地址

小人头--报警媒介--设置收件人信息

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_10









zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_11zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_12






















标红处也选通过所有媒介,也可以自定义

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_13
















zabbix报警模板

默认标题:

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

消息内容:

告警主机:{HOST.NAME}

告警地址:{HOST.IP}

监控项目:{ITEM.NAME}

当前状态:{TRIGGER.STATUS}

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

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

恢复告警主机:{HOST.NAME}

恢复告警地址:{HOST.IP}

监控项目:{ITEM.NAME}

当前状态:{TRIGGER.STATUS}

恢复告警信息:{ITEM.NAME}:{ITEM.VALUE}

恢复告警时间:{EVENT.DATE}{EVENT.RECOVERY.TIME}

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_14















如上图,第一个动作触发后一个小时内未解决,则进行第二个动作

宏:https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location

003.微信报警

第一个历程: 需要注册企业微信,并进行配置

我的企业:

01. 获取企业id: ww57b5bc8daa55e0fb

02. 获取企业二维码: 允许员工加入

管理工具:

01. 成员加入---进行审核通过

应用小程序:

01. 进行创建

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_15








zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_16










02. 收集程序信息

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_17








第二个历程: 编写脚本(python)

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_18






AlertScriptsPath=/usr/lib/zabbix/alertscripts  --- 放置告警脚本

脚本一:

[root@zabbix alertscripts]# cat wechat.py

#!/usr/bin/env python

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

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='ww57b5bc8daa55e0fb'

appsecret='AQKUxFx2bB9lLIzXbKQZsOcnjpgfV8WMNfjbu-Isebk'

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)

测试

[root@zabbix alertscripts]# ./wechat.py BaiLei 山崩地裂水倒流,神见神抖鬼见愁 无情!

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_19






脚本二:

[root@zabbix-server alertscripts]# vim wechat.py

#!/usr/bin/python

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

import requests

import json

import sys

import os

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

api_url = " https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx"   #这个是企业微信机器人生成的webhook地址,修改为你的即可。

def msg(text):

   json_text= {

    "msgtype": "text",

       "text": {

           "content": text

       },

   }

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

if __name__ == '__main__':

   text = sys.argv[1]

   msg(text)

测试

[root@zabbix alertscripts]# ./wechat.py BaiLei.py 山崩地裂水倒流,神见神抖鬼见愁 无情!

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_20








执行脚本报错问题解决:

01. 问题: No module named requests

[root@zabbix ~]# yum install -y python-pip

[root@zabbix ~]# pip install requests

02. 问题: 脚本执行语法

[root@zabbix alertscripts]# ./wechat.py BaiLei 山崩地裂水倒流,神见神抖鬼见愁 无情!

参数分别为:

收件人 BaiLei

标题 山崩地裂水倒流,神见神抖鬼见愁

内容 无情!

---------

第三个历程: 修改添加报警媒介---定义了发微信配置

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_21









---------

第四个历程: 配置接收微信的人员

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_22







---------

第五个历程: 触发报警进行测试

zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_23






zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_24




zabbix学习笔记_zabbix安装配置;邮件报警;微信报警_25