Zabbix

系统监控命令

ps ifconfig
uptime netstat或ss
free ping
swapon -s traceroute
df -h iostat

监控概述

一、监控的目的

1、报告系统运行状况

  • 每一部分必须同时监控
  • 内容包括吞吐量、反应时间、使用率等

2、提前发现问题

  • 进行服务器性能调整前,知道调整什么
  • 找出系统的瓶颈在什么地方

二、监控的资源类别

1、公开数据

  • Web、FTP、SSH、数据库等应用服务
  • TCP或UDP端口

2、私有数据

  • CPU、内存、磁盘、网卡流量等使用信息
  • 用户、进程等运行信息

基本概念

一、zabbix简介

  •  zabbix是一个高度集成的监控解决方案
  • 可以实现企业级的开源分布式监控
  • zabbix通过C/S模式采集监控数据
  • zabbix通过B/S模式实现Web管理

二、监控拓扑

监控服务器(需要使用Web页面操作,因此需要先部署LNMP)

  • 监控服务器可以通过SNMP或Agent采集数据
  • 数据可以写入Mysql、Oracle等数据库中
  • 服务器使用LNMP实现web前端的管理

被监控主机

  • 被监控主机需要安装Agent
  • 常见的网络设备一般支持SNMP

实施监控的几个方面:

  • 数据采集:使用agent(可安装软件的系统上)、SNMP(简单网络管理协议,用于网络设备的数据采集)
  • 数据存储:使用没意思起来数据库
  • 数据展示:通过web页面

zabbix通过在远程主机上安装agent进行数据采集,存储到mysql数据库,通过web页面进行展示

安装zabbix 6.0

安装说明:Download and install Zabbix

文档手册:Zabbix 使用手册

环境准备

主机名 地址
zabbixserver 192.168.88.5/24
web1 192.168.88.100/24
web2 192.168.88.200/24

安装zabbix

# 1. 拷贝zabbix软件包到pubserver
[root@zabbixserver ~]# scp /linux-soft/s2/zzg/zabbix_soft/*.rpm 192.168.88.240:/var/ftp/rpms

# 2. 更新yum仓库配置
[root@pubserver ~]# createrepo -v /var/ftp/rpms/

# 3. 在pubserver上创建ansible工作环境
[root@pubserver ~]# mkdir -p zabbix/files
[root@pubserver ~]# cd zabbix/
[root@pubserver zabbix]# vim ansible.cfg 
[defaults]
inventory = inventory
host_key_checking = false
[root@pubserver zabbix]# vim inventory 
[zabbix]
zabbixserver ansible_host=192.168.88.5

[webservers]
web1 ansible_host=192.168.88.100
web2 ansible_host=192.168.88.200

