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节点可以支持上万台客户端; 最新版本3.4,官方文档https://www.zabbix.com/manuals
- zabbix组件
- zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据;
- 数据存储,存放数据(如:mysql);
- web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因;
- zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力;
- zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报。
- zabbix监控流程图
二、zabbix 安装
1. zabbix服务端部署
zabbix 获取:
官网下载地址:www.zabbix.com/download
获取zabbix的yum源库:wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
安装zabbix:
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
//这个是安装zabbix的yum源仓库yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
//会连带安装httpd和php数据库安装设置、导入安装MySQL数据库;具体安装步骤:略
修改MySQL默认字符集;编辑 /etc/my.cnf 增加配置character_set_server = utf8
;重启mysqld服务;
创建zabbix库:create database zabbix character set utf8;
创建数据库账户:grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
导入数据库初始数据:cd /usr/share/doc/zabbix-server-mysql-3.2.7
gzip -d create.sql.gz
mysql -uroot -pxxx zabbix < create.sql
启动apache
systemctl start httpd
systemctl enable httpd
修改zabbix配置
vim /etc/zabbix/zabbix_server.conf
//修改或增加DBHost=127.0.0.1 //在DBName=zabbix上面增加 DBPassword=aming-zabbix //在DBuser下面增加
启动zabbix服务
systemctl start zabbix-server zabbix-agent
systemctl enable zabbix-server zabbix-agent
检查、测试
netstat -lntp |grep zabbix
//查看监听端口
浏览器访问http://ip/zabbix/
web界面下面配置zabbix(用户名Admin 密码zabbix); 进入后台第一件事情就是修改密码。
2. 忘记Admin密码如何做
忘记zabbix登录密码,可对数据库账户字段更新覆盖即可;登入mysql,选择zabbix库mysql -uroot -p zabbix
//登入MySQLupdate users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
//更新账户字段数据,即可
3. zabbix客户端部署
- 获取yum源:
wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
- 安装yum源:·
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
- 安装zabbix客户端程序:
yum install -y zabbix-agent
- 修改zabbix客户端配置文件:
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
三、zabbix 配置使用
1. 主动模式和被动模式(主动或者被动是相对客户端来讲)
- 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端;
- 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可;
- 主、被动模式适应的场景:当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力;服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式。
2. 添加主机
先添加主机组web_group
;再添加主机,主机名称和可见名称都写wbe_01,群组选择web_group
;IP地址填写客户端的ip。
- 主机组:配置-->主机群组-->创建主机群组;
- 添加主机:配置-->主机--创建主机;
3. 添加模板:可以自定义一个常用模板,方便给新增主机添加监控项目
几个概念:应用集、监控项、触发器、图形、自动发现、web监测
自定义web模板
把其他自带模板里面的某些监控项目(比如cpu、内存等)复制到web模板里- 方法1. 将已有的模板导出,导出的为xml文件,对xml进行编辑,然后重新导入即可;(此方法不推荐使用,可能会出现错误)
- 方法2. 配置-->模板-->创建模板;打开创建的模板-->链接的模板-->连接指示器,选择需要借鉴的模板,然后点击添加(添加一定要点击),然后点击更新;重新打开新建的模板,选择链接的模板-->链接的模板-->取消链接(不要点击取消链接并清理);点击更新,复制完成。(建议使用此方法复制模板,去自定义)
定义触发器
添加图形
自动发现,找到Template OS Linux,点击右侧的自动发现,参考Mounted filesystem discovery和Network interface discovery定义规则;可以直接导出、导入模板,然后再删除不需要的对象
4. 处理图形乱码
- 问题:设置为中文后,zabbix图形的中文文字会显示小方框;
- 解决:在windows字体库找到
simfang.ttf
(其实就是那个仿宋简体),路径为C:\Windows\Fonts\
,,先把它复制到桌面上,然后上传到linux的/usr/share/zabbix/fonts/
,并且改名为graphfont.ttf
,即可。
5. 添加自定义监控项目
需求:监控某台web的80端口连接数,并出图
两步:
- zabbix监控中心创建监控项目
- 针对该监控项目以图形展现
客户端定义脚本
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;添加该项目后,到“监测中”“最新数据”查看刚添加的项目是否有数据出现;有了数据就可以添加图形,“配置-->主机-->图形-->创建图形”。
6. 配置告警
使用163或者QQ邮箱发告警邮件,首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务,开启并记录授权码;
然后到监控中心设置邮件告警“管理-->报警媒介类型-->创建媒体类型”。
脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
创建报警脚本mail.py
vim /usr/lib/zabbix/alertscripts/mail.py
//内容参考https://gitee.com/Yue_Chen/codes/fmkg916zytdp5sboviu2080chmod 755 /usr/lib/zabbix/alertscripts/mail.py
//设置脚本权限创建一个接受告警邮件的用户,“管理-->用户-->创建用户-->报警媒介-->类型选择“baojing”;
注意用户的权限,如果没有需要到用户组去设置权限,设置动作,“配置-->动作-->创建动作”,名称写“sendmail”(自定义),
“新的触发条件”,A维护状态 非在 维护,B触发器示警度>=未分类
“操作-->消息内容”页面,内容如下
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”
切换到“恢复操作”,把信息改成如下
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”
- 测试告警