标签:-o 监控主机 不同的 好的 人性 max 状态 客户 命令
做运维前前后后也有2年多了,时间不长不短。有些牛逼的可能已经学到很多,收入颇丰。但是自己的成长却很慢。年龄也越来越大。自己有时候想学点东西,但是上班的时候没有时间也没有氛围学习,下班后的时间很少,就不想学习。想学习的时候却感觉自己不懂的东西太多,什么都想学习,却往往都是半途而废,今天思考了一下,还是一件件的慢慢来吧。
正好目前公司的测试服务器的zabbix服务器需要重新安装并监控。感觉这是 一个系统学习的好机会,以前对于监控,会的可能就是简单的安装、添加主机、添加监控项、添加默认的魔板,像邮件微信报警什么的都是前人写好的,自己只需要添加进去进行。没有自己添加过自定义的监控项啥的。今天这个文章就是督促自己讲zabbix认真的学习下,第一可以回顾下知识点。第二就是多学点zabbix的知识。
系统环境:ubuntu-server-16.04.6 使用zabbix4.0版本
官方安装文档链接:https://www.zabbix.com/documentation/4.0/zh/manual/×××tallation/×××tall_from_packages/debian_ubuntu
wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+xenial_all.deb 下载安装包
使用ubuntu的安装deb包的命令(ubuntu的命令和centos有不少区别。感觉大家使用centos系统的较多,如有不明白的命令请自行查询。)
sudo dpkg -i zabbix-release_4.0-2+xenial_all.deb
更新软件库,sudo apt-get update ,并升级软件库。sudo apt dist-upgrade
安装 Zabbix server 并使用 MySQL 数据库
sudo apt ×××tall zabbix-server-mysql
安装 Zabbix 前端
sudo apt ×××tall zabbix-frontend-php
使用 MySQL 来导入 Zabbix server 的初始数据库 schema 和数据
sudo zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
配置zabbix-server配置文件,# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=$password
运行以下命令以启动 Zabbix server 进程,并使其开机自启:
#sudo service zabbix-server start
#sudo update-rc.d zabbix-server enable
重启apache2服务
sudo service apache2 restart
Zabbix 前端的 Apache 配置文件位于 /etc/apache2/conf-enabled/zabbix.conf。虽然已经配置了一些 PHP 参数。但是有必要取消“date.timezone”注释,并为其设置为正确的时区
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 always_populate_raw_post_data -1
php_value date.timezone Europe/Riga
安装并启动agent
sudo apt ×××tall zabbix-agent&&sudo service zabbix-agent start
接下来就是登陆https://ip/zabbix初始化设置 初始密码是Admin , zabbix
图片较多。此步骤省略。
##########
添加主机前,先创建主机组。实际环境中,服务器有不同的用途,根据不同的用户划分不同的组,配置里面的主机群组,创建主机群组。例如数据库,服务,,备份服务器等等。
添加主机前,需在被监控的服务器上安装zabbix-agent并启动,
zabbix客户端发送数据给服务端分为主被动两种模式,主动模式是zabbix客户端主动向服务端发送数据,被动模式是被动等待服务端来取数据。
主动模式的流程:
客户端每隔一段时间主动向服务端发起连接请求–>服务端收到请求,查询客户端需要取的item信息,发送给客户端–>客户端收集数据发送服务端–>结束。
被动模式的流程:
客户端开一个端口默认10050,等待服务端来取数据,然后客户端收集数据发送到服务端,然后结束。
我猜主动模式太费劲,要是客户端成千上万还不累死。赶紧问了下度娘。
下面是主动默认和被动默认的应用场景和优缺点。
被动模式的缺点:
当服务端监控的主机达到一定数量之后,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下:
1、当被监控端到达一个量级的时候,Web操作很卡,容易出现502
2、图层断裂
3、开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题
所以下面主要往两个优化方向考虑:
1、添加Proxy节点或者Node模式做分布式监控
2、调整Agentd为主动模式
由于第一个方案需要增加物理机器,所以首先尝试第二方案。
zabbix添加主机的时候默认使用的就是被动模式,一般小型企业几百台的服务器完全可以使用被动模式来监控。
下面是被动模式和主动模式的agent配置文件示范:
被动模式:
grep ‘^[a-Z]‘ /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=3
Server=*
ServerActive=127.0.0.1
Hostname=zabbix_client
HostMetadataItem=system.unam
主动模式
grep ‘^[a-Z]‘ /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
ServerActive=
Hostname=主机名
Include=/etc/zabbix/zabbix_agentd.d/.conf
**注意,添加主机的时候主机名称需要和配置文件里面的Hostname 相同
具体步骤我就不写了,我是按照下面的文章进行配置的,解释的比较详细。主动模式也成功了,https://blog.51cto.com/liqingbiao/1983851
##############
模板是zabbix的核心,因为模板集成了所有要监控的内容以及展示的图形等等,zabbix的安装部署完成后,自带了很多模板(网络设备模板、操作系统模板、常见应用软件模板),这些模板能够满足我们80%左右的应用需要,所以一般情况下不需要我们单独创建模板了。
一般创建主机的时候,添加模板,如果是linux服务器,肯定要添加tempalte OS linux模板,如果还有其他的服务,像nginx,数据库等等的。再添加对应的模式即可。一个主机可以有多个模板。
模板有几大类,应用集,监控项,触发器,图形,聚合图形,自动发现规则,web场景等等。
其中比较重要常用的就是监控项,触发器,图形。
应用集相当于给监控项分类,点击模板找到tempalte OS linux模板可以kan看到有10个应用集,有cpu、filesystem、memory等等。可以在创建监控项的时候讲其加入到应用集中。也可以自己创建自定义的应用集。
监控项是比较重要的,是监控的基础。还是以tempalte OS linux为例,点击模板选择tempalte OS linux、点击监控项、可以看到每个监控项从左到从分别为监控项的名称,触发器,键值
使用模板中的键值创建不同的监控项,以监控tcp的端口为例子,检查tcp端口是否处于监听状态, 键值是 net.tcp.listen[port] ,这里对于键值的语法不做过多解释,详细见官方文档解释。https://www.zabbix.com/documentation/4.2/manual/config/triggers/trigger
如果在生产环境中有一个项目起的端口是3456,就可以在创建监控项的时候
键值选择net.tcp.listen[3456],常见的键值还有目录的监控,
监控项可以添加到一个已经存在的模板中,也可以在一个新创建的模板中添加监控项,还可以在一个主机下创建监控项,推荐的做法是新建一个模板,然后在此模板下添加需要的应用集、监控项,然后在后面添加主机的时候,将这个创建的模板链接到主机下即可。不推荐在主机下创建监控项的原因是,如果有多个主机,每个主机都有相同的监控内容,那么就需要在每个主机下都创建相同的监控项。
创建完监控项,下一步就是给自己的监控项添加触发器,这个是可选项。
在web界面可以看到监控项有5个列表,分别为严重性,值,名称,表达式,状态,点击右上角的创建触发器,
这里面重点的是创建监控项的表达式,根据zabbix自带的监控项修改下参数就行,可以满足中小企业80% 的需求。
这里我找到一个很简单的例子,键值是vfs.file.exists[$file],监控系统会不会出现这个文件,返回值为1就是找到,返回值为0就是没找到
找到一个主机,点击这个主机的监控项,点击创建监控项 ,![](https://s1.51cto.com/images/blog/201906/28/876076d170 c871914e89f6691ddcfc9e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
要想学会写触发器表达式,首先需知道触发器表达式的几种常见函数。
常见的有diff,last,avg,change,nodata等等。具体的用法我这不做具体介绍,因为我自己也不太清楚,等到用的时候再查。
前面我们已经做到触发器了,下一步就是将触发器发出来的报警以邮件或者微信的方式发送,本人这里以邮件的方式发送。使用的是sendemail工具发送。
服务器上要是没有sendemail功能,可以在线安装 sudo apt-get install sendemail
sendemail 命令的具体用法不会的朋友可以自己查阅资料。
装好后测试发下邮件。 默认情况下邮箱的pop3,smtp等服务已经打开
$ sendemail -f 发件人 -t 收件人 -s smtp服务器,-u "邮件主题" -o message-content-type=html -o message-charset=utf8 -xu 发件邮箱 -xp 发件箱密码 -m "文件正文"
修改zabbix-server的配置文件,
AlertScriptPath=/usr/lib/zabbix/alertscripts 发送邮件或者微信的脚本存放在这
并重启zabbix-server服务
第二部编辑shell发送脚本
#!/bin/bash
recipient=$1
subject=$2
message=$3
sendemail -q -f "=?UTF-8?B?echo **公司监控|base64
?= <发件箱>" -t "$recipient" -u "$subject" -m "message" -o message-content-type=html -o message-charset=utf8 -xu 发件邮箱 -xp 发件箱密码
添加脚本后,在管理下面的报警媒介类型,创建媒体类型,见下图
脚本名称就是上面在/usr/lib/zabbix/alertscriptsl路径下创建的脚本。
在zabbix web界面添加邮件接收人
在web主界面的管理-用户-添加用户
别名,用户,姓氏可以自定义,群组选择管理员。
然后点击报警媒介,添加收件人或者收件群组
添加并更新生效。
到配置下的动作,新建一个动作。
可以将脚本钟的参数传到动作中去 ,具体见下图。
上图中的变量暂时我也不懂,是参考公司测试环境的。大家要是想了解的请自己查询资料。或者在我后续的博客中我会慢慢学习。今天的任务就是出结果,先给自己一点成就感,然后慢慢优化和消化。
还记得前面我们自定义了一个键值vfs.file.exists[$file], 吗, 就是监控主机下某个目录下是否有某文件产生,我们到该路径下创建一个文件。测试zabbix
能否监控到该主机下生成文件。
目前根据zabbix自带的键值修改参数触发触发器可以发送邮件到指定的用户。但是文件内容不是很美观和人性化。需要优化。
好了,今天忙中偷闲做了一个监控项和触发器和报警邮件发送的小实验。
下一篇和大家一起学习自动发现,自动注册,和自动化监控。
标签:-o 监控主机 不同的 好的 人性 max 状态 客户 命令
原文地址:https://blog.51cto.com/12809205/2415144