首页 > 技术文章 > zabbix(二)

cjwnb 2019-11-25 14:58 原文

监控组件之间的关系



微信报警


第一步: 注册企业微信


企业微信注册网址(如果有直接登陆即可)
https://work.weixin.qq.com


API接口文档

https://work.weixin.qq.com/api/doc#90000/90003/90487


在企业微信中需要获取知道的信息

  1. CorpID(获取方法:企业微信中我的企业 -> 企业信息)
  2. User(获取方法:企业微信中通信录点击要接收消息者的名字)
  3. Partyid(获取方法:企业微信中通信录左侧部门的选择按钮显示部门ID)[群发时需要]
  4. Agentid(获取方法:在企业微信中企业用用中创建自建应用中,所以微信监控需要在微信企业中自建一个应用)
  5. Secret(获取方法:同 Agentid)

第二步: 准备python脚本

#!/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'
                    )

# 企业微信id
corpid = 'ww2ae2f5ee2a7764e4'

# app的Secret
appsecret = 'f-J3XOvCyAjtO4FkMTy4w6VzSC423tO8caskhMt8G8A'

# 应用id
agentid = 1000002

# 获取accesstoken
token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (corpid, appsecret)
req = requests.get(token_url)
accesstoken = req.json()['access_token']

# 发送消息
msgsend_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' % accesstoken

touser = sys.argv[1]
subject = sys.argv[2]
message = "%s\n\n%s" % (sys.argv[2], sys.argv[3])

params = {
    'touser': touser,
    'msgtype': "text",
    "agentid": agentid,
    "text": {
        "content": message
    },
    "safe": 0
}

req = requests.post(msgsend_url, data=json.dumps(params))

logging.info('sendto: %s;;subject: %s;;message: %s'%(touser, subject, message))

第三步: 配置报警媒介类型为脚本

参考文档: https://www.zabbix.com/documentation/3.0/manual/introduction/whatsnew300



第四步: 设置收件人


创建自定义图形


第一步: 替换zabbix的字体文件


  • 找到zabbix的站点目录
$  grep -Ev '^$|#' /etc/httpd/conf.d/zabbix.conf 
Alias /zabbix /usr/share/zabbix
<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
    <IfModule mod_php5.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value max_input_vars 10000
        php_value always_populate_raw_post_data -1
        php_value date.timezone Asia/Shanghai
    </IfModule>
</Directory>
<Directory "/usr/share/zabbix/conf">
    Require all denied
</Directory>
<Directory "/usr/share/zabbix/app">
    Require all denied
</Directory>
<Directory "/usr/share/zabbix/include">
    Require all denied
</Directory>
<Directory "/usr/share/zabbix/local">
    Require all denied
</Directory>

  • 找到字体文件
$  find /usr/share/zabbix/ -name '*.ttf'
/usr/share/zabbix/fonts/graphfont.ttf

$  ll  /usr/share/zabbix/fonts/graphfont.ttf
lrwxrwxrwx. 1 root root 33 11月 24 15:17 /usr/share/zabbix/fonts/graphfont.ttf -> /etc/alternatives/zabbix-web-font
$  ll /etc/alternatives/zabbix-web-font
lrwxrwxrwx. 1 root root 38 11月 24 15:17 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf
$  ll /usr/share/fonts/dejavu/DejaVuSans.ttf
-rw-r--r--. 1 root root 720012 2月  27 2011 /usr/share/fonts/dejavu/DejaVuSans.ttf

  • 使用中文字体替代
$  cd /usr/share/fonts/dejavu/
$  mv DejaVuSans.ttf DejaVuSans.ttf.bak
$  mv msyh.ttc DejaVuSans.ttf


第二步: 创建图形


  • 配置-主机-图形-创建图形


  • 添加监控项


  • 查看图形

    检测中-图形-tps


自定义模板


tcp三次握手



ddos(分布式dos攻击)如何防护


  • 物理机房会预留20%带宽, 临时加入这些带宽, 可以清洗ddos, 如果这些带宽满了, idc机房管理员会封掉当前被攻击的服务器的IP
  • 买硬件防火墙, 硬件防火墙有拦截ddos的功能
  • 买高防IP
  • WAF: Web Access Firewall 基于openresty搭建应用防火墙

tcp四次挥手


监控tcp的11种状态的模板


应用模板的步骤

  1. 上传agent的配置文件 /etc/zabbix/zabbix_agentd.d/
  2. 重启服务, systemctl restart zabbix-agent
  3. 导入模板
  4. 给要添加监控的主机链接模板

推荐阅读