linux监控平台介绍

常见开源监控软件

  • cacti、nagios、zabbix、smokeping、open-falcon 等等。

  • nagios和zabbix流行度很高。

  • cacti、smokeping 偏向于监控基础的东西。

    • cacti可以监控网络设备,它的图形表现得非常好,非常漂亮。

    • IDC 机房比较喜欢用cacti、smokeping,因为适合监控网络设备。
  • cacti、nagios、zabbix 服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不同存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图

  • open-falcon 是小米公司开发的监控软件。开源后收到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究。

  • zabbix、nagios、cacti 都是支持web界面去管理、控制。

    • 其中zabbix在web界面下管理得非常彻底。可以去增加监控节点,可以去配置具体的监控项目等。
  • nagios 和zabbix相比,更注重于某一个监控的状态。

zabbix 监控介绍

  • zabbix 有一个服务端,去客户端抓数据,客户端上必须有个服务启动着,服务是负责采集数据的,数据是可以主动上报给服务端的,也可以让服务端连接客户端抓数据。所以,客户端分两种模式,一种是主动模式,一种是被动模式。

  • zabbix 也是C/S架构,基于c++开发,监控中心支持web界面配置和管理(需要php环境)

  • 单server节点可以支持上万台客户端

    • 它的瓶颈可能在于采集数据的量,如果上万台客户端监控的项目太多的话也会导致效率降级。这时,就需要对zabbix进行优化了,增加一些proxy(代理点),这些代理点充当server的角色,替代server 去采集数据,最终得到分析结果再汇报给server。
  • 最新版本3.4(更新速度还是很快的),官方文档https://www.zabbix.com/manuals

  • zabbix 组件 (zabbix整个体系交媾中有一下5个主要角色:)

    • zabbix-server 监控中心

    zabbix-server是整个监控体系中最核心的组件,它负责接收客户端上报的信息,负责配置、统计、操作数据。

    • 数据存储(如:mysql、mariadb、SqlServer)

    监控过程中收集的所有信息都存储在这里。

    • web界面

    web界面,即web UI。这是zabbix监控简单易用的原因之一,因为我们可以在web界面中配置、管理各个客户端。运行web界面需要有PHP环境支持。

    • zabbix-proxy

    zabbix-proxy为可选组件,用于监控节点非常多的分布式环境,它可以代理zabbix-server的功能,减轻zabbix-server的压力。

    • zabbix-agent

    zabbix-agent为部署在各个客户端上的组件,用于采集各个监控项目的数据,并把采集的数据传输给zabbix-proxy或zabbix-server。

  • zabbix 监控流程图
    9PtpjJ.png

// 如果想要监控一个服务器,需要将主机添加到监控中心去,让他们两者之间通信,然后还要添加监控的项目。然后就能采集数据,将数据上报到所谓数据中心(mysql)去。其中采集过程可以是主动也可以是被动。zabbix-server需要配置一个告警规则。当采集数据值到达报警条件则告警,没达到就仅仅是存储。还需要配置一个告警机制。所有的配置都是在web界面配置的。所有的数据都以图形的形式在web界面呈现。

安装zabbix

准备工作

  • 两台机器:一台作为server (ip:192.168.159.131),一台作为client(ip:192.168.159.132)。

  • 两台机器均安装zabbix;server安装数据库 。

  • 可以yum 直接安装的zabbix,但是需要安装epel拓展源,而且版本是2.2,有点老旧。在此使用zabbix 官方提供的对应版本的yum 源安装较新版本的zabbix。

  • zabbix官网下载地址:www.zabbix.com/download

两台机器都安装zabbix的yum源仓库

到zabbix官网下载地址中下rpm包:
[root@localhost src]# wget # rpm -i http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

安装yum源仓库:
[root@localhost src]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm 

yum.repos.d下多少了一个zabbix.repo 文件:
[root@localhost src]# ls /etc/yum.repos.d/zabbix.repo 
/etc/yum.repos.d/zabbix.repo

