温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

分布式监控-zabbix(3.0-4.0)

发布时间:2020-06-24 04:25:04 来源:网络 阅读:236 作者:lewis2016 栏目:系统运维

zabbix server端:centos7.6

一、关闭防火墙和selinux、设置时区和时间同步

~]# systemctl stop firewalld

~]# systemctl disable firewalld

~]# setenforce 0

~]# vim /etc/sysconfig/selinux

SELINUX=disabled                       #将enforcing更改为disabled

# timedatectl set-timezone Asia/Shanghai

~]# yum -y install chrony

~]# vim /etc/chrony.conf

server ntp1.aliyun.com iburst                #修改为阿里云的ntp服务器

~]# systemctl restart chronyd


二、更换为yum源为阿里云源

~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

~]# yum makecache


三、安装LAMP环境

~]# yum -y install mariadb mariadb-server httpd php php-mysql

~]# systemctl start httpd mariadb

~]# systemctl enable httpd mariadb

~]# mysql_secure_installation


四、安装zabbix程序,此处选用3.0 LTS(长期维护版)

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

~]# yum clean all

~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent

初始化数据库:

~]# mysql -uroot -p

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';              #此处password为zabbix的数据库密码,自行设置

MariaDB [(none)]> quit;

~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix                 #输入zabbix用户的密码

~]# vim /etc/zabbix/zabbix_server.conf

DBPassword=password                                  #输入zabbix用户的密码

~]# vim /etc/httpd/conf.d/zabbix.conf     

php_value date.timezone Asia/Shanghai            #输入正确的时区信息

~]# systemctl restart zabbix-server zabbix-agent httpd

~]# systemctl enable zabbix-server zabbix-agent httpd


五、浏览器初始化zabbix的web

~]# vim /etc/httpd/conf/httpd.conf

DocumentRoot "/usr/share/zabbix"  

~]# systemctl restart httpd

访问http://server-ip,默认账号为Admin,密码为zabbix。生产环境注意:1、修改Admin密码;2、关闭guest用户。

分布式监控-zabbix(3.0-4.0)分布式监控-zabbix(3.0-4.0)                 



六、由于3.0的很多模板支持的问题,所以此处升级为4.0LTS。

阿里云的zabbix仓库源包:

https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm

具体参考官方升级指南:

https://www.zabbix.com/documentation/4.0/zh/manual/installation/upgrade/packages/rhel_centos



七、添加对中文的支持,避免中文乱码问题:3.0和4.0的区别:3.0路径:/usr/share/zabbix/fonts/      4.0路径:/usr/share/zabbix/assets/fonts/

以下示例为4.0LTS版本

找一台windows主机:win+R,输入fonts(即C:\Windows\Fonts),选择某一字体(此处示例为:宋体常规)

通过拖动上传字体文件到zabbix-server上:前提 ~]# yum -y install lrzsz

~]# mv simsun.ttc /usr/share/zabbix/assets/fonts/song.ttf

~]# chmod a+x /usr/share/zabbix/assets/fonts/song.ttf

~]# vim /usr/share/zabbix/include/defines.inc.php

define('ZBX_GRAPH_FONT_NAME',           'song');                 #将字体graphfont修改为song




常用监控方式:

一、通过agent监控:

1、安装zabbix-agent程序和设置配置文件

centos 7

~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.15-1.el7.x86_64.rpm

~]# vim /etc/zabbix/zabbix_agentd.conf

Server=172.20.120.214                              #设置server端IP

#ServerActive=172.20.120.214                  #此处没有启用active模式,所以注释(active模式是客户端主动发送数据给server端) 

Hostname=172.20.120.182                       #设置客户端的名称

~]# systemctl start zabbix-agent

~]# systemctl enable zabbix-agent


centos6

~]# sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/6/x86_64/zabbix-agent-4.0.15-1.el6.x86_64.rpm

~]# hostip=`ip addr l | grep eth0 | grep inet | awk -F "/" '{print $1}' | awk '{print $2}'`                                       #此处获取网卡为eth0,请按需修改

~]# sudo sed -i -e 's/Server=127.0.0.1/Server=172.20.120.214/g' -e 's/ServerActive=127.0.0.1/#ServerActive=127.0.0.1/g' -e "s/Hostname=Zabbix server/Hostname=$hostip/g" /etc/zabbix/zabbix_agentd.conf

~]# sudo service zabbix-agent start

~]# sudo chkconfig zabbix-agent on



2、添加到web监控的模式:

a、手动添加

访问web端http://server-ip:配置-主机-创建主机-设置主机相关信息:如图

分布式监控-zabbix(3.0-4.0)

分布式监控-zabbix(3.0-4.0)


b、自动发现

步骤:

1、设置自动发现后要进行的动作

访问web端http://server-ip:配置-动作-事件源(自动发现)-创建动作

2、设置自动发现规则

访问web端http://server-ip:配置-自动发现-创建发现规则


Zabbix监控nginx性能

1、查看是否有with-http_stub_status_module该模块

~]# nginx -V     

