Zabbix入门

zabbix

image.png

进程构成
zabbix安装完成后会产生5个程序: zabbix_ agentd、 zabbix get、zabbix_ proxy、
zabbix_ sender、 zabbix_ server, zabbix_ java_ gateway是可选,这个需要另外安装

➢ zabbix_ agentd: 客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等> ➢zabbix_ get: zabbix 工具,单独使用的命令,通常用于排错
➢zabbix_ sender: zabbix. 工具,用于发送数据给server 或者proxy ,在脚本完成之后
使用sender 主动将数据提交.

➢zabbix_server:zabbix服务端守护进程,所有的数据都是被提交或主动提交到zabbix_ server 端➢zabbix_ proxy: zabbi x代理守护进程。功能类似server,唯一不同的是它只是-一个中转站,
它需要把收集到的数据提交/被提交到server里
➢zabbix_ java_ gateway: zabbix2. 0之后引入的-一个功能。顾名思义: Java网关,类似
agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获
取数据。它的数据最终会给到server或者proxy

Zabbix监控原理:

Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)。

一个完整的监控系统所需指标:

1.采样:周期性的获取某个被监测指标的相关数据
2.存储:将采集到的数据存储在指定的存储系统中,Zabbix默认是MySQL> 对于数据的存储可分为两大类:>   历史数据:可理解为过去某一时间点的数据
  趋势数据:可理解为过去某一段时间的数据
3.展示:采集完数据后,为了使数据能更直观的展现在用户面前,可将采集到的数据做二次处理,做成各类图形。Zabbix就是使用的PHP程序将采集的数据通过Web GUI直观的展示给用户。

4.报警:当监控的指标出现异常时需要监控系统能自动的发出告警信息,甚至在出现报警后能自动完成修复。

Zabbix分布式监控系统监控客户端的方式常见有三种:Agent、SNMP、IPMI。

Agent:Zabbix可以基于自身zabbix_agent客户端插件监控OS的状态,例如CPU、内存、硬盘、网卡、文件等。

SNMP:Zabbix通过简单网络管理协议(Simple Network Management Protocol)监控网络设备或windows主机等。通过设定SNMP的参数将相关监控数据传送至服务端,交换机、防火墙等网络设备一般都支持SNMP协议。

IPMI:智能平台管理接口(Intelligent Platform Management Interface,IPMI)即主要应用于设备的物理特性,包括:温度、电压、电扇工作状态,电源供应以及机箱入侵等。IPMI最大的优势在于无论OS的开机还是关机状态下,只要接通电源就可以实现对服务器的监控。

Zabbix实现监控的两种模式:

简单的讲,主动模式和被动模式都是将Agent作为参照的

主动模式:由Agent主动建立TCP链接并向Server端发送请求。

被动模式:由Server建立TCP链接并向Agent端发送请求。

华为云

修改查看环境
systemctl stop firewalld
systemctl enable firewalld
setenforce 0
vim /etc/selinux/config
yum -y install gcc gcc-c++

换清华源

清华源链接

cd /etc/yum.repos.d/
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
vi /etc/yum.repos.d/CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base] name=CentOS-$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates] name=CentOS-$releasever - Updates
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras] name=CentOS-$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus] name=CentOS-$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

yum makecache

下载安装zabbix的LNMP等环境
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

yum install -y zabbix-server-mysql zabbix-web-mysql httpd php mariadb-server
[root@mxl share]# rpm -qa | grep zabbix //检查是否安装好服务器端这四个包
zabbix-release-4.0-1.el7.noarch
zabbix-web-4.0.18-1.el7.noarch
zabbix-server-mysql-4.0.18-1.el7.x86_64
zabbix-web-mysql-4.0.18-1.el7.noarch
[root@mxl share]# yum install -y zabbix-agent** //安装客户端
[root@mxl share]# rpm -qa | grep zabbix //再次查看本机安装相关zabbix包
zabbix-release-4.0-1.el7.noarch
zabbix-web-4.0.18-1.el7.noarch
zabbix-server-mysql-4.0.18-1.el7.x86_64
zabbix-agent-4.0.18-1.el7.x86_64
zabbix-web-mysql-4.0.18-1.el7.noarch

