• zabbix监控服务


    zabbix介绍
      Zabbix简介

      Zabbix 是一个高度集成的网络监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用。具备常见的商业监控软件所具备的功能(主机的性能监控网络设备性能监控数据库性能监控FTP 等通用协议监控多种告警方式详细的报表图表绘制).Zabbix 通过 C/S 模式采集数据,通过 B/S 模式在 web 端展示和配置:

    Client(被监控)端: 主机通过安装 agent 方式采集数据,网络设备通过 SNMP 方式采集数据

    Server (服务)端: 通过收集 SNMP 和 agent 发送的数据,写入数据库再通过 php+apache 在 web 前端展示。
    Zabbix功能:

      1. 支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)

      2. 支持自动发现(low discovery)key 实现动态监控项的批量监控(需写脚本)

      3. 支持分布式,能集中展示、管理分布式的监控点

      4. 扩展性强,server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现)

    zabbix原理图:

    编写插件容易,可以自定义监控项,报警级别的设置。数据收集:

      1. 可用和性能检测

      2. 支持 snmp(包括 trapping and polling ),IPMI,JMX,SSH,TELNET

      3. 自定义的检测

      4. 自定义收集数据的频率

      5. 服务器/代理和客户端模式

      6. 灵活的触发器

      7. 可以定义非常灵活的问题阈值,称为触发器,从后端数据库的参考值

      8. 高可定制的报警

      9. 发送通知,可定制的报警升级,收件人,媒体类型

      10. 通知可以使用宏变量有用的变量

      11. 自动操作包括远程命令

      12. 实时的绘图功能

      13. 监控项实时的将数据绘制在图形上面

    WEB 监控:

      1.ZABBIX 可以模拟鼠标点击了一个网站,并检查返回值和响应时间Api 功能

    应用 api 功能:

      1.可以方便的和其他系统结合,包括手机客户端的使用。

    监控服务端部署

    主机名 ip地址 说明
    zabbix 172.16.1.71 监控服务端
    web01 172.16.1.7 监控客户端

    服务端部署

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

    配置环境:

      系统:centos7.6  php版本:5.4  数库版本:mariadb5.7  Zabbix版本:4.0

      更新zabbix源:

      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-3.4-1.el7.noarch.rpm  -- 老版本

      下载安装zabbix服务端相关软件 LAMP

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

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

      数据库服务软件: mariadb-server

     yum install -y zabbix-server-mysql zabbix-web-mysql httpd php mariadb-server

      配置文件

    vim /etc/zabbix/zabbix_server.conf

    100:DBName=zabbix
    116:DBUser=zabbix
    125:DBPassword=zabbix

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

    修改系统时区

     20         # php_value date.timezone Europe/Riga   欧洲/拉脱维亚 时间更改为亚洲上海
     更改为:
     20         php_value date.timezone Asia/Shanghai

    数据库部署

      1. 创建zabbix数据库

     yum  install mariadb mariadb-devel mariadb-server   -y

    systemctl start mariadb.service 
    systemctl status mariadb.service
    systemctl enable mariadb.service

      mysql

    create database zabbix  character set utf8 collate utf8_bin;   --- 默认拉丁字符集
    # 创建数据库管理用户
    grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

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

    zcat /usr/share/doc/zabbix-server-mysql-4.0.15/create.sql.gz|mysql -uzabbix -pzabbix zabbix

     #检查zabbix库是否导入成功
     mysql -uroot zabbix -e 'show tables'

    启动zabbix程序相关服务

      数据库服务 zabbix服务 httpd服务

    systemctl start zabbix-server.service httpd mariadb.service
    systemctl enable zabbix-server.service httpd mariadb.service

      LNMP: nginx 服务 php 服务

      LAMP: httpd 服务 php 模块

    登录zabbix服务端web界面, 进行初始化配置

    http://10.0.0.71/zabbix/setup.php

     

     输入密码:

    zabbix名称:

    登录:

    登录zabbix服务web页面 用户名Admin 密码zabbix

    10051  zabbix-server 服务端端口号
    10050  zabbix-agent  客户端端口号
    /etc/zabbix/web/zabbix.conf.php   -- 记录web页面初始化信息

    监控客户端部署

    更新清华源

    清华源网址:https://mirrors.tuna.tsinghua.edu.cn/

    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客户端

    yum install -y zabbix-agent

    编写zabbix客户端配置文件

    vim /etc/zabbix/zabbix_agentd.conf

      98 Server=172.16.1.71 # 监控主机服务端的ip地址

    启动zabbix-agent服务

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

    [root@zabbix ~]# 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    

    将客户端添加到服务端

    添加主机:

     

    添加模板:

    查看:

    添加自定义监控项

    概述

      有时候当我们监控的项目在zabbix预定义的key中没有定义时,这时候我们可以通过编写.zabbix的用户参数的方法来监控我们要求的项目item。形象-点说zabbix代理端配置文件中的User parameters就相当于通过脚本获取要监控的值,然后把相关的脚本或者命令写入到配置文件中的User parameter中然后zabbix server读取配置文件中的返回值通过处理前端的方式返回给用户。

      用户参数的语法:

      UserParameter= <key> , <command>

      其中UserParameter为关键字,key为用户自定义key名字可以随便起,<command> 为我们要运行的命令或者脚本。

    创建自定义监控项

       1. 客户端创建监控项key值

      zabbix-agent进行设置 : Include=/etc/zabbix/zabbix_agentd.d/*.conf

      UserParameter= <key> , <command>

      例1.监控内存使用情况

    UserParameter=used.mem,free -h|awk -F "[ M]+" 'NR==2{print $4}' 
    
    #将上面的信息输入到web01/etc/zabbix/zabbix_agentd.d/mem.conf 
    
    systemctl restart zabbix-agent.service 

      例2.创建监控主机用户数

      创建监控项key值

    vim /etc/zabbix/zabbix_agentd.d/count.conf 
    UserParameter=user.count,w|awk 'NR==1{print $4}'
    systemctl restart zabbix_agent.service 

      2. 服务端检查确认

      服务端进行测试

    [root@zabbix ~]# yum install -y zabbix-get
    [root@zabbix ~]# zabbix_get -s 172.16.1.7 -k 'used.mem'
    [root@zabbix ~]# zabbix_get -s 172.16.1.7 -k 'user.count'

      3. 网页创建自定义监控项

    创建自动义选项:

    查看监控项:

    收集主机TCP11种状态信息

      1. 客户端编写监控自定义配置文件

      vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf

    UserParameter=tcp.status[*],netstat -an|grep -ic $1    #使用变量将状态写入
    
    systemctl restart   zabbix-agent.service   #重启服务

      2.服务端网页配置监控项

    结果:

    名称                                      键值                                               应用集
    
    tcp_state_established           tcp.status[established]                 tcp_state
    tcp_state_listen                tcp.status[listen]                      tcp_state
    tcp_state_syn_sent              tcp.status[syn_sent]                    tcp_state

    #客户端更新完一定要进行重启

    验证:

    [root@zabbix /]# zabbix_get  -s 172.16.1.7 -k tcp.status[listen] 
    44

    脚本自定义信息

      1. 客户端编写脚本

      vim /server/scripts/check_web.sh #问:你确定服务的80端口是被nginx使用吗?

    #!/bin/bash
        
    netstat -lntup|grep 80 &>/dev/null
    REVAL=$?
    if [ $REVAL -ne 0 ]
    then
       echo OK
    else
       echo faild
    fi
    chmod +x  /server/scripts/check_web.sh   #添加执行权限

      2. 客户端监控配置文件

      vim /etc/zabbix/zabbix_agentd.d/server.conf

    UserParameter=nginx.state,/server/scripts/check_web.sh

      重启服务:

    [root@web01 /]# systemctl restart zabbix-agent.service 

      3. zabbix服务端验证

    [root@zabbix ~]# zabbix_get  -s 172.16.1.7 -k nginx.state
    
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    OK

    zabbix监控报警功能

      1.设置监控项,监控nginx 80端口

      2. 设置监控触发器

      3. 设置邮箱通知:

      4. 报警声音

    自定义报警声音

      报警声音存放目录

      cd /usr/share/zabbix/audio

    alarm_average.mp3          
    alarm_disaster.mp3           
    alarm_high.mp3               
    alarm_information.mp3        
    alarm_ok.mp3                 
    alarm_warning.mp3            
    no_sound.mp3      
    xxx.mp3

    将下载好的mp3格式的音频添加到目录里,把原来的给备份,然后将下载好的音频剪切为默认的名字

    [root@zabbix /usr/share/zabbix/audio]#  mv no_sound.mp3  no_sound.mp3.bak
    [root@zabbix /usr/share/zabbix/audio]#  mv xxx.mp3   no_sound.mp3

    实现邮件报警

      1. 配置报警媒介信息——邮件报警

      2. 定义接收报警人员

      3. 配置报警动作信息

    确认开启。

      4. 测试报警

      关闭web01 nginx服务查看网页,已经收到邮件

    调用邮件报警脚本实现报警

      1.将报警脚本放入zabbix服务端

      vim /usr/lib/zabbix/alertscripts/mail_163.py

      #/usr/lib/zabbix/alertscripts/ :报警脚本保存路径

    #!/usr/bin/python  
    #coding:utf-8  
    import smtplib  
    from email.mime.text import MIMEText  
    import sys  
    mail_user = 'w1354586675@163.com'             #邮件地址
    mail_pass = 'wei1999'                       #效验码,自己定义
    
    def send_mail(to_list,subject,content):  
        me = "zabbix 监控告警平台"+"<"+mail_user+">"
        msg = MIMEText(content, 'plain', 'utf-8')  
        msg['Subject'] = subject  
        msg['From'] = me  
        msg['to'] = to_list  
        try:  
            s = smtplib.SMTP("smtp.163.com", 25)  
            s.login(mail_user,mail_pass)  
            s.sendmail(me,to_list,msg.as_string())  
            s.close()  
            return True  
        except Exception,e:  
            print str(e)  
            return False  
    if __name__ == "__main__":  
        send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
    [root@zabbix ~]# chmod +x /usr/lib/zabbix/alertscripts/mail_163.py 
    [root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/
    [root@zabbix /usr/lib/zabbix/alertscripts]# ./mail_163.py w1354586675@163.com  test_check  hello
    # 邮件地址需要先在zabbix用户邮箱添加

      2.在报警媒介中调用脚本

    {ALERT.SENDTO}   --- 脚本参数信息  收件任务信息
    {ALERT.SUBJECT}  --- 脚本参数信息  邮件标题信息
    {ALERT.MESSAGE}  --- 脚本参数信息  邮件内容信息

      3.定义接收报警信息人员

      4.效验结果,查看 报表 ---> 动作日志

    实现微信进行报警

    注册企业微信,地址https://work.weixin.qq.com/wework_admin/loginpage_wx

      1. 收集信息:

      企业ID: ww2c7d46*********

      AgentId:1000002

      Secret:IeHkXTieFQFDf6D50HL0******************

      2. 编写微信脚本

      人员加入企业微信,修改脚本的 企业IDAgentIdSecret

      下载python需要的模块,脚本会用到脚本的模块:

      更新pip源:https://developer.aliyun.com/mirror/pypi?spm=a2c6h.13651102.0.0.53322f706INyGw

      ~/.pip/pip.conf

    [root@zabbix /]# mkdir ~/.pip/            #创建目录
    [root@zabbix /]# vim ~/.pip/pip.conf      #编辑配置文件
    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/
        
    [install]
    trusted-host=mirrors.aliyun.com

      下载python模块

    yum install -y python-pip   #安装pip下载
    pip install requests        #安装模块

      脚本内容:

      vim /usr/lib/zabbix/alertscripts/weixin.py

    #!/usr/bin/env python
    #-*- coding: utf-8 -*-
    #author: yanggd
    #date: 2018-04-20
    #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='ww2c7d46ffc922766d'  
    appsecret='IeHkXTieFQFDf6D50HL0Z1z6nCKBSwV7j5lowpLp5qA'
    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] + "
    
    " +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) 
    chmod +x  /usr/lib/zabbix/alertscripts/weixin.py 
    chown zabbix.zabbix /tmp/weixin.log #服务端的日志

      发送信息给微信

    [root@zabbix /]# cd /usr/lib/zabbix/alertscripts/
    [root@zabbix /usr/lib/zabbix/alertscripts]# ./weixin.py  收微信人员账号信息  标题   "内容"

      3. 添加报警媒介类型

    参数:
    {ALERT.SENDTO}
    {ALERT.SUBJECT}
    {ALERT.MESSAGE}

      4.添加动作

      配置 -----》动作 -----》创建动作

    默认标题:

    [{TRIGGER.SEVERITY}]服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!

    消息内容:

    告警主机: {HOSTNAME1}
    主机分组: {TRIGGER.HOSTGROUP.NAME}
    告警时间: {EVENT.DATE} {EVENT.TIME}
    告警等级: {TRIGGER.SEVERITY}
    告警信息: {TRIGGER.NAME}
    告警项目: {TRIGGER.KEY1}
    问题详情: {ITEM.NAME}:{ITEM.VALUE}
    当前状态: {TRIGGER.STATUS}
    事件ID: {EVENT.ID}
    #恢复操作内容一样,把故障改成恢复

    用户使用的是 Admin 和组 Zabbix administrators

      5.admin用户添加 wechat 报警媒介

    手机实现监控报警

      配置官网:https://www.aiops.com/ 睿象云

      1. 注册账号,免费试用,收费服务会更还一点,警报效率更高。

      进行配置 CA 智能告警

    集成---> 监控工具---> zabbix(免费只能加两个监控,穷啊!)

    zabbix服务端安装Agent

      appkey:b1a40a79-feca-fc63-eab4-a9990b96a997

    [root@zabbix /]# cd /usr/lib/zabbix/alertscripts   #编译安装的路径
    [root@zabbix /usr/lib/zabbix/alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-2.1.0.tar.gz 
    [root@zabbix /usr/lib/zabbix/alertscripts]# tar -xzf ca_zabbix_release-2.1.0.tar.gz 
    [root@zabbix /usr/lib/zabbix/alertscripts]# cd cloudalert/bin 
    [root@zabbix /usr/lib/zabbix/alertscripts/cloudalert]#  bash install.sh b1a40a79-feca-fc63-eab4-a9990b96a997  #码是自动生成的。
    
    Zabbix管理地址: http://10.0.0.71/zabbix/ 
    Zabbix管理员账号: Admin 
    Zabbix管理员密码:

    如果之前有创建,请把相应的动作,用户,用户组,报警媒介类型删掉,否则会出错。

    用户:cloudalert
    用户群组:cloudalert group
    动作:cloudalert action
    报警媒介类型:cloudalert media

    添加用户策略。

    #因为是免费试用,或者网络原因,电话可能不能及时相应。

    zabbix 解决中文字符集乱码

    自定义字符集

      方法一:本地字符集

      微软雅黑地址:https://pan.baidu.com/s/1V2IpBMK3K8koEE09uX9TpA

    C:WindowsFonts windows字符集考出来一个 /usr/share/zabbix/fonts zabbix的字符集

    [root@zabbix /]# cd /usr/share/zabbix/assets/fonts
    [root@zabbix-server fonts]# ls
    graphfont.ttf
    [root@zabbix-server fonts]#  
    [root@zabbix-server fonts]# ls
    graphfont.ttf  STZHONGS.TTF
    [root@zabbix-server fonts]# mv graphfont.ttf graphfont.ttf.bak
    [root@zabbix-server fonts]# mv MSYH.TTC graphfont.ttf 
    [root@zabbix /]#  ll /etc/alternatives/zabbix-web-font    ##zabbix默认的字符集
    lrwxrwxrwx 1 root root 44 Dec  8 12:29 /etc/alternatives/zabbix-web-font -> /usr/share/zabbix/assets/fonts/graphfont.ttf
    [root@zabbix-server fonts]# systemctl  restart  zabbix-server 

      方法二:安装开源字符集

    更改阿里的epel源:

    wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo 

      zabbix服务器端安装开源的字符集:

    [root@zabbix /]# yum -y install  wqy-microhei-fonts
    [root@zabbix /]# rpm -ql wqy-microhei-fonts
    /etc/fonts/conf.d/65-0-wqy-microhei.conf
    /usr/share/doc/wqy-microhei-fonts-0.2.0
    /usr/share/doc/wqy-microhei-fonts-0.2.0/LICENSE_Apache2.txt
    /usr/share/doc/wqy-microhei-fonts-0.2.0/LICENSE_GPLv3.txt
    /usr/share/doc/wqy-microhei-fonts-0.2.0/README.txt
    /usr/share/fontconfig/conf.avail/65-0-wqy-microhei.conf
    /usr/share/fonts/wqy-microhei
    /usr/share/fonts/wqy-microhei/wqy-microhei.ttc
    [root@zabbix /]#  ll   /etc/alternatives/zabbix-web-font    ##zabbix默认的字符集 
    lrwxrwxrwx 1 root root 46 Dec  8 12:02 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/wqy-microhei/wqy-microhei.ttc
    #删除默认软连接指向的字符集,指向安装的字符集
    [root@zabbix /]# rm -f /etc/alternatives/zabbix-web-font 
    [root@zabbix /]# ln -s /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /etc/alternatives/zabbix-web-font 
    [root@zabbix /]# ll   /etc/alternatives/zabbix-web-font 
    lrwxrwxrwx 1 root root 46 Dec  8 12:02 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/wqy-microhei/wqy-microhei.ttc
    
    不要忘记重启zabbix-server

    grafana软件图形部署

      1. 简介:

      grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。最佳的参考资料就是官网:https://grafana.com/docs/grafana/latest/     优秀博客:【 点击

      2.下载grafana软件程序包

      在清华源下载grafana软件包到/server/tools/ 下  地址:https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/

    [root@zabbix /]#  mkdir -p  /server/tools/
    [root@zabbix /]#  cd /server/tools/ 
    [root@zabbix /server/tools]#  wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-6.5.1-1.x86_64.rpm
    [root@zabbix /]# yum -y  localinstall grafana-6.5.1-1.x86_64.rpm   #软件包不用安装,安装软件包依赖
    
    #启动grafana服务
    [root@zabbix /]# systemctl start grafana-server.service  
    [root@zabbix /]# systemctl enable grafana-server.service 

      3. 登录grafana

    要运行Grafana,请打开浏览器并转到http://172.16.1.71:3000/,如果你尚未配置不同的端口,则3000是Grafana监听的默认http端口。默认用户名为admin,默认密码为admin。当你第一次登录时,系统会要求你更改密码,我们强烈建议你遵循Grafana的最佳做法并更改默认管理员密码,你可以稍后转到用户首选项并更改你的用户名。

    修改网站主题:

    安装zabbix插件,因为在grafana中默认没有zabbix插件需要手动安装。

      4. 安装zabbix插件

      原理:granfana -(zabbix插件)-> zabbix-server --> zabbix-agent (收集主机监控项信息)

      官方文档:https://grafana.com/docs/grafana/latest/plugins/installation/

    # 1.查找grafana插件信息:
    [root@zabbix /]# grafana-cli plugins list-remote|grep zabbix    #查找需要安装的插件
    id: alexanderzobnin-zabbix-app version: 3.10.4
    
    # 2.安装grafana插件信息:
    [root@zabbix /]# grafana-cli plugins install alexanderzobnin-zabbix-app 
    installing alexanderzobnin-zabbix-app @ 3.10.4
    from: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/3.10.4/download
    into: /var/lib/grafana/plugins
    ✔ Installed alexanderzobnin-zabbix-app successfully 
    Restart grafana after installing plugins . <service grafana-server restart>
    
    # 3.重启服务
    [root@zabbix /]# systemctl restart grafana-server.service   

      5. 添加zabbix源信息

    在下面有一个 Save & Test 点击保存!会出现绿色提示信息

    导入模板:

    最终结果:

    监控服务自动发现

      在主机较多的时候,配置主机自动发现并加入监控可以代替手动的添加主机,减轻工作量,自动发现由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备。可以根据需要,在对主机安装系统的时候就安装配置并启动zabbix-agent服务,这样的话只要主机系统安装完成,便会自动加入监控

    配置--自动发现--创建发现规则

    配置 --动作

  • 相关阅读:
    perl next和last
    用 Flask 来写个轻博客 (26) — 使用 Flask-Celery-Helper 实现异步任务
    mysql 更新唯一主键列 被堵塞
    perl + 匹配前导模式一次或者多次
    跨域
    日志处理
    FineBI:一个简单易用的自助BI工具
    FineBI:一个简单易用的自助BI工具
    bootstrap-treeview
    Bootstrap树形菜单插件TreeView.js使用方法详解
  • 原文地址:https://www.cnblogs.com/Mercury-linux/p/11981039.html
Copyright © 2020-2023  润新知