19.1 Linux 监控平台介绍
常见开源监控软件
.cacti,nagios,zabbix,smokeping,open-falcon 等等
.cacti,smokeping 偏向于基础监控, 成图非常漂亮
.cacti,nagios,zabbix 服务端监控中心, 需要 php 环境支持, 其中 zabbix 和 cacti 都需要 mysql 作为数据存储, nagios 不用存储历史数据, 注重服务或者监控项的状态, zabbix 会获取服务或者监控项目的数据, 会把数据记录到数据库里, 从而可以成图
.open-falcon 为小米公司开发, 开源后受到诸多大公司和运维工程师的追捧, 适合大企业, 滴滴, 360, 新浪微博, 京东等大公司在使用这款监控软件, 值得研究
. 后续以介绍 zabbix 为主
19.2 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 监控流程图
19.3/19.4/19.6 安装 zabbix
. 下载 zabbix 的 rpm 包:
官网下载地址 http://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
(安装过程详见: http://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
来源: http://www.bubuko.com/infodetail-2560448.html