笔记目录
- Linux监控平台介绍
- zabbix监控介绍
- 安装zabbix(上)(中)(下)
- 忘记Admin密码如何做
- 主动模式和被动模式
- 添加监控主机
- 添加自定义模块
- 处理图形中的乱码
- 自动发现
- 添加自定义监控项目
- 配置邮件告警(上)(下)
- 测试告警
- 不发邮件的问题处理
-
扩展
zabbix监控交换机(思科) http://tryrus.blog.51cto.com/10914693/1789847
zabbix远程执行命令 http://www.ywnds.com/?p=6610
zabbix分布式部署 http://sfzhang88.blog.51cto.com/4995876/1364399
zabbix监控tomcat(版本有点老,大家只需要参考步骤,不能照搬) http://www.fblinux.com/?p=616
https://www.hi-linux.com/posts/25047.html
一.Linux监控平台介绍
- 常见的开源监控软件
- cacti、nagios、zabbix、smokeping、open-falcon等等
- cacti、smokeping偏向于基础监控,成图非常漂亮
- cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
- open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究
- 后续以介绍zabbix为主
二.zabbix监控介绍
- C/S架构,基于C++开发,监控中心支持web界面配置和管理
- 客户端有一个采集数据的服务,这个数据可以主动的上报服务端,也可以让服务端来采集这个数据
- 单server节点可以支持上万台客户端 ,并发量还是挺大的,瓶颈在于采集数据的量。可以增加一些代理点,让它们袋体serve去采集数据,将统计好的数据来汇报给server。
- 最新版本3.4,官方文档https://www.zabbix.com/manuals
- 架构里有 5个组件
- zabbix-server 监控中心,需要一个PHP的环境,接收客户端上报信息,负责配置、统计、操作数据
- 数据存储 存放数据,比如mysql
- web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因
- zabbix-proxy 可选组件,机器量比较大的时候,它可以代替zabbix-server的功能,减轻server的压力
- zabbix-agent 客户端软件,每个客户端都需要安装,负责采集各个监控服务或项目的数据,并上报
- zabbix-server需要配置一个具体的告警规则,还需要配置一个报警的机制,列如:发邮件,发短信,发微信。
三.安装zabbix(上)(中)(下)
- 准备两台机器,一台作为服务端,一台作为客户端。
- 官网下载地址 www.zabbix.com/download
- 两台机器都下载:wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm 下载复制链接文件
- 两台机器都安装:rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm 安装该包,该包其实是个yum扩展源
- 服务端安装:yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
- 会连带安装httpd和php
- 如果mysql之前没有安装的话,需要根据lamp那一章的mysql安装方法安装mysql,也可以yum安装一个mysql
- ps aux |grep mysql 查看一下mysql会否有启动
- systemctl start mysql 启动mysql
- vim /etc/my.cnf //需要增加配置
character_set_server = utf8 设定字符集
- 重启mysqld服务后
- 进入mysql命令行,创建zabbix库
- create database zabbix character set utf8;
- 再创建用户
- grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
- quit 退出
- 导入数据
- cd /usr/share/doc/zabbix-server-mysql-3.2.7 进入该目录下
- ls查看一下
- gzip -d create.sql.gz 解压包
- ls查看一下
- mysql -uroot -pxxx zabbix < create.sql 将该文件内容导入到zabbix库里去
- systemctl start httpd; systemctl enable httpd
- vim /etc/zabbix/zabbix_server.conf //修改或增加
DBHost=127.0.0.1 //在DBName=zabbix上面增加
DBPassword=aming-zabbix //在DBuser下面增加
- systemctl start zabbix-server
- systemctl enable zabbix-server
- netstat -lntp |grep zabbix //查看监听端口
- 浏览器访问http://ip/zabbix/ web界面下面配置zabbix
- 用户名Admin 密码zabbix
- 进入后台第一件事情就是修改密码
- 完成后重新登录
- 进入mysql命令行,选择zabbix库
- mysql -uroot -p zabbix 登入到mysql数据库里
- use zabbix 使用zabbix库
- update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
- 查看一下
- 这样就更改了Admin用户的密码
- 然后重新登录一下就行了
- 在客户端上也需要下载zabbix的yum源
- wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm 前面已经做过该步骤,可以省略
- rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm 前面已经做过该步骤,可以省略
- yum install -y zabbix-agent 安装该包
- vim /etc/zabbix/zabbix_agentd.conf //编辑配置文件,修改如下配置
- Server=127.0.0.1修改为Server=192.168.133.130 //定义服务端的ip(被动模式)
- ServerActive=127.0.0.1修改为ServerActive=192.168.133.130 //定义服务端的ip(主动模式)
- Hostname=Zabbix server修改为Hostname=aming-123 //这是自定义的主机名,一会还需要在web界面下设置同样的主机名
- systemctl start zabbix-agent 启动
- systemctl enable zabbix-agent 加入到启动目录里面去,让它开机启动
- 查看一下是否运行起来
- 查看一下监听端口,监听端口为10050
四.忘记Admin密码如何做
- 进入mysql命令行,选择zabbix库
- mysql -uroot -p zabbix 登入到mysql数据库里
- use zabbix 使用zabbix库
- update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
- 查看一下
- 这样就更改了Admin用户的密码
- 然后重新登录一下就行了
五.主动模式和被动模式
- 主动或者被动是相对客户端来讲的
- 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端
- 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。 定时上报数据
- 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
- 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式
六.添加监控主机
- 先添加主机组aming-test
- 再添加主机,主机名称和可见名称都写aming-02
- 群组选择aming_test
- IP地址填写客户端的ip 192.168.133.132
- 几个概念:应用集、监控项、触发器、图形、自动发现、web监测
- 应用集(包含了监控项目,方便管理监控)
- 监控项
- 触发器(针对项目设定告警规则)
- 图形
- 自动发现
- web监测
七.添加自定义模块
- 可以自定义一个常用模板,方便给新增主机添加监控项目
- 自定义aming模板
- 把其他自带模板里面的某些监控项目(比如cpu、内存等)复制到aming模板里
- 然后取消连接,在打开自定义模板,将不需要的删除掉
- 删除的时候,要先删除监控项才能删除应用集
- 定义触发器
- 添加图形
- 自动发现,找到Template OS Linux,点击右侧的自动发现,参考Mounted filesystem discovery和Network interface discovery定义规则
- 可以直接导出、导入模板,然后再删除不需要的对象
- 主要作用,可以自定义自己想要监控的项目,定义触发点等,获取自己想要获取到的数据信息,定制出想要的图形统计表
八.处理图形中的乱码
- 设置为中文后,zabbix图形的中文文字会显示小方框
- 这是因为在zabbix的字体库中没有中文字体,需要从windows上借用一个过来
- vim /usr/share/zabbix/include/defines.inc.php //搜索ZBX_FONTPATH 服务端编辑该文件
- ls 查看一下
- 它定义的路径是“fonts”,它是一个相对路径,绝对路径为/usr/share/zabbix/fonts,而字体文件为“ZBX_GRAPH_FONT_NAME”所定义的“graphfont”,它是一个文件,绝对路径为/usr/share/zabbix/fonts/graphfont
- 将他软连接到一个支持中文的字库就行了
- windows字体路径为“C:\Windows\Fonts\”,找到“simfang.ttf”(其实就是那个仿宋简体),先把它复制到桌面上,然后上传到linux的/usr/share/zabbix/fonts/,并且改名为graphfont.ttf
- 将他选定的文件放在桌面上
- 然后将他传到Linux虚拟机目录下
- 然后移动一下
- 做个软连接,让他调用该字体库
- 然后回到浏览器,刷新一下,就可以看到显示出中文了
九.自动发现
- 配置自动发现
- 点击进去
- 更改为60秒更新一次
- 刷新之后,可以发现,他自动发现了新的东西,变成5个了
十.添加自定义监控项目
- 需求:监控某台web的80端口连接数,并出图
- 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现
- 对于第一步,需要到客户端定义脚本
- vim /usr/local/sbin/estab.sh //内容如下
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
- chmod 755 /usr/local/sbin/estab.sh
- 客户端上编辑配置文件 vim /etc/zabbix/zabbix_agentd.conf//增加
UnsafeUserParameters=1 //表示使用自定义脚本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
//自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh
- 重启zabbix-agent服务 systemctl restart zabbix-agent
- 首先到服务端验证,执行命令
- zabbix_get -s 192.168.133.132 -p 10050 -k 'my.estab.count‘
- 然后在zabbix监控中心(浏览器)配置增加监控项目
- 键值写my.estab.count
- 添加该项目后,到“监测中”-> “最新数据”查看刚添加的项目是否有数据出现
- 有了数据就可以添加图形了
- “配置”->“主机” ->“图形” ->“创建图形”
十一.配置邮件告警(上)(下)
- 使用163或者QQ邮箱发告警邮件
- 首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务
- 开启并记录授权码
- 然后到监控中心设置邮件告警
- “管理”,“报警媒介类型”,“创建媒体类型”
- {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
- 创建报警脚本mail.py
- vim /usr/lib/zabbix/alertscripts/mail.py//内容参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
- chmod 755 /usr/lib/zabbix/alertscripts/mail.py
- 创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“baojing”,注意用户的权限,如果没有需要到用户组去设置权限
- 设置动作,“配置”,“动作”,“创建动作”,名称写“sendmail”(自定义),“操作”页面,内容如下
- HOST:{HOST.NAME} {HOST.IP}
- TIME:{EVENT.DATE} {EVENT.TIME}
- LEVEL:{TRIGGER.SEVERITY}
- NAME:{TRIGGER.NAME}
- messages:{ITEM.NAME}:{ITEM.VALUE}
- ID:{EVENT.ID}
- “新的触发条件”,A维护状态 非在 维护,B触发器示警度>=未分类
- 操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”
- 切换到“恢复操作”,把信息改成如下
- HOST:{HOST.NAME} {HOST.IP}
- TIME:{EVENT.DATE} {EVENT.TIME}
- LEVEL:{TRIGGER.SEVERITY}
- NAME:{TRIGGER.NAME}
- messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
- 点击“新的”,“操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”
- 测试告警
十二.测试告警
十三.不发邮件的问题处理