[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=a

# 4. 主机批量修改主机名
[root@pubserver zabbix]# ansible all -a "hostnamectl set-hostname {{inventory_hostname}}"

# 5. 为各台主机配置yum
[root@pubserver zabbix]# vim files/local88.repo 
[BaseOS]
name = BaseOS
baseurl = ftp://192.168.88.240/dvd/BaseOS
enabled = 1
gpgcheck = 0

[AppStream]
name = AppStream
baseurl = ftp://192.168.88.240/dvd/AppStream
enabled = 1
gpgcheck = 0

[rpms]
name = rpms
baseurl = ftp://192.168.88.240/rpms
enabled = 1
gpgcheck = 0

[root@pubserver zabbix]# vim 01-upload-repo.yml 
---
- name: config repos.d
  hosts: all
  tasks:
    - name: delete repos.d
      file:
        path: /etc/yum.repos.d
        state: absent

    - name: create repos.d
      file:
        path: /etc/yum.repos.d
        state: directory
        mode: '0755'

    - name: upload local88
      copy:
        src: files/local88.repo
        dest: /etc/yum.repos.d/
[root@pubserver zabbix]# ansible-playbook 01-upload-repo.yml 

# 6. 在zabbixserver上安装相应软件包
[root@pubserver zabbix]# vim 02-inst-zabbix.yml
---
- name: install zabbix
  hosts: zabbix
  tasks:
    - name: install zabbix    # 安装软件包
      yum:
        name:
          - zabbix-server-mysql
          - zabbix-web-mysql
          - zabbix-nginx-conf
          - zabbix-sql-scripts
          - zabbix-selinux-policy
          - zabbix-agent
          - mysql-server
          - langpacks-zh_CN
        state: present
[root@pubserver zabbix]# ansible-playbook 02-inst-zabbix.yml

# 7. 启动mysqld服务
[root@pubserver zabbix]# vim 03-start-mysqld.yml
---
- name: config mysqld
  hosts: zabbix
  tasks:
    - name: start mysqld      # 启动mysqld服务
      service:
        name: mysqld
        state: started
        enabled: yes
[root@pubserver zabbix]# ansible-playbook 03-start-mysqld.yml 

# 8. 在zabbix上创建连接数据库的用户
[root@zabbixserver ~]# mysql
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
# 在binlog日志开启的情况下,打开函数生成器
mysql> set global log_bin_trust_function_creators = 1;
mysql> create user zabbix@localhost identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;

# 9. 验证数据库配置,如果登陆不到数据库表示上一步配置不正确
[root@zabbixserver ~]# mysql -uzabbix -pzabbix -hlocalhost zabbix

# 10. 在数据库中创建表并导入数据
[root@zabbixserver ~]# cp /usr/share/zabbix-sql-scripts/mysql/server.sql.gz .
[root@zabbixserver ~]# gzip -d server.sql.gz 
[root@zabbixserver ~]# mysql -uzabbix -pzabbix zabbix < server.sql

# 11. 配置zabbix_server
[root@zabbixserver ~]# vim /etc/zabbix/zabbix_server.conf
38 LogFile=/var/log/zabbix/zabbix_server.log
93 # DBHost=localhost
105 DBName=zabbix
121 DBUser=zabbix
129 DBPassword=zabbix

# 12. 配置zabbix_agent
[root@zabbixserver ~]# vim /etc/zabbix/zabbix_agentd.conf 
117 Server=127.0.0.1
125 # ListenPort=10050
133 # ListenIP=0.0.0.0
182 Hostname=zabbixserver

# 13. 配置nginx展示zabbix
[root@zabbixserver ~]# vim /etc/nginx/conf.d/zabbix.conf
# 打开第2、3行的注释,结果如下所示:
server {
        listen          8080;
        server_name     example.com;
...以下省略...

# 14. 启动相关服务
[root@pubserver zabbix]# vim 04-start-zabbix.yml 
---
- name: config zabbix
  hosts: zabbix
  tasks:
    - name: start service    # 循环启动多个服务
      service:
        name: "{{item}}"
        state: started
        enabled: yes
      loop:
        - zabbix-server
        - zabbix-agent
        - nginx
        - php-fpm
[root@pubserver zabbix]# ansible-playbook 04-start-zabbix.yml 

访问zabbixserver的8080端口,进行初始化:

Zabbix_第1张图片

Zabbix_第2张图片

Zabbix_第3张图片

Zabbix_第4张图片

Zabbix_第5张图片

Zabbix_第6张图片

注意:这里的用户名Admin,密码是zabbix

Zabbix_第7张图片

Zabbix_第8张图片

此时zabbix已经开始在监控自己了,查看默认监控配置

Zabbix_第9张图片

Zabbix_第10张图片

配置zabbix监控web1服务器

在web1上安装agent

# 1. 安装agent
[root@pubserver zabbix]# vim 05-inst-agent.yml
--- 
- name: install agent
  hosts: webservers
  tasks:
    - name: install agent    # 安装agent
      yum:
        name: zabbix-agent
        state: present
[root@pubserver zabbix]# ansible-playbook 05-inst-agent.yml 

# 2. 修改web1配置文件
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.conf 
117 Server=127.0.0.1,192.168.88.5
182 Hostname=web1

# 3. 起动服务
[root@pubserver zabbix]# vim 06-start-agent.yml 
---
- name: config agent
  hosts: web1
  tasks:
    - name: start agent      # 启动服务
      service:
        name: zabbix-agent
        state: started
        enabled: yes
[root@pubserver zabbix]# ansible-playbook 06-start-agent.yml

在web页面中添加对web1的监控

  • 主机:安装了agent,被监控的主机
  • 主机组:根据需求,将多台主机加入到一个主机组中,方便管理。系统默认已经创建了一些主机组。
  • 模板:是监控项的集合。将模板应用到主机,主机就可以直接拥有模板中的所有监控项。系统中默认已经创建了一些模板。

Zabbix_第11张图片

Zabbix_第12张图片

Zabbix_第13张图片

常用监控指标

  • Space utilization:以百分比显示的磁盘利用率
  • Used space:已用磁盘空间
  • Available memory:可用内存
  • CPU idle time:CPU空闲时间。不宜过低。
  • Load average (1m avg)、Load average (5m avg)、Load average (15m avg):CPU1分钟、5分钟、15分钟的平均负载。这个值不应长期大于核心数。
  • Interface eth0: Bits received:网卡接收到的数据量
  • Interface eth0: Bits sent:网卡发送的数据量
  • Number of processes:系统运行的进程数
  • Number of logged in users:已登陆的用户数

自定义监控项

实现监控web1用户数量的监控项

在被控端创建key。被控端被监控的内容叫作key,可以理解为它就是一个变量名,具体的名字自己定

在web页面中创建监控项。监控项对应key值

在被控端创建key

创建key的语法

UserParameter=自定义key值,命令
# 命令的执行结果,是key的value

创建自定义配置文件。文件名自定义。

[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.conf 

[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/usernum.conf
UserParameter=usernum,sed -n '$=' /etc/passwd
[root@web1 ~]# systemctl restart zabbix-agent.service 

验证自定义监控项

# 1. 安装zabbix-get
[root@zabbixserver ~]# yum install -y zabbix-get
[root@web1 ~]# yum install -y zabbix-get

# 2. 获取监控项的值
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k usernum
23
[root@zabbixserver ~]# zabbix_get -s 192.168.88.100 -k usernum
23

创建模板

创建模板

Zabbix_第14张图片

Zabbix_第15张图片

创建监控项

Zabbix_第16张图片

Zabbix_第17张图片

应用模板到主机

Zabbix_第18张图片

Zabbix_第19张图片

查看结果

Zabbix_第20张图片

配置告警

  • 默认情况下,监控项不会自动发送告警消息
  • 需要配置触发器与告警,并且通过通知方式发送信息给联系人
  • 触发器:设置条件,当条件达到时,将会执行某个动作
  • 动作:触发器条件达到之后要采取的行为,比如发邮件或执行命令

一、用户数超过30,发送告警邮件

  • 当web1的用户数超过50时,认为这是一个问题(Problem)
  • 当出现问题时,将会执行动作。
  • 执行的动作是给管理员发邮件。
  • 给管理员发邮件,还要配置邮件服务器的地址,以及管理员的email地址

二、实施

1、创建触发器规则

Zabbix_第21张图片

Zabbix_第22张图片

Zabbix_第23张图片

上图中,点击“添加”后,出现下图:

Zabbix_第24张图片

上图中,点击“插入”后的结果如下:

Zabbix_第25张图片

创建邮件类型的报警媒介

Zabbix_第26张图片

Zabbix_第27张图片

为用户关联邮箱

Zabbix_第28张图片

Zabbix_第29张图片

Zabbix_第30张图片

Zabbix_第31张图片

创建动作:当出现Problem状态时,给admin发邮件

你可能感兴趣的:(tornado)