六十四、Linux监控平台介绍、zabbix监控介绍、安装zabbix、忘记Admin密码如何做
一、Linux监控平台介绍
cacti、nagios、zabbix、smokeping、open-falcon等等
cacti、smokeping偏向于基础监控,成图非常漂亮
cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图。
open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究。
nagios:更注重于某个监控的现在的状态,过去历史不关注。
二、zabbix介绍
C/S架构,基于C++开发,监控中心支持web界面配置和管理
单server节点可以支持上万台客户端
最新版本3.4,官方文档https://www.zabbix.com/manuals
5个组件
zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据,需要一个php的环境。
数据存储 存放数据,比如mysql,mariadb等。
web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因,没有它就不能在浏览器里去配置。
zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力
zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报
监控流程图
解析:
添加主机到监控中心,添加监控的项目,监控项目能和服务端通信了,就会采集数据到到数据库(mysql),数据采集过程可以是主动或被动,zabbix-server中心需要设置一个告警,zabbix需要配置告警的规则和机制,检测到数据不正常时告警的方式是发微信还是发邮件,都在server中心配置,存储的数据是可以用图形呈现出来的,最终是以web界面展现出来。
三、安装zabbix
官网下载地址 www.zabbix.com/download
zabbix可以yum安装,但是需要安装epel扩展源,epel扩展源里最高版本只能安装到2.2,所以我们使用官网提供的对应版本的yum源。
Zabbix服务端安装
# 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
此时在/etc/yum.repos.d/里可以看到zabbix.repo的文件,这就是安装的rpm包的文件。
# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
zabbix-get:服务端上的一个工具,可以通过命令行模式获得客户端的某些监控项目的数据。
zabbix-server-mysql:和mysql相关的文件数据,在安装zabbix时要把这些数据导入进去的。
zabbix-web:web界面。
zabbix-web-mysql:web和mysql相关的东西。
这里会连带安装httpd和php。
如果mysql之前没有安装的话,需要根据lamp那一章的mysql安装方法安装mysql,检查mysql,把它启动起来。
# vim /etc/my.cnf //在mysqld下增加一行配置,意思是设置字符集,如果不设置,后面web界面的中文显示可能就会有问题
character_set_server = utf8
重启mysqld服务systemctl restart mysql
进入mysql命令行
创建zabbix库
create database zabbix character set utf8; //指定字符集为utf8
再创建用户
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
//这个用户是需要让web代码连接mysql的, zabbix-server启动的前提也是需要能连接mysql的。
然后quit退出来。
导入数据
# cd /usr/share/doc/zabbix-server-mysql-3.2.11/
# gzip -d create.sql.gz
//解压完生成了create.sql文件
# mysql -uroot -p12345 zabbix < create.sql
# systemctl start zabbix-server
# systemctl enable zabbix-server
启动httpd之前要先检查一下你的nginx启动没有,需要停止,因为nginx监听了80端口,httpd需要监听80。/etc/init.d/nginx stop
# systemctl start httpd; systemctl enable httpd
# systemctl disable nginx
# chkconfig nginx off
错误:此时ps看到有进程,但是netstat没有监听zabbix的端口,说明这个zabbix没有启动起来,不能连接MySQL。开始排查:
日志:/var/log/zabbix/zabbix_server.log
# vim /etc/zabbix/zabbix_server.conf //修改或增加
DBHost=127.0.0.1
//在DBHost最后面一行增加,这里可以写127.0.0.1,也可以写localhost,创建用户时写的是127.0.0.1,所以这里也写这个;因为mysql装在了这台机器上,mysql在别的机器上就写那台机器的IP。
DBName和DBUser有需要的话也要定义,这里已经默认是zabbix,所以不改。
DBPassword=aming-zabbix //在DBuser下面增加
# systemctl restart zabbix-server
# netstat -lntp |grep zabbix //查看监听端口为10051
因为yum安装zabbix的时候,默认安装了httpd以及配置文件,全都配置好了,所以可以直接访问了
浏览器访问http://192.168.93.130/zabbix/ //web界面下面配置zabbix
点下一步,Next step
右侧OK的就不用管,有一项是Fail,date.timezone。到PHP的配置文件里修改
# vim /etc/php.ini
搜索timezone
date.timezone = Asia/shanghai //将这行填好,把前面的分号去掉
# systemctl restart httpd
再进浏览器刷新,变成OK了,下一步。
填好信息,端口0代表默认的3306,如果是其他就写其他的,
用户名zabbix,密码aming-zabbix
下一步,自定义一个zabbix server的name,下一步,检查确认无误再下一步。
出现:Congratulations! You have successfully installed Zabbix frontend.
意思是已经成功安装了zabbix前端。
然后下一步,出现登录界面,默认的用户名Admin 密码zabbix。
进入后台第一件事情就是修改密码
按照1,2,3的顺序点进去后再点击change password就可以修改密码了,然后修改语言为Chinese,改好点Update。再次登录时用新密码登录即可。
Zabbix客户端安装
在客户端上也需要下载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.93.130 //定义服务端的ip(被动模式)
ServerActive=127.0.0.1修改为ServerActive=192.168.93.130 //定义服务端的ip(主动模式)
被动模式:只能服务端从客户端上取数据。
主动模式:客户端主动上报把数据给服务端。
Hostname=Zabbix server修改为Hostname=yaowei-02 //这是自定义的主机名,一会还需要在web界面下设置同样的主机名
这两个IP都要写,原因在于这个客户端有可能用主动模式,有可能用被动模式
# systemctl start zabbix-agent
# systemctl enable zabbix-agent
# netstat -lntp |grep zabbix
看到端口是10050,服务端的是10051。
四、忘记Admin密码如何做
进入mysql命令行,选择zabbix库
# mysql -uroot -p
mysql> use zabbix //切换到zabbix库
mysql> update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
这样就更改了Admin用户的密码