zoukankan      html  css  js  c++  java
  • 监控-zabbix

     

    1:什么是监控?

    监控:安防的监控  看监控,事后追责

    linux监控: 事前预警,数据分析

    2:常见的linux监控命令

    cpu

     
     
     
     
     
     
    1
    top
    2
    htop
    3
    uptime
    4
    vmstat
     
     

    内存

     
     
     
     
     
     
    1
    free
     
     

    磁盘

     
     
     
     
     
     
    1
    df 
    2
    iotop
     
     

    网卡

     
     
     
     
     
     
    1
    iftop
    2
    nethogs
     
     

    系统进程

     
     
     
     
     
     
    1
    ps
    2
     pstree
     
     

    系统日志 ELK

    3:使用shell脚本来监控服务器

    shell+crontab

     
     
     
     
     
     
    1
    #!/bin/bash
    2
    3
    avai_mem=`free -m|awk '/^Mem/{print $NF}'`
    4
    5
    if [ $avai_mem -lt 100 ];then
    6
    7
       echo "可用内存过低,当前内存是:$avai_mem" >>/tmp/monitor_mem.log
    8
       echo "可用内存过低,当前内存是:$avai_mem"|mail -s  "服务可用内存低"  296917342@qq.com 
    9
    fi
     
     

    4:zabbix的基础服务架构

    1578104609224

    5:zabbix生产环境安装

     
     
     
     
     
     
    1
    #安装zabbix前提,关闭selinux
    2
    3
    1:配置zabbix的yum源
    4
    #下载zabbix-release
    5
    wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
    6
    #安装zabbix-release
    7
    rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
    8
    #将官方仓库地址替换为清华仓库地址
    9
    sed -i 's#http://repo.zabbix.com#https://mirror.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo
    10
    11
    2:安装zabbix服务端和zabbix-web前端
    12
    yum install zabbix-server-mysql zabbix-web-mysql  -y
    13
    14
    3:安装mariadb,创建zabbix库,授权zabbix用户
    15
    yum install mariadb-server -y
    16
    systemctl start mariadb
    17
    systemctl enable mariadb
    18
    mysql_secure_installation
    19
    先回车
    20
    再n
    21
    然后一路y
    22
    23
    mysql
    24
    MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
    25
    MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
    26
    27
    导入zabbix表结构和初始数据
    28
    zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix
    29
    30
    检查zabbix库是否导入成功
    31
    mysql -uroot  zabbix -e 'show tables'
    32
    33
    4:配置启动zabbix-server
    34
    vi /etc/zabbix/zabbix_server.conf 
    35
    DBHost=localhost 
    36
    DBName=zabbix
    37
    DBUser=zabbix
    38
    DBPassword=123456
    39
    40
    启动zabbix-server
    41
    systemctl start zabbix-server 
    42
    systemctl enable zabbix-server
    43
    44
    检查:
    45
    netstat -lntup|grep 10051
    46
    47
    5:修改Zabbix前端的PHP配置,并启动httpd
    48
    vi /etc/httpd/conf.d/zabbix.conf
    49
    php_value date.timezone Asia/Shanghai
    50
    51
    systemctl start httpd
    52
    systemctl enable httpd
    53
    54
    6:前端zabbix-web的安装
    55
    浏览器:http://10.0.0.71/zabbix
    56
    57
    后期修改zabbix数据库密码的时候,需要修改的配置文件:
    58
    /etc/zabbix/web/zabbix.conf.php
    59
    60
    http://10.0.0.61/zabbix/zabbix.php
    61
    登录的账号密码;
    62
    Admin
    63
    zabbix
     
     

    6:监控一台服务器主机

    监控zabbix-server自己

     
     
     
     
     
     
    1
    yum install zabbix-agent.x86_64 -y
    2
    systemctl enable zabbix-agent.service 
    3
    systemctl start zabbix-agent.service
     
     

    使用zabbix-agent监控其他主机(10.0.0.8)

     
     
     
     
     
     
    1
    wget https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.16-1.el7.x86_64.rpm
    2
    rpm -ivh  zabbix-agent-4.0.16-1.el7.x86_64.rpm
    3
    vim /etc/zabbix/zabbix_agentd.conf
    4
     Server=10.0.0.71
    5
    systemctl enable zabbix-agent.service 
    6
    systemctl start zabbix-agent.service
     
     

    1578107467045

    1578107551171

    1578107670925

    1578107818974

    1578107883984

    7:自定义监控项

    已监控硬盘的tps值为例

    a: 命令行取值

     
     
     
     
     
     
    1
    iostat|awk '/^sda/{print $2}'
     
     

    b:修改zabbix-agent配置文件

     
     
     
     
     
     
    1
    vim /etc/zabbix/zabbix_agentd.conf
    2
    UserParameter=tps,iostat|awk '/^sda/{print $2}'
    3
    4
    systemctl restart zabbix-agent.service
     
     

    c: 在web界面上添加监控项

    1578109392596

    1578109981484

    1578110107350

    8:自定义触发器

    1578111639914

    1578111885056

    9:微信报警

    邮件报警

    1:配置发件人

    1578117861043

    1578118015905

    2:配置收件人

    1578118498621

    3:启动报警发消息的动作

    1578118575716

    微信报警

     
     
     
     
     
     
    1
    #上传weixin.py的脚本
    2
    python weixin.py 
    3
    yum install python-pip -y
    4
    pip install requests   -i https://pypi.tuna.tsinghua.edu.cn/simple
    5
    6
    mv  weixin.py   /usr/lib/zabbix/alertscripts
    7
    chmod +x  weixin.py
     
     

    配置报警媒介

    1578120194592

    1578120316709

     
     
     
     
     
     
    1
    {ALERT.SENDTO}
    2
    {ALERT.SUBJECT}
    3
    {ALERT.MESSAGE}
     
     

    配置收件人

    1578120384931

    重新触发报警

    1578120575735

    1578120591699

     
     
     
     
     
     
    1
    #定制报警内容
    2
    服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
    3
    {
    4
    告警主机:{HOST.NAME}
    5
    告警地址:{HOST.IP}
    6
    监控项目:{ITEM.NAME}
    7
    监控取值:{ITEM.LASTVALUE}
    8
    告警等级:{TRIGGER.SEVERITY}
    9
    当前状态:{TRIGGER.STATUS}
    10
    告警信息:{TRIGGER.NAME}
    11
    告警时间:{EVENT.DATE} {EVENT.TIME}
    12
    事件ID:{EVENT.ID}
    13
    }
     
     

    10:自定义图形和grafana出图

    解决zabbix默认图形乱码问题

     
     
     
     
     
     
    1
    cd /usr/share/zabbix/assets/fonts/
    2
    #上传一个中文的ttf字体
    3
    mv simkai.ttf graphfont.ttf
     
     

    a:安装grafana

     
     
     
     
     
     
    1
    wget https://mirror.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-6.5.2-1.x86_64.rpm
    2
    yum localinstall grafana-6.5.2-1.x86_64.rpm -y
    3
    systemctl start grafana-server.service
     
     

    b:grafana的主要内容

     
     
     
     
     
     
    1
    插件: zabbix的插件
    2
    #安装zabbix插件
    3
    grafana-cli plugins install alexanderzobnin-zabbix-app
    4
    service grafana-server restart
    5
    数据源:
    6
    登录http://10.0.0.71:3000/login(默认admin:admin)
    7
    8
    dashboard:
     
     

    11:自定义监控模板

    使用其他人分享的zabbix模板

     
     
     
     
     
     
    1
    a:导入模板
    2
    b:把zabbix-agent的自定义key的配置文件放到/etc/zabbix/zabbix_agentd.d
    3
    c:如果有取值脚本,将取值脚本放在对应的目录
    4
    d:手动执行脚本测试取值(使用root身份执行)
    5
    e:使用zabbix_get测试取值(使用zabbix身份执行)
    6
    f:目标主机监控关联模板
     
     

    自定义模板(监控tcp 11种状态)

    12: zabbix 监控角度总结

     
     
     
     
     
     
    1
    服务器硬件(cpu温度,主板温度,功率,风扇的转速,硬盘的健康状态) ipmi芯片  远程管理控制卡idrac,ilo,imm
    2
    交换机路由器: snmp协议
    3
    4
    操作系统  (cpu,内存,硬盘,网卡,系统进程,日志)  zabbix  linux模板
    5
    6
    应用程序 nginx,mysql,redis,k8s-master      自定义模板(网上现有的模板)
    7
    8
    业务层面  业务访问速度,流量(pv,uv,ip),活跃用户日活,周活,月活,成单量,交易额
    9
    10
    日志监控 ELK 
     
     

    13: web网站的可用性监测

    1578708178453

    1578708208518

    1578708246125

    1578708338446

    14: 使用percona 插件监控mysql

    15:snmp监控window和Linux

    snmp监控:simple network  manager  protocol

    交换机,路由器,打印机  开启snmp,打开snmp服务端

    zabbix-server 客户端

     
     
     
     
     
     
    1
    snmp协议三个版本
    2
    v1  没有密码验证
    3
    v2c 支持口令验证 community
    4
    v3  太复杂
     
     

    16:zabbix自动发现和自动注册(主动)

    ·a:自动发现

    配置规则

    1578712960516

    1578713241018

    自动注册:

    1578713524401

    配置agent客户端

     
     
     
     
     
     
    1
    vim /etc/zabbix/zabbix_agentd.conf
    2
    Server=10.0.0.71
    3
    ServerActive=10.0.0.71
    4
    Hostname=10.0.0.8
    5
    HostMetadata=web
     
     

    17:zabbix-agent主动和被动的区别

    18:zabbix版本升级

    a:版本可以解决性能

    b:模板不兼容问题

    19:zabbix分布式监控proxy

    img

    1578722935624

     
     
     
     
     
     
    1
    #web01上安装zabbix-proxy
    2
     yum install  zabbix-proxy-mysql  mariadb-server -y
    3
     #mysql中创库,授权
    4
     mysql> 略 
    5
     cd /usr/share/doc/zabbix-proxy-mysql-4.0.16/
    6
     gzip -d schema.sql.gz 
    7
     mysql zabbix_proxy -uzabbix -p123456 < schema.sql 
    8
     mysql zabbix_proxy -uzabbix -p123456 -e 'show tables;'
    9
     vim /etc/zabbix/zabbix_proxy.conf 
    10
    ProxyMode=0
    11
    Server=10.0.0.71
    12
    ServerPort=10051
    13
    Hostname=sh_proxy
    14
    DBHost=localhost
    15
    DBName=zabbix_proxy
    16
    DBUser=zabbix
    17
    DBPassword=123456
    18
    HeartbeatFrequency=60
    19
    ConfigFrequency=60
    20
    DataSenderFrequency=1
    21
    22
     systemctl restart zabbix-proxy.service 
     
     

    1578723972777

    1578724334215

    20:zabbix监控jvm原理

     
     
     
     
     
     
    1
    #开启tomcat的远程监控
    2
    vim /app/apache-tomcat-8.0.27/bin/catalina.sh
    3
    CATALINA_OPTS="$CATALINA_OPTS
    4
    -Dcom.sun.management.jmxremote
    5
    -Djava.rmi.server.hostname=10.0.0.8
    6
    -Dcom.sun.management.jmxremote.port=12345
    7
    -Dcom.sun.management.jmxremote.ssl=false
    8
    -Dcom.sun.management.jmxremote.authenticate=false"
     
     

    1578725642492

    1578726356540

    21:zabbix低级自动发现

    a:什么是低级自动发现(low level discovery)

    低级自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。

    b:为什么要用低级自动发现

    低级自动发现特别适合用于监控那些有规律,又有差异的监控对象。例如A主机有3个挂载分区,B主机有4个挂载分区,c主机有5个挂载分区,每个分区挂载目录还不一样,现在要求,监控每一个分区的磁盘总容量,剩余容量,使用容量,block剩余百分比,inode使用百分比,这时候使用普通的zabbix模板根本无法监控

    c:zabbix模板自带的低级自动发现有哪些?

    1573638926211

    1573638991841

    1573639499806

    d:增加一个监控项原型

    增加监控项原型1:

    1573744736950

    增加监控项原型2:

    自定义监控项原型

     
     
     
     
     
     
    1
    #修改agent配置文件
    2
    [root@hdss7-11 ~]# cat /etc/zabbix/zabbix_agentd.d/net.conf 
    3
    UserParameter=net.if.mac[*],ifconfig $1|awk 'NR==4{print $$2}'
     
     
     
     
     
     
     
     
    1
    #zabbix-get测试取值
    2
    [root@k8s-zabbix ~]# zabbix_get -s 10.4.7.11 -k net.if.mac[eth0]
    3
    fa:16:3e:f1:36:29
     
     

    1573745441492

    效果展示:

    1573745871024

    e:创建一个低级自动发现规则

    第一个特殊key:定义低级自动发现规则,输出格式为json:例如:{"data":[{"{#IFNAME}":"eth0"},{"{#IFNAME}":"eth1"},{"{#IFNAME}":"lo"}]}

    第二个key:  监控项原型,取值

    第一步:修改agent配置文件

     
     
     
     
     
     
    1
    #agent配置文件
    2
    [root@k8s-node-2 ~]# cat /etc/zabbix/zabbix_agentd.d/discovery_container.conf 
    3
    UserParameter=discovery_container,/bin/bash /opt/discovery_container.sh
    4
    UserParameter=container_mem_per[*],/usr/bin/docker stats --no-stream |grep "$1"|awk '{print $$8}'|tr -d '%'
     
     

    低级自动发现脚本

     
     
     
     
     
     
    1
    #!/bin/bash
    2
    port=($(/usr/bin/docker ps -a|grep -v "CONTAINER ID"|awk '{print $NF}'))
    3
    printf '{
    '
    4
    printf '	"data":[
    '
    5
       for key in ${!port[@]}
    6
           do
    7
               if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
    8
                  printf '	 {
    '
    9
                  printf "			"{#CONTAINERNAME}":"${port[${key}]}"},
    "
    10
               else [[ "${key}" -eq "((${#port[@]}-1))" ]]
    11
                  printf '	 {
    '
    12
                  printf "			"{#CONTAINERNAME}":"${port[${key}]}"}
    "
    13
               fi
    14
       done
    15
                  printf '	 ]
    '
    16
                  printf '}
    '
     
     

    第二步:测试取值

     
     
     
     
     
     
    1
    [root@k8s-zabbix ~]# zabbix_get -s 10.4.7.17 -k discovery_container
    2
    {
    3
        "data":[
    4
         {
    5
                "{#CONTAINERNAME}":"7a4552bf6b07"},
    6
         {
    7
                "{#CONTAINERNAME}":"4081845226ee"},
    8
         {
    9
                "{#CONTAINERNAME}":"9d73c4fc6eb4"},
    10
         {
    11
                "{#CONTAINERNAME}":"7c7aadff9e11"},
    12
         {
    13
                "{#CONTAINERNAME}":"bbf5e3e231e0"}
    14
         ]
    15
    }
    16
    17
    [root@k8s-zabbix ~]# zabbix_get -s 10.4.7.17 -k container_mem_per[bbf5e3e231e0]
    18
    0.12
     
     

    第三步:web界面创建规则和监控项原型

    1573745691609

    1573745734007

    效果展示:

    1573745919205

    22:zabbix性能优化

    1)针对mysql,写多读少  mariadb 5.5 innodb  升级 mysql 5.7 tokudb
    2)去掉无用监控项,增加监控项的取值间隔,减少历史数据保存周期
    3)把被动模式修改为主动模式,增加zabbix-proxy
    4)针对于zabbix-server进程调优,谁忙,就加大它的进程数量
    5)针对于zabbix-server缓存调优,谁的剩余内存少,就加大它的缓存值
    6)针对zabbix 历史数据和趋势图的表,进行周期性分表( 分表)

    23:zabbix api

    api:aplication interface

    zabbix集成到其他的平台,把zabbix二次开发

    调用api,发起一个http请求

     
     
     
     
     
     
    1
    #获取认证
    2
    curl -X POST -H "Content-Type: application/json" -d '
    3
    {
    4
        "jsonrpc": "2.0",
    5
        "method": "user.login",
    6
        "params": {
    7
            "user": "Admin",
    8
            "password": "zabbix"
    9
        },
    10
        "id": 1,
    11
        "auth": null
    12
    }'  http://10.0.0.71/zabbix/api_jsonrpc.php
    13
    14
    {"jsonrpc":"2.0","result":"5fce40fb14005e696d26873c88b83465","id":1}
    15
    16
     
     
     
     
     
     
     
     
    1
    #创建主机
    2
    curl -X POST -H "Content-Type: application/json" -d '
    3
    {
    4
        "jsonrpc": "2.0",
    5
        "method": "host.create",
    6
        "params": {
    7
            "host": "oldboy",
    8
            "interfaces": [
    9
                {
    10
                    "type": 1,
    11
                    "main": 1,
    12
                    "useip": 1,
    13
                    "ip": "10.0.0.8",
    14
                    "dns": "",
    15
                    "port": "10050"
    16
                }
    17
            ],
    18
            "groups": [
    19
                {
    20
                    "groupid": "15"
    21
                }
    22
            ],
    23
            "templates": [
    24
                {
    25
                    "templateid": "10272"
    26
                },
    27
                {
    28
                    "templateid": "10001"
    29
                }
    30
            ]
    31
        },
    32
        "auth": "5fce40fb14005e696d26873c88b83465",
    33
        "id": 1
    34
    }
    35
    '  http://10.0.0.71/zabbix/api_jsonrpc.php
     
     
     
     
     
     
     
     
    1
    curl -X POST -H "Content-Type: application/json" -d '
    2
    {
    3
        "jsonrpc": "2.0",
    4
        "method": "host.delete",
    5
        "params": [
    6
            "10295"
    7
        ],
    8
        "auth": "5fce40fb14005e696d26873c88b83465",
    9
        "id": 1
    10
    }
    11
    '  http://10.0.0.71/zabbix/api_jsonrpc.php
     
     

    24: zabbix 高可用

    keepalived

    启动zabbix-server01

    启动zabbix-server02                       keepalived        agent01

  • 相关阅读:
    寒假记录六
    寒假记录5
    寒假记录4
    寒假记录3
    寒假记录2
    寒假记录1
    hive数据库课堂测试
    第一周
    个人总结
    课程总结
  • 原文地址:https://www.cnblogs.com/wx1899325/p/12924399.html
Copyright © 2011-2022 走看看