2、配置nginx状态页面            

~]# vim /etc/nginx/nginx.conf

location /ngx_status  {

stub_status on;

access_log off;

allow 127.0.0.1;

}

~]# systemctl reload nginx

测试是否可以获取到status页面

~]# curl http://127.0.0.1/ngx_status

其中字段解释如下:

Active connections               :表示Nginx正在处理的活动连接数。

server                                   :表示Nginx启动到现在共处理了多少个连接

accepts                                 :表示Nginx启动到现在共成功创建多少次握手

handled requests                 :表示总共处理了 多少次请求

Reading                                :Nginx 读取到客户端的 Header 信息数

Writing                                 :Nginx 返回给客户端 Header 信息数

Waiting                                 :Nginx 已经处理完正在等候下一次请求指令的驻留链接(开启keep-alive的情况下,这个值等于Active-(Reading+Writing))

所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中。

3、编写监控脚本

~]# vim /etc/zabbix/ngx_status.sh

#!/bin/bash

HOST="127.0.0.1"

PORT="80"

#检测nginx进程是否存在

function ping {

        /sbin/pidof nginx | wc -l

}

#检测nginx性能

function active {

        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | grep 'Active' | awk '{print $NF}'

}

function reading {

        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | grep 'Reading' | awk '{print $2}'

}

function writing {

        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | grep 'Writing' | awk '{print $4}'

}

function waiting {

        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | grep 'Waiting' | awk '{print $6}'

}

function accepts {

        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | awk NR==3 | awk '{print $1}'

}

function handled {

        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | awk NR==3 | awk '{print $2}'

}

function requests {

        /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | awk NR==3 | awk '{print $3}'

}

#执行function

$1

~]# chmod a+x /etc/zabbix/ngx_status.sh

测试脚本

~]# bash /etc/zabbix/ngx_status.sh requests

分布式监控-zabbix(3.0-4.0)

4、zabbix-agent配置文件

~]# vim /etc/zabbix/zabbix_agentd.conf

UnsafeUserParameters=1

UserParameter=nginx.status[*],/etc/zabbix/ngx_status.sh $1

~]# systemctl restart zabbix-agent

~]# systemctl enable zabbix-agent

zabbix server端测试

~]# yum -y install zabbix-get

~]# zabbix_get  -s 172.20.120.56 -k 'nginx.status[accepts]'             #-s后接agent-ip,-k后接自定义key

分布式监控-zabbix(3.0-4.0)

5、zabbix web端

下载模板:https://pan.baidu.com/s/1CCaIURk-kXAcEXJ6BD-TEA

导入模板

主机配置

主机添加模板(Template App NGINX)


二、通过snmp方式监控:

Zabbix监控Dell服务器硬件(iDRAC)

1、Dell服务器端

浏览器登录iDRAC

启用SNMP
点击“iDRAC”——“网络”——“服务”——“SNMP代理”
勾选“已启用”,然后点击“应用”

2、zabbix web端

下载模板:https://pan.baidu.com/s/1CCaIURk-kXAcEXJ6BD-TEA

导入模板

主机配置SNMP interfaces

主机添加模板Dell iDRAC;注意点:宏的设置需要对应起来(即SNMP community的值要对应起来)。


zabbix监控华为交换机和防火墙设备

1、在交换机和防火墙开启snmp功能,和设置SNMP community

2、zabbix web端

下载模板:https://pan.baidu.com/s/1CCaIURk-kXAcEXJ6BD-TEA

导入模板

主机配置SNMP interfaces

主机添加模板(Template Net Huawei VRP SNMPv2)注意点:宏的设置需要对应起来(即SNMP community的值要对应起来)。




windows服务器的监控:

1、安装agent客户端;官网下载地址https://assets.zabbix.com/downloads/4.0.15/zabbix_agents-4.0.15-win-amd64-openssl.zip

解压zabbix_agents-4.0.15-win-amd64-openssl.zip

conf目录存放是agent配置文件 

bin文件存放windows下程序

修改conf目录下的zabbix_agentd.conf文件

    LogFile=c:\zabbix_agentd.log    //日志存放位置

    EnableRemoteCommands=1     //允许在本地执行远程命令

    LogRemoteCommands=1          //执行远程命令是否保存操作日志

    Server=172.20.120.214          //zabbix_server主机IP地址

    #ServerActive=192.168.1.10        //由于没有开启active模式,因此注释即可

    Hostname=******         //被监控主机名,自身主机名

打开命令提示符进行安装

c:\zabbix\bin\zabbix_agentd.exe -i -c c:\zabbix\conf\zabbix_agentd.conf

c:\zabbix\bin\zabbix_agentd.exe -s -c c:\zabbix\conf\zabbix_agentd.conf

完成安装后,服务里就有了zabbix-agent服务

最后记得设置防火墙允许zabbix-agent互联


windows补充点:

默认windows模板没有cpu使用率监控项,添加如下:

名称:CPU usage%

键值:perf_counter[\Processor(_Total)\% Processor Time]