配置server端

  • 安装zabbix以及相关组件

    [root@localhost src]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
    // zabbix-agent:客户端程序
    // zabbix-get:服务端上命令行获取客户端检测项目的工具
    // zabbix-server-mysql:zabbix-server MySQL版
    // zabbix-web:web界面
    // zabbix-web-mysql:web界面MySQL相关

    // 该过程会连带安装PHP和HTTP

    // 安装mysql,可以使用yum安装,也可以使用二进制包安装。

  • 配置mysql

    // 启动mysql
    // 使用ps aux | grep mysqld 查看mysql服务是否启动。

    编辑mysql配置文件,添加下面内容:
    [root@localhost src]# vim /etc/my.cnf
    character_set_server = utf8
    // 设置默认字符集utf8目的是辅助web界面中文显示

    重启mysql:
    [root@localhost src]# /etc/init.d/mysqld restart
    Shutting down MySQL.. SUCCESS!
    Starting MySQL. SUCCESS!

    进入mysql命令行,创建zabbix库和用户
    [root@localhost src]# mysql -uroot -p

    mysql> create database zabbix character set utf8;
    Query OK, 1 row affected (0.00 sec)
    // 创建zabbix库的时候指定编码为utf8

    mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456';
    Query OK, 0 rows affected (0.00 sec)
    // 创建zabbix是用来让php代码连接mysql的
    // 还有就是监控中心服务启动的前提是能够连接mysql
    // 客户端采集了数据需要把数据传递给服务端,服务端需要一个用户去将数据写入数据库

    mysql> quit
    Bye

    向zabbix库中导入原始数据:
    // 没有数据zabbix 就无法以web的形式展现给我们

    [root@localhost src]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/
    // 原始数据所在目录

    [root@localhost zabbix-server-mysql-3.2.11]# ls
    AUTHORS ChangeLog COPYING create.sql.gz NEWS README

    [root@localhost zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz
    // 解压 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 -p112233 zabbix < create.sql
    // 将create.sql 导入到zabbix库中

  • 启动zabbix、httpd服务

    启动zabbix-server 和http 服务:
    [root@localhost ~]# systemctl start zabbix-server
    [root@localhost ~]# systemctl start httpd
    // 启动httpd服务前,需先查看80端口是否被占用
    // 启动完之后再去查看下80端口是否是被httpd服务占用
    // 启动完之后检查zabbix状态是否正常
    // zabbix默认监听10051端口

    将zabbix-server和httpd设置为开机启动:
    [root@localhost ~]# systemctl enable zabbix-server
    [root@localhost ~]# systemctl enable httpd

  • 检查zabbix服务状态(进程、端口占用)时,发现服务启动没,但是没有监听端口,此时需要进行错误排查

    查看zabbix日志:
    [root@localhost ~]# less /var/log/zabbix/zabbix_server.log
    3839:20180131:151323.944 using configuration file: /etc/zabbix/zabbix_server.conf
    3839:20180131:151323.975 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local
    MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

    // 根据日志提示得知,zabbix不能正常连接mysql,需要去改一下配置文件

    修改配置文件:
    [root@localhost ~]# vim /etc/zabbix/zabbix_server.conf
    DBHost=127.0.0.1
    // 此处写mysql所在机器的IP(生产环境中mysql可能单独使用一台机器)
    // 该IP应该和数据库授权时指定的来源IP一致
    DBName=zabbix
    DBUser=zabbix
    DBPassword=123456
    // 这些都是之前创建mysql用户中定义的

    重启zabbix服务:
    [root@localhost ~]# systemctl restart zabbix-server

    // 如果zabbix服务重启失败,则检查配置文件时候有错误。
    // 注意新加配置的大小写!!!

    查看zabbix服务的进程和端口:
    [root@localhost ~]# ps aux | grep zabbix
    // zabbix正常启动之后进程数量很多

    [root@localhost ~]# netstat -lntp | grep zabbix
    tcp 0 0 0.0.0.0:10051 0.0.0.0: LISTEN 4184/zabbix_server
    tcp6 0 0 :::10051 :::
    LISTEN 4184/zabbix_server
    // zabbix 占用的是10051端口

配置web界面

  • 使用浏览器访问server机器上的ip:192.168.159.131/zabbix 进入安装引导界面。

  • 进行操作前保证server已经关闭防火墙

  • 在yum安装zabbix时已经帮你安装了httpd以及配置文件,所有都配置好了。

1、使用浏览器访问server机器IP:192.168.159.131/zabbix

9ip6H0.md.png

2、点击“Next step”进入检测界面
9ip4gJ.md.png
// 提示错误,PHP无法识别“data.timezone”(时区)

// 编辑php配置文件,更改时区

[root@localhost ~]# vim /etc/php.ini
date.timezone =Asia/Shanghai

重启httpd服务:
[root@localhost ~]# systemctl restart httpd

3、配置数据库信息
9i9PVP.md.png

4、定义zabbix 主机名
9i9yxH.md.png

6、提示安装完成
9i9gsA.png

7、进入登录界面
9i95i8.png
注意 : 管理员初始用户名admin密码zabbix

8、点击Administration 进入如下界面,点击Admin可以修改密码及语言等
9iCdyj.png

9、修改密码及语言
9iPCh8.png
// 修改完之后点击update即可生效。刷新即可显示中文界面。下次登录则需要使用新密码。

重置服务端zabbix管理员密码

  • 如果忘记zabbix(web界面)管理员密码,可通过zabbix服务器的数据库进行密码更改!

    进入mysql命令
    [root@localhost ~]# mysql -uroot -p
    切换库:
    mysql> use zabbix;

    更改密码:
    mysql> update users set passwd=md5('111222') where alias='Admin';
    // 新密码为111222

zabbix 客户端配置

  • 在安装zabbix之前,需要先下载yum源,安装yum源。(之前已经做过了)

  • 安装zabbix

    [root@localhost src]# yum install -y zabbix-agent
    // zabbix-agent 客户端

  • 编辑配置文件

    [root@localhost src]# vim /etc/zabbix/zabbix_agentd.conf
    Server=192.168.159,131
    // 将Server改为监控中心机器ip
    // 93行

    ServerActive=192.168.159.131
    // 将ServerActive 改为监控中心机器ip
    // 136行
    // 如果只写上面那个server只能使用被动模式(只能等待服务端来采集信息)
    // 如果想主动上报则要配置serveractive(自动将信息上报给服务端)

    Hostname=Zabbix 01
    // 将hostname改成一个能够识别的主机名。
    // 147行
    // 该参数有利于更好的辨别服务端监控是哪台主机的状态

  • 启动zabbix-agent服务

    启动zabbix-agent服务:
    [root@localhost src]# systemctl start zabbix-agent

    查看zabbix进程:
    [root@localhost src]# ps aux | grep zabbix

    查看zabbix端口:
    [root@localhost src]# netstat -lntp | grep zabbix
    tcp 0 0 0.0.0.0:10050 0.0.0.0: LISTEN 5496/zabbix_agentd
    tcp6 0 0 :::10050 :::
    LISTEN 5496/zabbix_agentd
    // zabbix-agent监听的是10050端口

    设置zabbix-agent开机启动:
    [root@localhost src]# systemctl enable zabbix-agent