前言

搭建 linux 服务器监控的目的是自己有一台阿里云服务器内存是 2g 的,多开一些软件就会把内存和 cpu 使用率弄的很高,最终导致服务器卡死.

所以基于这个痛点,想知道当前的 cpu 和内存是多少.阿里云 ecs 控制台中也提供对服务器的监控,但是为了学习 linux 服务器监控系统,还是打算自己搭建一套.

当然 linux 服务器监控也有很多,zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.

所以基于 zabbix+grafana 打造服务器监控系统.

zabbix

模块介绍

原理介绍

Agentd 安装在被监控的主机上,Agent 负责定期收集客户端本地各项数据,并发送至 Zabbix Server 端,Zabbix Server 收到数据,将数据存储到数据库中,用户基于 Zabbix WEB 可以看到数据在前端展现图像.

当 Zabbix 监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install 等).

环境安装

zabbix 需要 zabbix-server、zabbix-agent、mysql.
其中 mysql 已经在本机安装了,在 dockercompose 文件中
写上对应的 host、user、pwd 即可.

在 mysql 中创建 zabbix 数据库,为了后期储存数据使用.

使用 docker 安 zabbix 装,dockercompose 文件如下:

version: '2'
services:
  zabbix-server-service:
    image: monitoringartist/zabbix-xxl:3.2.6
    container_name: zabbix-server-service
    restart: always
    ports:
      - "8081:80"
    environment:
      - ZS_DBHost=192.168.1.103
      - ZS_DBUser=root
      - ZS_DBPassword=123321
  zabbix-agent-a:
    image: zabbix/zabbix-agent:ubuntu-3.2.6
    links: 
      - zabbix-server-service:zabbixserverhost
    container_name: zabbix-agent-a
    restart: always
    depends_on:
      - zabbix-server-service
    environment:
      - ZBX_HOSTNAME=zabbix-agent-service-a
      - ZBX_SERVER_HOST=zabbixserverhost
  zabbix-agent-b:
    image: zabbix/zabbix-agent:ubuntu-3.2.6
    links: 
      - zabbix-server-service:zabbixserverhost
    container_name: zabbix-agent-b
    restart: always
    depends_on:
      - zabbix-server-service
    environment:
      - ZBX_HOSTNAME=zabbix-agent-service-b
      - ZBX_SERVER_HOST=zabbixserverhost

启动命令:

docker-compose up -d

查看日志命令:

docker logs -f zabbix-server-service

大概启动后 1 到 2 分钟登录 zabbix web 地址,http://127.0.0.1:80801,出现如下页面说明安装成功.

image

默认账号:Admin,密码:zabbix,登录后出现如下页面.

image

配置

修改语言

默认的语言是英文的,点击头像后展示修改语言选项,选择中文并且更新即可.

image

zabbix-agent 配置

之前配置两个 zabbix-agent-a 和 zabbix-agent-b,所以要添加两个 zabbix-agent 来采集数据并发送给 zabbix-server.

在配置,选择主机,创建主机.

image

配置 zabbix-agent 需要其容器内的 ip 地址,可以通过
docker exec -it zabbix-agent-b ip addr 命令查看.

image

在创建页面填写其 ip 和选择群组,点击保存即可.

image

此时添加了两台 zabbix-agent.

image

另外还需要给 zabbix-agent 配置监控模版,在模版中选择 Template OS Linux 并且添加即可.

image

配置模版完成后,在主机列表中 ZBX 显示绿色说明添加完成.

image

添加监控数据

在首页仪表盘上,选择常用的图形.

image

在创建页面选择 zabbix-agent-server-b 主机和 cpu jumps 监控项.

image

监控数据可以控制缩放比例和时间段.

image

grafana

简介

grafana 是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示.

配置

安装 grafana

可以使用 grafana 展示 zabbix 的数据,制作图表展示.

使用 docker 启动 grafana.

docker run -d --name=grafana2 -p 7777:3000 -v /var/lib/grafana:/var/lib/grafana  grafana/grafana:3.0.4

启动镜像完成后,等大概 1 到 2 分钟,在浏览器访问:http://127.0.0.1:7777.admin默认账号和密码都是.

image

安装 zabbix 插件

安装 zabbix 插件,进入 grafana 容器执行如下命令

docker exec -it grafana /bin/bash 进入容器

grafana-cli plugins install alexanderzobnin-zabbix-app

docker restart grafana 重启容器

在插件中的 app 中,出现 zabbix 说明 zabbix 插件安装成功.

image

image

zabbix 数据源

在 Data Sources 中新增一个数据源.

image

数据源配置:type=Zabbix、url、Zabbix 的账号、Zabbix 的密码.

url 格式为:http://ip:8081/api_jsonrpc.php

image

grafana 面板

在 Dashboards 中新建一个面板.

image

把 Panel data source 数据源改成 zabbix 数据源.

可用内存设置面板中参数如下:

Group=Linux servers (这个参数在 zabbix 设置过)

Host=zabbix-agent-service-a

Application=Memory

Item=Available memory

image

grafana 使用模版

https://grafana.com/dashboards,使用 Dashboard中提供很多第三方模版 Servers Linux 这个模版

image

复制模版的 id.

image

配置模版信息.

image

最终在一个面板中展示了当前 cpu、内存等,相对原始的数据展示更加直观.

image

结语

linux 服务器监控在实际工作中大部分是运维的工作,随着测试工程师的职责越来越广了,测试运维这个岗位也会在以后的工作中慢慢展开.

另外像测试组自己的服务器和在压测中使用的压测机器,也可以搭建监控系统来监控数据.

参考文章:

zabbix 官方文档

https://www.zabbix.com/documentation/3.4/zh/manual/quickstart/login

Docker 实战之二:zabbix 监控其他机器

https://blog.csdn.net/bbwangj/article/details/80786623

docker 部署 ELK、grafana、zabbix

https://blog.51cto.com/zhanghy/2300633

Grafana + Zabbix --- 部署分布式监控系统

https://www.cnblogs.com/yyhh/p/4792830.html#l02

docker 运行 grafana 与 zabbix 结合

https://cloud.tencent.com/info/6969106dee9ecb7eaca02744c94a0614.html

zabbix server+agent+proxy 搭建性能监控平台

https://blog.csdn.net/zha6476003/article/details/80562860

grafana 插件

https://grafana.com/plugins/alexanderzobnin-zabbix-app/installation

grafana 模版

https://grafana.com/dashboards?category=zabbix


↙↙↙阅读原文可查看相关链接,并与作者交流