19.1 Linux监控平台介绍
常见开源监控软件
·cacti、nagios、zabbix、smokeping、open-falcon等等
·cacti、smokeping偏向于基础监控,成图非常漂亮
·cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
·open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究
·后续以介绍zabbix为主
·C/S架构,基于C++开发,监控中心支持web界面配置和管理
·单server节点可以支持上万台客户端
·最新版本3.4,官方文档https://www.zabbix.com/manuals
·5个组件:
·zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
·数据存储 存放数据,比如mysql
·web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因
·zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力
·zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报
·zabbix监控流程图
·下载zabbix的rpm包:
官网下载地址 www.zabbix.com/download,选择需要的版本,找到rpm包地址,wget到本地
·下载rpm包,并安装
[root@localhost ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm [root@localhost ~]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm 警告:zabbix-release-3.2-1.el7.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:zabbix-release-3.2-1.el7 ################################# [100%] [root@localhost ~]# cat /etc/yum.repos.d/##yum源中增加了zabbix的源,可直接yum安装 CentOS7-Base-163.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo epel-testing.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo epel.repo zabbix.repo [root@localhost ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql (过程略)
zabbix-agent 客户端软件
zabbix-get 使用命令行,在服务端上用来获取客户端的某些监控项目数据的工具
zabbix-server-mysql 安装的和mysql相关的一些数据,安装zabbix时需要导入
zabbix-web web界面
zabbix-web-mysql web和mysql相关的东西
(服务端要安装所有包,而客户端只要安装zabbix-agent)
会连带安装httpd和php
如果mysql之前没有安装的话,需要根据lamp那一章的mysql安装方法安装mysql
(安装过程详见:https://blog.51cto.com/11530642/2073264,此处省略)
·启动mysqld,设置字符集(如果不设置,zabbix的web界面设置为中文的话,会有问题)
[root@localhost ~]# systemctl start mysqld [root@localhost ~]# vim /etc/my.cnf
·重启mysqld服务后,进入mysql命令行,创建zabbix库
[root@localhost ~]# systemctl restart mysqld [root@localhost ~]# mysql -uroot -p123456 mysql> create database zabbix character set utf8; Query OK, 1 row affected (0.00 sec)
·再创建用户,对库有读写权限,让web代码(php代码)连接mysql
zabbix-server启动的前提也是需要能连接mysql
mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456'; Query OK, 0 rows affected (0.00 sec)
·导入数据:
[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/ [root@localhost zabbix-server-mysql-3.2.11]# gunzip create.sql.gz##解压 [root@localhost zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql NEWS README [root@localhost zabbix-server-mysql-3.2.11]# mysql -uroot -p123456 zabbix < create.sql Warning: Using a password on the command line interface can be insecure.
·开启httpd服务(nginx需要关闭):
[root@localhost zabbix-server-mysql-3.2.11]# cd [root@localhost ~]# systemctl start zabbix-server [root@localhost ~]# /etc/init.d/nginx stop ##关闭nginx Stopping nginx (via systemctl): [ 确定 ] [root@localhost ~]# netstat -lntp ##nginx已关闭,80端口没有被监听
[root@localhost ~]# systemctl start httpd ##启动httpd [root@localhost ~]# !net
[root@localhost ~]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@localhost ~]# systemctl enable zabbix-server ##设置开机启动 Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service. [root@localhost ~]# systemctl disable nginx ##关闭nginx开机启动 nginx.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig nginx off [root@localhost ~]# chkconfig nginx off [root@localhost ~]# ps aux |grep zabbix ##zabbix已启动但是并没监听端口 zabbix 2474 0.0 0.3 254580 3484 ? S 22:18 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf root 2640 0.0 0.0 112676 984 pts/0 R+ 22:21 0:00 grep --color=auto zabbix [root@localhost ~]# netstat -lntp
·由于zabbix-server没有监听端口,所以去查看日志
[root@localhost ~]# less /var/log/zabbix/zabbix_server.log 2474:20180412:222009.390 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mys
·修改zabbix-server配置文件:
[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf
DBHost就是服务端的ip,如果是本机可以写127.0.0.1或者localhost,如果在远程机器,写该机器ip
DBName=zabbix 默认就是zabbix
DBUser=zabbix 就是之前grant创建用户连接的用户名
DBPassword=123456 同上,是之前授权时用的密码
如果DBHost写了远程机器ip,类似于192.168.65.129,那么在grant授权时,’zabbix‘@xxx,xxx就要写webUI,也就是php代码所在机器的ip(也就是服务端ip) 192.168.65.128,在这里试验是本机127.0.0.1
·重启zabbix-server服务:
[root@localhost ~]# systemctl restart zabbix-server [root@localhost ~]# ps aux |grep zabbix[object Object]
[root@localhost ~]# netstat -lntp
(zabbix-server服务监听的10051端口)
·配置web界面:
输入zabbix监控中心的IP地址:http://192.168.65.128/zabbix/setup.php
yum安装zabbix,默认会安装httpd以及他的配置文件,因此会省心很多
查看右侧显示 Fail 的项目,上图中是timezone没有设置,可在php.ini中配置
·编辑php默认配置文件
[root@localhost ~]# vim /etc/php.ini
·重启httpd后再刷新网页:
[root@localhost ~]# systemctl restart httpd
全部显示OK进入下一步
host是php代码所在机器
port写0是默认3306端口,如果是其他端口则写实际端口号
name是数据库名
user和password是授权时定义的user和password
主机名可随意定义
·最后确认信息是否正确:
·最后提示成功
·登录一下,默认用户名为Admin,密码为zabbix
·进入后台第一件事情就是修改密码:
在 Adminstration ——> Users ——> Admin 中
点击Change password
重新设置并重复确认
更改语言为中文:
完成后点Update,刷新页面之后,界面就成中文了
·zabbix客户端安装:
[root@localhost ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm [root@localhost ~]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm 警告:zabbix-release-3.2-1.el7.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:zabbix-release-3.2-1.el7 ################################# [100%] [root@localhost ~]# yum install -y zabbix-agent##只要安装zabbix-agent包 (过程略)
·zabbix配置文件更改:
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
(服务端和客户端连接,客户端上需要指定服务端ip,设置白名单ip)
Server=192.168.65.128(服务端ip,被动模式)
ServerActive=192.168.65.128(服务端ip,主动模式)
(Server 和 ServerActive 都要设置,客户端有可能用主动模式,有可能用被动模式,如果只设置 Server ,那只能用被动模式,只能等待服务端过来取数据,如果需要主动上报数据就要设置后者)
·还要自定义的主机名,一会还需要在web界面下设置同样的主机名
[root@localhost ~]# systemctl start zabbix-agent [root@localhost ~]# ps aux |grep zabbix zabbix 1642 0.0 0.1 80664 1264 ? S 23:52 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf zabbix 1643 0.0 0.1 80664 1300 ? S 23:52 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 1644 0.0 0.1 80664 1844 ? S 23:52 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 1645 0.0 0.1 80664 1844 ? S 23:52 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 1646 0.0 0.1 80664 1844 ? S 23:52 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 1647 0.0 0.2 80796 2196 ? S 23:52 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 1649 0.0 0.0 112676 976 pts/0 S+ 23:52 0:00 grep --color=auto zabbix [root@localhost ~]# netstat -lntp
(zabbix-server监听端口为10051,而zabbix-agent监听端口为10050)
19.5 忘记Admin密码如何做
进入到数据库中直接更改数据
[root@localhost ~]# mysql -uroot -p123456
mysql> use zabbix; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A mysql> desc users;
mysql> update users set passwd=md5('alex123456') where alias='Admin'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from users;
·此时再刷新网页,就可以用新密码登录zabbix