• 学习zabbix(四)


    一. 监控知识


    1.硬件监控:

    机房巡检,远程控制卡,IPMI

    2.系统监控:

    cpu负载查看(指标):uptime(低于3),top(30%-70%), vmstat, mpstat
    内存监控: free -m (不超过80%)
    硬盘监控:df , iotop(查看进程使用io情况),iostat
    网络监控:iftop -n
    性能监控工具:nmon(全方位监控,测试用)。
    ps: nmon使用参考文章:http://www.cnblogs.com/mululu/p/6398483.html

    3.网络监控:

    iftop,站长工具,SmokePing,监控宝

    二. CPU监控知识


    1.CPU三个重要的概念:

    1. 上下文切换: CPU调度器实施进程切换的过程,
    2. 运行队列(负载): 单位时间内运行队列的排队数
    3. 使用率:

    2.性能的基准线:

    1. 每个CPU核心的运行队列在(1-3)比较正常,比如4核不超过12。
    2. CPU的使用率标准:65%-70%用户态(us),30%-35%内核态(sy),0%-5%空闲(id)

    3.监控工具:

    1. top
    2. vmstat 1 10 (每秒运行1次,总共运行10次),mpstat (需要安装sysstat)

    二. ZABBIX安装相关


    官方安装文档:https://www.zabbix.com/documentation/2.4/manual/installation/install_from_packages

    1.安装zabbix2.4的Yum源:

     rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

    2.安装zabbix:

     yum install zabbix zabbix-server zabbix-get zabbix-web zabbix-server-mysql zabbix-web-mysql zabbix-agent

    3.初始化数据库:

    mysql> create database zabbix character set utf8 collate utf8_bin;      #创建zabbix库
    mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix123';     #创建zabbix用户
    cd /usr/share/doc/zabbix-server-mysql-2.4.8/create/
    mysql -uroot -pRoot123 zabbix< schema.sql
    mysql -uroot -pRoot123 zabbix < images.sql
    mysql -uroot -pRoot123 zabbix < data.sql

     

    4.修改zabbix时区:

     vim /etc/httpd/conf.d/zabbix.conf
     php_value date.timezone Asia/Shanghai

    5.修改zabbix_server数据库配置:

    vim /etc/zabbix/zabbix_server.conf
    
    DBHost=172.16.1.214
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix123

    6.启动zabbix:

     /etc/init.d/httpd restart
     /etc/init.d/zabbix-server start

    http://172.16.1.211/zabbix/ #访问地址,第一次访问会出现安装向导
    登录默认用户:Admin 密码:zabbix

    7.安装zabbix客户端:

    yum install zabbix-agent
    vim /etc/zabbix/zabbix_agentd.conf
    
    Server=172.16.1.211

    8.启动zabbix客户端:

     /etc/init.d/zabbix-agent start

    三. ZABBIX使用相关


    1.客户端添加自定义监控项(监控系统用户数):

    vim /etc/zabbix/zabbix_agentd.conf
    
    UserParameter=login-user,uptime |awk '{print $6}'
    #UserParameter后面的格式为: key名称,命令
    /etc/init.d/zabbix-agent restart #添加完后要重启agent

    2.服务端添加自定义监控项:

    # zabbix_get -s 172.16.1.210 -k login-user   #先测试获取
        -s: 客户端IP
        -k: key名称

    界面创建新Item:
    这里写图片描述

    PS:添加完成以后还可以为自定义监控项添加图表( Graphs)

    3.Zabbix添加自定义告警脚本:

    1.告警脚本放在“/usr/lib/zabbix/alertscripts”目录下。
    2.要支持三个参数:收件人,主题,内容
    3.执行权限

    测试脚本:

    vim sms.sh
    
    #!/bin/bash
    ALTER_TO=$1
    ALTER_TITLE=$2
    ALTER_BODY=$3
    
    echo "$ALTER_TO $ALTER_TITLE $ALTER_BODY">>/tmp/sms.log

     

    4.WEB页面添加自定义告警:

    这里写图片描述
    这里写图片描述

    {ALERT.SENDTO}收件人地址
    {ALERT.SUBJECT}主题
    {ALERT.MESSAGE}详细内容

    4.WEB页面配置动作信息:

    这里写图片描述
    配置报警操作动作:

    状态:{TRIGGER.STATUS}
    时间:{EVENT.DATE} {EVENT.TIME}
    告警名称: {TRIGGER.NAME}
    主机: {HOST.NAME}
    监控项: {ITEM.NAME}:{ITEM.VALUE}

    配置报警恢复动作

    状态:{TRIGGER.STATUS}
    时间: {EVENT.RECOVERY.DATE}  {EVENT.RECOVERY.TIME}
    告警名称: {TRIGGER.NAME}
    主机: {HOST.NAME}
    监控项: {ITEM.NAME}:{ITEM.VALUE}

    四. ZABBIX通过percona监控Mysql


    1.安装percona软件:

    # yum install https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.7/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.7-2.noarch.rpm
    # yum install percona-zabbix-templates php php-mysql
    # cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf
    # systemctl restart zabbix-agent.service

     

    2.导入percona的Zabbix模板文件:

    由于官方提供的模板文件不兼容3.0,我们需要下载我修改好的:
    http://download.csdn.net/download/wmj2004/10012276

    下载完成后导入zabbix模板即可

    3.创建percona配置文件:

    # vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
    
    <?php
    $mysql_user = 'root';
    $mysql_pass = 's3cret';

     

    ps: 根据情况修改下get_mysql_stats_wrapper.sh文件的hostname参数

    4.测试mysql监控是否正常:

    # zabbix_get -s 172.16.20.11 -k MySQL.max-connections

    五. Zabbix-Agent主动模式


    1.哪些情况需要使用主动模式(active):

    1.Queue里面有大量延时的item
    2.生产环境监控主机超过300台

    2.开启zabbix-agent主动模式:

    #Server=172.16.100.1 #备注掉
    StartAgents=0    #关闭监听进程
    ServerActive=172.16.100.1   #配置服务器地址
    Hostname=tools01-uat      #配置主机名

     

    ps: 开启主动模式后service端模板中的“监控项”类型改成“zabbix主动模式”
    这里写图片描述

    六. ZABBIX分布式部署


    1.安装Zabbix-Proxy:

    yum install zabbix-proxy zabbix-proxy-mysql mariadb-server
    systemctl start mariadb
    #mysql命令开始
    create database zabbix_proxy character set utf8;
    grant all on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy'
    #mysql命令结束
    zcat schema.sql.qz | mysql -uzabbix_proxy -pzabbix_proxy  #初始化数据库

    六. ZABBIX自动化监控


    1.Zabbix-agent自动注册:

    先修改zabbix-agent的配置文件:

    # grep ^[a-Z] /etc/zabbix/zabbix_agentd.conf
    
    PidFile=/var/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    Server=172.16.100.1
    ServerActive=172.16.100.1     #配置上service的ip
    Hostname=tools01-uat.hewomi.com    #配置上主机名称,注册时会自动填上
    HostMetadataItem=system.uname      #配置主机元素,取uanme
    Include=/etc/zabbix/zabbix_agentd.d/*.conf

    在service上面添加自动注册的动作,看图操作:
    1.这里写图片描述
    2.这里写图片描述
    3.这里写图片描述

    2.Zabibx-service自动发现(生产不建议使用):

    3.通过Zabbix-api自动化添加:

    官方api说明文档: https://www.zabbix.com/documentation/3.4/zh/manual/api

    先获取用户令牌,记录下返回的result参数。

    curl -s -X POST -H 'Content-Type: application/json-rpc' -d '
    {
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": "Admin",
            "password": "密码"
        },
        "id": 1,
        "auth": null
    }' http://172.16.100.1/zabbix/api_jsonrpc.php | python -m json.tool

    通过获取的令牌,查看下所有主机列表:

    curl -s -X POST -H 'Content-Type: application/json-rpc' -d '
    {
        "jsonrpc": "2.0",
        "method": "host.get",
        "params": {
            "output": ["host"]
        },
        "auth": "6d49c3f282f3949dfa30805e9f5d984e",
        "id": 1
    }' http://172.16.100.1/zabbix/api_jsonrpc.php | python -m json.tool

    4.通过Python脚本获取auth

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import requests
    import json
    
    url = 'http://192.168.56.11/zabbix/api_jsonrpc.php'
    post_data = {
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": "zhangsan",
            "password": "123123"
        },
        "id": 1
    }
    post_header = {'Content-Type': 'application/json-rpc'}
    
    ret = requests.post(url, data=json.dumps(post_data), headers=post_header)
    
    zabbix_ret = json.loads(ret.text)
    if not zabbix_ret.has_key('result'):
        print 'login error'
    else:
        print zabbix_ret.get('result')

    只要添加主机的时候通过api添加主机并加入群组和模板即可

  • 相关阅读:
    GitLab CI/CD的官译【原】
    Gearman介绍、原理分析、实践改进
    Golang逃逸分析
    Go 程序是怎样跑起来的
    分布式系统的常见玩法
    开发更高可用、高质量的服务的一些建议
    理解 Kubernetes 的亲和性调度
    服务发现对比:Zookeeper vs etcd vs Consul
    探索etcd,Zookeeper和Consul一致键值数据存储的性能
    CentOS 7 安装无线驱动
  • 原文地址:https://www.cnblogs.com/wuhg/p/10238767.html
Copyright © 2020-2023  润新知