换回原本的源
[root@mxl yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo epel-testing.repo
CentOS-Base.repo.bak CentOS-fasttrack.repo CentOS-Vault.repo zabbix.repo
CentOS-CR.repo CentOS-Media.repo epel.repo
[root@mxl yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.qinghua.bak
[root@mxl yum.repos.d]# ls
CentOS-Base.repo.bak CentOS-Debuginfo.repo CentOS-Sources.repo epel-testing.repo
CentOS-Base.repo.qinghua.bak CentOS-fasttrack.repo CentOS-Vault.repo zabbix.repo
CentOS-CR.repo CentOS-Media.repo epel.repo
[root@mxl yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo.bak /etc/yum.repos.d/CentOS-Base.repo
[root@mxl yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base epel extras updates zabbix zabbix-non-supported
Cleaning up list of fastest mirrors
Other repos take up 1.6 M of disk space (use --verbose for details)
[root@mxl yum.repos.d]# yum makecache

开启服务
[root@mxl ~]# systemctl enable httpd mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@mxl ~]# systemctl start httpd mariadb

初始化数据库并创建zabbix
[root@mxl ~]# mysql_secure_installation //mariadb需要先被开启
//创建数据库zabbix
[root@mxl ~]# mysql -uroot -pzabbix
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
//导入zabbix提供的数据库文件
[root@mxl ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.18/
[root@mxl zabbix-server-mysql-4.0.18]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@mxl zabbix-server-mysql-4.0.18]# zcat create.sql.gz | mysql -uroot -p zabbix
Enter password:
//检查是否导入成功
[root@mxl zabbix-server-mysql-4.0.18]# mysql -uroot -pzabbix
MariaDB [(none)]> 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
Database changed
MariaDB [zabbix]> show tables; //显示创建好的表

配置服务端配置文件
[root@mxl ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

开启服务
[root@mxl ~]# 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@mxl ~]# systemctl start zabbix-server

编辑zabbix前端php配置时区
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
systemctl restart httpd

配置时钟同步
yum install ntpdate -y
[root@mxl ~]# date -s 2020-02-27
Thu Feb 27 00:00:00 CST 2020
[root@mxl ~]# date -s 17:32:15
Thu Feb 27 17:32:15 CST 2020
[root@mxl ~]#

image.png

可以修改网页登录目录
[root@mxl ~]# cd /usr/share/zabbix/ //zabbix的网页配置目录
[root@mxl ~]# vim /etc/httpd/conf/httpd.conf //进入aparch配置文件修改目录
DocumentRoot "/var/www/html"
修改为
DocumentRoot "/usr/share/zabbix/"
[root@mxl ~]# systemctl restart httpd

如果数据库在远程需要在/etc/

image.pngimage.png
image.png

配置被监控的客户端
[root@mxl ~]# vim /etc/zabbix/zabbix_agentd.conf

Server=114.116.234.87 //服务器ip
### Option: ListenPort
# Agent will listen on this port for connections from the server.
#
# Mandatory: no
# Range: 1024-32767
# Default:
# ListenPort=10050 //默认监听端口10050

ServerActive=114.116.234.87 //服务器ip

Hostname=114.116.234.87 //被监控ip

[root@mxl ~]# systemctl start zabbix-agent
[root@mxl ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@mxl ~]# netstat -anpt | grep :10050 //检查一下监听端口
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 13683/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 13683/zabbix_agentd

服务器添加被监控主机

image.png

image.png

image.png

修改字体
win + r
fonts

[root@ecs-sn3-medium-2-linux-20191212000123 zabbix]# find / -name graphfont*
/usr/share/zabbix/assets/fonts/graphfont.ttf

cd /usr/share/zabbix/assets/fonts/
rz 本地字体
vim /usr/share/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'simfang'); // font file name


交换分区Lack of free swap space on

image.png

//创建交换分区
[root@mxl ~]# mkdir /swap
[root@mxl ~]# cd /swap/
[root@mxl swap]# ls
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换
bs=bytes:同时设置读入/输出的块大小为bytes个字节
[root@mxl swap]# dd if=/dev/zero of=swapfile bs=1M count=4k
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB) copied, 25.8842 s, 166 MB/s
[root@mxl swap]# mkswap swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=df146ce7-fc80-4cdf-87a8-fb558a3eaeb3
[root@mxl swap]# swapon swapfile
swapon: /swap/swapfile: insecure permissions 0644, 0600 suggested.
[root@mxl swap]# free -m
total used free shared buff/cache available
Mem: 1837 418 73 9 1345 1247
Swap: 4095 0 4095
[root@mxl swap]# vim /etc/fstab
/swap/swapfile swap swap default 0 0
//优化swap,首先要先说明优化修改swap
//swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,
//swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
[root@mxl swap]# cat /proc/sys/vm/swappiness
0
[root@mxl swap]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@mxl swap]# vi /etc/sysctl.conf

image.png

web场景应用

image.png

image.png

image.png

image.png

image.pngimage.png

image.png

image.png

image.png

zabbix报警

创建脚本
[root@mxl ~]# vim token.sh
#!/bin/bash

to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=b33632deea590fd1306af3d63f98204623c030c8bac04b0ca0ccc1ea71d4bd32' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text",
"text": {
"content": "'"$text"'"
},
"at":{
"atMobiles": [ "'"$1"'" ],
"isAtAll": false
}
}'

[root@mxl ~]# chmod a+x token.sh
[root@mxl ~]# chown zabbix.zabbix token.sh
[root@mxl ~]# ./token.sh 1 2 3 //给谁 标题 内容
{"errcode":0,"errmsg":"ok"} //提示信息3

[root@mxl ~]# vim /etc/zabbix/zabbix_server.conf
[root@mxl ~]# cd /usr/lib/zabbix/alertscripts
[root@mxl alertscripts]# ls
[root@mxl alertscripts]# mv /root/token.sh .
[root@mxl alertscripts]# ls
token.sh

image.png

脚本添加

报警媒介类型
再添加以下 3 个参数,分别对应脚本需要的 3 个参数:收件人地址、主题、详细内容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

image.png

动作

image.png

操作
--->步骤时间--->1000
--->标题(故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!)
--->默认信息下边的添加

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}

--->操作添加
--->步骤--->5 表示触发 5 次动作
--->步骤持续时间--->每隔 120 秒触发一次
--->告警发给 admin 用户
--->用”钉钉”媒介发送。
--->点击小”add”添加选项,否则等于没写

image.png

恢复操作
--->标题改为--->恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
--->信息改为--->

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}

--->点击”新的”添加发送选项
--->添加群组
--->添加用户 Admin
--->仅送到--->钉钉
--->点击小”添加”添加选项,否则等于没写
点击小 add 添加选项后再点击大 ADD 完成动作增加。

image.png

授权

image.png

成果

image.pngimage.png

作者:今天我敲代码了吗

相关推荐

RabbitMQ在Linux环境下安装及使用

RabbitMQ在Linux环境下安装及使用

在这里插入图片描述

成功解决Unable to resolve dependency、classpath等所有有关环境配置的问题

02【前端工程化初探】GitLab本地部署

02【前端工程化初探】GitLab本地部署

matlab实现卷积编码与viterbi译码

matlab实现卷积编码与viterbi译码