信息类型:浮点数

单位:%

问题:无法获取cpu使用率,server端日志:Collector is not started

解决方法:重建性能计数器设置:管理员执行下lodctr /R命令即可




设置报警方式:

一、邮件报警:

1、管理--报警媒介类型--创建媒体类型

分布式监控-zabbix(3.0-4.0)

2、管理--用户--报警媒介--添加

分布式监控-zabbix(3.0-4.0)

3、配置--动作--事件源:触发器--创建动作

分布式监控-zabbix(3.0-4.0)

操作内容如下:

故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}


恢复操作内容如下:

恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
恢复信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}



更新操作内容如下:

更新信息:{EVENT.NAME}
更新信息:
{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.
{EVENT.UPDATE.MESSAGE}
Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}.


最后进行故障测试,验证是否发送成功。查看:报表--动作日志


二、阿里云短信报警:此处示例使用python3.6+(python2存在中文短信乱码的情况)

1、CentOS7 升级Python2.x到3.x

~]# python -V        #查看当前python版本

~]# yum -y install python3

~]# mv /usr/bin/python /usr/bin/python.bak

~]# ln -sv /usr/bin/python3 /usr/bin/python

为了兼容yum:修改/usr/bin/yum和/usr/libexec/urlgrabber-ext-down文件,将 #!/usr/bin/python 改为 #!/usr/bin/python2.7

2、安装阿里云SDK核心库:

~]# pip3 install aliyun-python-sdk-core

3、阿里云短信服务,申请短信签名和模板:此处传递三个参数:${host},${time},${item}。

分布式监控-zabbix(3.0-4.0)

4、编写python脚本,并测试

~]# vim /usr/lib/zabbix/alertscripts/sendsms.py

#!/usr/bin/env python

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


from aliyunsdkcore.client import AcsClient

from aliyunsdkcore.request import CommonRequest

import sys

client = AcsClient('<accessKeyId>', '<accessSecret>','default')                #此处填写accesskey信息,其获取地址:https://usercenter.console.aliyun.com


request = CommonRequest()

request.set_accept_format('json')

request.set_domain('dysmsapi.aliyuncs.com')

request.set_method('POST')

request.set_protocol_type('https') # https | http

request.set_version('2017-05-25')

request.set_action_name('SendSms')


#以下将zabbix传递的第一个参数为发送人号码,并将第二个参数message信息,切割为3个变量:host、time、item

string = sys.argv[2]

phone_number = sys.argv[1]

message = string.split(";")

dict1 = { }

dict1['host'] = message[0]

dict1['time'] = message[1]

dict1['item'] = message[2]


request.add_query_param('RegionId',"cn-hangzhou")

request.add_query_param('PhoneNumbers',phone_number)

request.add_query_param('SignName',"签名名称")                                               #填写申请的签名名称

request.add_query_param('TemplateCode',"模版CODE")                                      #填写申请的模版CODE

request.add_query_param('TemplateParam',dict1)


response = client.do_action(request)

# python2:  print(response) 

print(str(response, encoding = 'utf-8'))

~]# chmod a+x /usr/lib/zabbix/alertscripts/sendsms.py

~]# python  /usr/lib/zabbix/alertscripts/sendsms.py  手机号码 '官网;18:03;test'            #参数1:手机号码;参数2:3个参数用;号隔开

分布式监控-zabbix(3.0-4.0)

5、zabbix web端设置

管理--报警媒介类型--创建媒体类型

分布式监控-zabbix(3.0-4.0)

管理--用户--报警媒介--添加

分布式监控-zabbix(3.0-4.0)

配置--动作--事件源:触发器--创建动作

消息内容:

{TRIGGER.NAME}:{TRIGGER.KEY1};{EVENT.TIME};{TRIGGER.STATUS}

分布式监控-zabbix(3.0-4.0)

最后进行故障测试,验证是否发送成功。查看:报表--动作日志


三、钉钉群报警:

官方参考文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq

1、钉钉建群,添加自定义webhook机器人,复制webhook地址;注意新版钉钉有安全设置。示例选择自定义关键字:监控

2、建立脚本

~]# vim /usr/lib/zabbix/alertscripts/dingding.sh

#!/bin/bash

to=$1

subject=$2

text=$3

curl 'webhook地址' \                                                           #此处的地址为机器人的webhook地址

-H 'Content-Type: application/json' \

-d '

{"msgtype": "text",

"text": {

"content": "'"$text"'"

},

"at":{

"atMobiles": [ "'"$1"'" ],

"isAtAll": false

}

}'

~]# chmod a+x /usr/lib/zabbix/alertscripts/dingding.sh

~]# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/dingding.sh

~]# bash /usr/lib/zabbix/alertscripts/dingding.sh 1 2 监控                    #第三个参数必须包含自定义关键字,否则失败

3、同上设置报警媒介、用户和动作。

脚本参数按次序分别是:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}

消息内容同邮件报警一致即可

收件人填写手机号码即可

最后进行故障测试,验证是否发送成功。查看:报表--动作日志




向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI