Introdução ao Zabbix
Zabbix foi criado por Alexei Vladishev e atualmente é ativamente desenvolvido, atualizado e mantido pela empresa que ele fundou, Zabbix SIA , e fornece serviços de suporte técnico aos usuários.
Zabbix é uma solução de monitoramento de código aberto distribuída de nível empresarial. O software
Zabbix pode monitorar numerosos parâmetros de rede e integridade do servidor.grau, integridade. O Zabbix usa um mecanismo de alerta flexível que permite aos usuários configurar alertas baseados em e-mail para praticamente qualquer evento. Isso permite que os usuários respondam rapidamente aos problemas do servidor. O Zabbix oferece excelentes recursos de relatórios e visualização de dados com base nos dados armazenados. Esses recursos tornam o Zabbix uma escolha ideal para planejamento de capacidade.O
Zabbix suporta polling ativo ( polling ) e trapping passivo ( trapping ). Todos os relatórios, estatísticas e parâmetros de configuração do Zabbix podem ser acessados através da página front-end baseada na web . A página front-end baseada na Web garante que o status da rede monitorada e a integridade do servidor possam ser acessados de qualquer lugar. Quando configurado corretamente, o Zabbix pode desempenhar um papel importante no monitoramento da infraestrutura de TI . Isso se aplica igualmente a uma pequena organização com poucos servidores ou a uma grande empresa com um grande número de servidores.
Zabbix é gratuito. Zabbix foi escrito e lançado sob a versão 2 da Licença Pública Geral GPL . Isso significa que o código-fonte do produto é liberado gratuitamente e está disponível para uso público
1. Desempenho do sistema
Uso de memória, carga de CPU, E/S de rede e disco, vários status de conexão do TCP
2. Aplicação
Primeiro, monitore se o aplicativo está funcionando normalmente (processo de porta) e monitore o desempenho do aplicativo.
Software de monitoramento comumente usado para operação e manutenção: nagios , cacti , ganglia , promethues , zabbix , open-falcon Software de monitoramento
zabbix : é uma arquitetura C/S ou uma arquitetura B/S . O front-end do software zabbix é escrito por um Página PHP
Existem dois modos de coleta de dados do zabbix:
Modo ativo: o terminal monitorado envia ativamente os dados coletados para o terminal de monitoramento.
Modo passivo: modo padrão do zabbix. O terminal de monitoramento obtém regularmente dados do terminal monitorado.
Princípio de monitoramento do zabbix
O Agentd é instalado no host monitorado. O agente é responsável por coletar regularmente os dados locais no cliente e enviá-los ao Zabbix Server . O Zabbix Server recebe os dados e os armazena no banco de dados. Os usuários podem ver os dados no front-end com base em Zabbix WEB.Mostrar imagens. Quando o Zabbix monitora um projeto específico, o projeto padrão definirá um limite de disparo. Quando o indicador monitorado exceder o limite definido pelo gatilho, algumas ações necessárias serão tomadas. As ações incluem: envio de informações (e-mail, WeChat, SMS), envio comandos ( comando SHELL , Reboot , Restart , Install , etc.)
Existem três maneiras comuns para o sistema de monitoramento distribuído Zabbix monitorar clientes : Agente , SNMP e IPMI
Agente | O Zabbix pode monitorar o status do SO com base em seu próprio plug-in cliente zabbix_agent , como CPU , memória, disco rígido, placa de rede, arquivos, etc. |
---|---|
SNMP | O Zabbix monitora dispositivos de rede ou hosts Windows através do Simple Network Management Protocol . Dados de monitoramento relevantes são transmitidos ao servidor através da configuração de parâmetros SNMP. Dispositivos de rede, como switches e firewalls, geralmente suportam o protocolo SNMP. |
IPMI | A Interface de Gerenciamento de Plataforma Inteligente ( IPM I) é aplicada principalmente às características físicas do dispositivo, incluindo: temperatura, tensão, status de funcionamento do ventilador, fonte de alimentação, intrusão no chassi, etc. A maior vantagem do IP PMI é que não importa se o sistema operacional está ligado ou desligado, o servidor pode ser monitorado enquanto a energia estiver ligada. |
O cliente de monitoramento Zabbix é dividido em monitoramento ativo e monitoramento passivo. Os modos ativo e passivo são baseados no cliente. O cliente de monitoramento Zabbix é padronizado para o modo passivo e pode ser modificado para o modo ativo. Você só precisa adicionar StartAgents=0 na configuração do cliente arquivo. | |
Modo ativo do Zabbix | O agente solicita ativamente ao servidor para obter a lista de itens de monitoramento ativos e envia ativamente os dados que precisam ser detectados nos itens de monitoramento para o servidor/proxy . O agente zabbix primeiro solicita o IP configurado pelo ServerActive para obter itens ativos , obtém e envia os dados dos itens ativos para o servidor/proxy. |
Modo passivo Zabbix | O servidor solicita ao agente que obtenha os dados do item de monitoramento, o agente retorna os dados, o servidor abre uma conexão TCP , o servidor envia a solicitação agent.ping , o agente recebe a solicitação e responde, e o servidor processa o recebido dados. |
Componentes comuns do Zabbix | |
---|---|
Servidor Zabbix | O componente principal que recebe dados coletados pelo Agente ; todas as estatísticas e operações de configuração são realizadas por ele. |
Banco de dados Zabbix | Fornece função de armazenamento de dados, dedicada a armazenar informações de configuração e dados coletados |
Interface gráfica do Zabbix | Fornece interface web |
Proxy Zabbix | Quando há muitos nós monitorados, os componentes usados para reduzir a pressão do servidor também são usados em sistemas de monitoramento distribuídos. Os dados são recebidos pelo Proxy e enviados ao Servidor de maneira uniforme. |
Agente Zabbix | Implantado no host monitorado para coletar dados locais |
Conceito de monitoramento do sistema de monitoramento Zabbix | |
---|---|
hospedar | O dispositivo de rede monitorado pode gravar IP ou DNS |
grupo anfitrião | Grupos de hosts são usados para gerenciar hosts e podem definir permissões em lotes |
Itens de monitoramento | Itens de monitoramento específicos, os valores dos itens são identificados por chaves independentes. |
acionar | Defina um gatilho para um determinado item . Quando o gatilho for atingido, a ação será executada. |
evento | Por exemplo, quando um determinado gatilho é atingido, ele é chamado de evento. |
Ação | Para métodos de processamento predefinidos para eventos específicos, mensagens e comandos podem ser enviados por padrão. |
Escalação de alarme | Planos customizados para envio de alertas ou execução de comandos remotos, como envio de alerta a cada 5 minutos, envio no total 5 vezes, etc. |
meios de comunicação | O método de envio de notificações pode suportar Mail , SMS , Scripts , etc. |
notificação | Informações sobre um evento enviadas aos usuários por meio de mídia definida |
comando remoto | Quando o trigger é atingido, o comando pode ser executado na extremidade monitorada |
modelo | Você pode monitorar rapidamente o final monitorado. Os módulos incluem: item , gatilho , gráfico , tela , aplicação |
cenário web (cenário web) | Usado para detectar a disponibilidade do site e monitorar palavras-chave HTTP |
front-end da web (front-end) | Interface web do Zabbix _ |
gráfico | Imagens de vigilância |
telas | Tela de exibição |
apresentação de slides | apresentação de slides |
Introdução ao Grafana
Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库
Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。 官方支持以下数据源:Graphite、Elasticsearch、InfluxDB、Prometheus、Cloudwatch、MySQL、OpenTSDB和Zabbix等
所需环境
系统 | IP | 名称 | 角色 |
---|---|---|---|
CentOS 7.4 | 192.168.2.14 | zabbix | LAMP、zabbix、grafana(版本8.0) |
CentOS 7.4 | 192.168.2.13 | agent | agent(FTP,Web) |
一、安装zabbix server服务端
[root@zabbix ~]# echo '
192.168.2.14 zabbix
192.168.2.13 agent
192.168.2.14 agent
' >> /etc/hosts
安装 LAMP 使用本地yum
[root@zabbix ~]# yum -y install net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel libevent libevent libevent-devel curl curl-devel mysql-devel snmp perl-DBI php-xml php-bcmath php-mbstring php-ldap php-xmlrpc httpd php php-mysql php-common php-gd php-odbc php-pear gcc* net-snmp libssh2 libssh2-devel mariadb-server mariadb mariadb-devel ntpdate
添加一个网卡连接外网
[root@zabbix ~]# systemctl restart network
[root@zabbix ~]# yum -y install wget
[root@zabbix ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
因本地yum安装 有部分安装包没有需要网络yum源 安装 LAMP
[root@zabbix ~]# yum -y install net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel libevent libevent libevent-devel curl curl-devel mysql-devel snmp perl-DBI php-xml php-bcmath php-mbstring php-ldap php-xmlrpc httpd php php-mysql php-common php-gd php-odbc php-pear gcc* net-snmp libssh2 libssh2-devel mariadb-server mariadb mariadb-devel ntpdate
[root@zabbix ~]# yum -y install libevent-devel
[root@zabbix ~]# yum install *bcmath* --skip-broken
[root@zabbix ~]# yum install php-mbstring
同步时间
[root@zabbix ~]# yum -y install ntpdate
....
[root@zabbix ~]# ntpdate ntp1.aliyun.com
27 Dec 16:10:33 ntpdate[44367]: adjust time server 120.25.115.20 offset 0.003932 sec
启动myslq
[root@zabbix ~]# systemctl start mariadb
[root@zabbix ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@zabbix ~]# mysqladmin -u root password 123.com
启动httpd
[root@zabbix ~]# systemctl start httpd
[root@zabbix ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
下载 [Zabbix](https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX Latest Stable/4.4.7/zabbix-4.4.7.tar.gz)
如果没有提示下载可以使用下面的方式进行下载
[root@zabbix ~]# tar zxvf zabbix-4.4.7.tar.gz
[root@zabbix ~]# cd zabbix-4.4.7
[root@zabbix zabbix-4.4.7]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
...................
.........
LDAP support: no
IPv6 support: yes
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
[root@zabbix zabbix-4.4.7]# make &&make install
...........
.....
..
[root@zabbix ~]# mysql -uroot -p123.com
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use zabbix;
Database changed
MariaDB [(none)]> source /root/zabbix-4.4.7/database/mysql/schema.sql;
..................
...........
.....
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [zabbix]> source /root/zabbix-4.4.7/database/mysql/images.sql;
........
....
.
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
MariaDB [zabbix]> source /root/zabbix-4.4.7/database/mysql/data.sql;
...............
........
..
Query OK, 1 row affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
MariaDB [zabbix]> grant all on zabbix.* to zabbix@'192.168.2.14' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [zabbix]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [zabbix]> quit
Bye
[root@zabbix ~]# groupadd zabbix
[root@zabbix ~]# useradd -r -g zabbix zabbix
[root@zabbix ~]# mkdir /usr/local/zabbix/logs
[root@zabbix ~]# chown zabbix:zabbix /usr/local/zabbix/ -R
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=192.168.2.14
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
Timeout=4 #与AGNET/SNMP 设备和其他外部通信超时设置,单位:秒s
LogSlowQueries=3000 #用于服务端数据库慢查询功能,单位:毫秒
StatsAllowedIP=127.0.0.1,192.168.2.0/24 #来源IP访问控制限制
————————————
:%g/^#/d 删除以#开头的内容 :%g/^$/d 删除空行
保存
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid #运行的PID 文件
Server=127.0.0.1,192.168.2.14 #zabbix的主机IP
ServerActive=192.168.2.14 #agent主机采集到的数据发送到server端
Hostname=zabbix #本机的主机名称
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log #指定日志文件
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf #开启附加配置文件目录
:%g/^#/d 删除以#开头的内容 :%g/^$/d 删除空行
保存
[root@zabbix ~]# /usr/local/zabbix/sbin/zabbix_server
[root@zabbix ~]# netstat -utpln|grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 16176/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 16176/zabbix_server
[root@zabbix ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@zabbix ~]# netstat -utpln|grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 17469/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 17469/zabbix_agentd
[root@zabbix ~]# mkdir /var/www/html/zabbix
[root@zabbix ~]# mv /root/zabbix-4.4.7/frontends/php/* /var/www/html/zabbix
[root@zabbix ~]# vim /etc/php.ini
....
384 max_execution_time = 300 #单位秒,通过 POST、GET 以及 PUT 方式接收数据时间进行限制
.....
394 max_input_time = 300 #php 程序上传文件解析数据时的时间限制
....
405 memory_limit = 128M #设置 php 程序的内存限制
....
672 post_max_size = 32M #POST 方式请求数据所允许的最大大小
.....
853 extension=bcmath.so #加载 zabbix 程序需要加载的扩展模块 bcmath.so
.....
878 date.timezone = Asia/Shanghai #时区
保存
[root@zabbix ~]# systemctl restart httpd
[root@zabbix ~]# cd /var/www/html/zabbix/conf
[root@zabbix conf]# vim zabbix.conf.php.example
<?php
// Zabbix GUI configuration file.
global $DB, $HISTORY;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix'; #mysql授权的用户密码
// Schema name. Used for IBM DB2 and PostgreSQL.
......
保存
二、配置zabbix服务的web页面做优化
访问安装:http://192.168.2.14/zabbix/
查看是否全部ok;下一步
填写相关信息
填写信息
检查输入内容
点击连接下载配置文件
下载的配置文件如下
把配置文件上传到 /var/www/html/zabbix/conf/ 下
[root@zabbix ~]# cd /var/www/html/zabbix/conf/
[root@zabbix conf]# ls
maintenance.inc.php zabbix.conf.php zabbix.conf.php.example
上传后直接下一步
注意:用户名Admin A是大写
安装完成;设置字体为中文
解决zabbix显示图像下边文字乱码问题
上传simkai.ttf 文件
[root@zabbix ~]# cd /var/www/html/zabbix/assets/fonts/
[root@zabbix fonts]# ls
DejaVuSans.ttf simkai.ttf
[root@zabbix fonts]# mv DejaVuSans.ttf DejaVuSans.ttf.bak
[root@zabbix fonts]# mv simkai.ttf DejaVuSans.ttf
[root@zabbix fonts]# ls
DejaVuSans.ttf DejaVuSans.ttf.bak
三、监控zabbix端的OS、MySQL、Httpd
(一)、 创建主机zabbix服务
选择两个监控模板即可:**Template App HTTP Service***、***Template DB MySQL******
查看监控主机状态
发现关于MySQL数据库的所有监控项没有图形
解决方法
设置监控失效的键值
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid
Server=127.0.0.1,192.168.2.14
ServerActive=192.168.2.14
Hostname=zabbix
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UserParameter=mysql.ping[*], HOME=/etc/zabbix mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], HOME=/etc/zabbix mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"
保存
——————————————————————————————————————————————————————————————————————
############ 解释:
PidFile=/tmp/zabbix_agentd.pid
Server=127.0.0.1,192.168.2.14 #指定 zabbix 服务器的地址
ServerActive=192.168.2.14 #指定 agent 采集到数据之后发送给 server 端
Hostname=zabbix #指定 agent 端的主机名、server 端必须需要解析,注意:在 web 界面添加被监控主机时,必须写此主机名
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UserParameter=mysql.ping[*], HOME=/etc/zabbix mysqladmin -h"$1" -P"$2" ping #自定义监控项
=定义名称,key值
验证:打开 zabbix 的 web 界面,查看 mysql 服务器的监控界面
注意:刚查看是没有数据的需要耐心的等待
(二)、安装及配置agent代理端FTP服务器
[root@agent ~]# echo '
192.168.2.14 zabbix
192.168.2.13 agent
' >> /etc/hosts
[root@agent ~]# yum -y install wget
.....
[root@agent ~]# systemctl restart network
[root@agent ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
....
[root@agent ~]# yum -y install ntpdate
...
[root@agent ~]# ntpdate ntp1.aliyun.com
29 Dec 20:53:08 ntpdate[971]: adjust time server 120.25.115.20 offset -0.004758 sec
[root@agent ~]# yum -y install vsftpd
.....
[root@agent ~]# systemctl start vsftpd
...
[root@agent ~]# yum -y install libxml2-devel libcurl-devel pcre-devel
....
[root@agent ~]# tar zxvf zabbix-4.4.7.tar.gz
[root@agent ~]# cd zabbix-4.4.7
[root@agent zabbix-4.4.7]# ./configure --prefix=/usr/local/zabbix --enable-agent --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
...........
....
..
[root@agent zabbix-4.4.7]# make && make install
...........
.....
[root@agent ~]# groupadd zabbix
[root@agent ~]# useradd -r -g zabbix zabbix
[root@agent ~]# chown zabbix:zabbix /usr/local/zabbix -R
[root@agent ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
Server=192.168.2.14
ServerActive=192.168.2.14
Hostname=agent
LogFile=/tmp/zabbix_agentd.log
:%g/^#/d 删除以#开头的内容 :%g/^$/d 删除空行
保存
[root@agent zabbix-4.4.7]# /usr/local/zabbix/sbin/zabbix_agentd
[root@agent zabbix-4.4.7]# netstat -utpln|grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 69639/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 69639/zabbix_agentd
1、登录zabbix的web界面,进行添加agent主机
2、 添加agent主机完成,手动添加ftp服务图形显示
3、 添加模块CPU
4、 把web添加进来
[root@agent ~]# yum -y install httpd
[root@agent ~]# systemctl start httpd
[root@agent ~]# echo '
<h1>Zabbix 监控服务<h1/>
' > /var/www/html/index.html
保存
右上角点击>>创建web场景
点击添加
在 监控 >> web 监控 中可以查看(*前提先访问*)
5、自定义监控项,创建项目,触发器,图形,验证监控效果
以上关联的 Template OS Linux by Zabbix agent 模板基本涵盖了所有系统层面的监控,包括了我们最关注的几项:ping、load、cpu 使用率、memory、disk、网卡流量等等,当然有些触发器的阀值可能需要根据服务器的自身情况进行修改
也可以添加自定义服务器内存使用检测项,在此配置一个监控项为:内存使用 70M 进行警告
提醒
在agent上进行操作
[root@agent ~]# yum -y install psmisc
....
.
[root@agent ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
..........
.....
UserParameter=memory_usage,free -m|grep Mem|awk '{print $3}'
保存
加入到最后一行
——————————————————————————————————————————
说明
语法:UserParameter=key,shell command
监控 key 值:memory_usage,key 值可以随意编写,但是一会需要在 web 页面创建监控项时指定 key 值;
Shell 命令或脚本:free -m|grep Mem|awk '{print $3}'
注意:在 zabbix_server 端可以使用 | zabbix_get -s agent 端 ip 地址 -p 10050 -k key名 |可以通过此命令可以查看 agent 端 key 的监控值;
——————————————————————————————————————————
[root@agent ~]# killall -9 zabbix_agentd
[root@agent ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@agent ~]# free -m|grep Mem|awk '{print $3}'
116
————————————————————————————————————————————————————————————
在zabbix上查看监控值
[root@zabbix ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.2.13 -k memory_usage
116
5.1、使用web添加监控项
5.2、监控项添加完成后,创建触发器(根据条件进行触发某个告警操作)
5.3、 创建监控显示图形
5.4、验证
[root@agent ~]# ab -n 5000000 -c 100 -k http://192.168.2.13/ 测试
首页也会显示警告
也可以监控交换机和用户访问的情况可以编写脚本进行完成
6、实现邮件报警
6.1、配置zabbix端的邮件
[root@zabbix ~]# yum -y install mailx dos2unix
.....
...
[root@zabbix ~]# mailx -V
12.5 7/5/10
——————————————————————————————————————————
在此文件末尾添加,指定接收邮件邮箱地址,指定邮箱服务器地址,指定接收邮件邮箱地址的授权码,并非 qq 邮箱的密码,而是授权码
登陆 qq 邮箱后 >--设置--开启 smtp 和 pop--点击客户端生成授权码--使用此授权码进
行指定到此配置文件
接收服务器:pop.qq.com 发送服务器:smtp.qq.com
[root@zabbix ~]# vi /etc/mail.rc
...........(邮箱,授权码需填写自己的这里就写案例)
.....
set from=12345678901@qq.com smtp=smtp.qq.com
set smtp-auth-user=12345678901@qq.com smtp-auth-password=授权码
set smtp-auth=login
保存退出
开启后会生成授权码
测试接收情况
[root@zabbix ~]# echo "测试内容"|mail -s "测试一收到没有" 12345678901@qq.com
配置zabbix_server.conf
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
........
...
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
保存退出
编写报警邮件脚本,调整 mail 命令语法位置,使用 dos2unix 命令转换字符,避免收到邮件不显示正常邮件内容而出现 ATT00001.bin 的错误
[root@zabbix ~]# vim /usr/local/zabbix/share/zabbix/alertscripts/2.sh
#!/bin/bash
#export.UTF-8
bt=$2
sjr=$1
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
/usr/bin/dos2unix -k $FILE
/bin/mail -s "$bt" "$sjr" <$FILE
保存退出
[root@zabbix ~]# chmod 777 /usr/local/zabbix/share/zabbix/alertscripts/2.sh
[root@zabbix ~]# chown zabbix:zabbix /usr/local/zabbix/share/zabbix/alertscripts/2.sh
[root@zabbix ~]# touch /tmp/mailtmp.txt
[root@zabbix ~]# chmod 777 /tmp/mailtmp.txt
[root@zabbix ~]# chown zabbix:zabbix /tmp/mailtmp.txt
注意文件以及报警脚本的归属以及权限,注:脚本文件和存放邮件消息文件归属必须是 zabbix
[root@zabbix ~]# /usr/local/zabbix/share/zabbix/alertscripts/2.sh 12345678901@qq.com "测试标题 二" "测试内容 二"
dos2unix: converting file /tmp/mailtmp.txt to Unix format ...
6.2、配置监控项邮件报警
配置 zabbix web 网站进行监控项的邮件报警,每一张图片后附带解释和注意事项,大体
步骤为: 监控***>>***创建报警媒介类型***>>***更新用户使用的报警媒介类型***>>***创建动作(根据触发器
触发)***>>*验证
创建报警媒介类型
输入创建的报警媒介类型的名称,指定类型为脚本的方式,并且输入 zabbix_server 端
/usr/local/zabbix/share/zabbix/alertscripts 目录下的脚本名称,确保脚本的归属是 zabbix,并且脚本的权限是 777,下边设置脚本参数,也就是发送邮件的语法:脚本 收件人 标题 内容,必须严格按照此标准填写(*注意:有 . 符号不要忘记*)
创建报警媒介类型成功后,进行确认
配置 zabbix 中的用户所使用的报警媒介类型以及接收邮件的邮箱
选择报警媒介类型为刚刚创建的类型,并且输入接收邮件的地址,指定报警时间和报警级
别
创建动作,也就是发送邮件的动作
输入动作名,动作名最好为英文,可以选择触发这个动作的条件(可以选择触发器=触发器的名称或者选择触发器似触发器名称),作为条件,若不选择触发器的条件,那么任何消息都会提示到邮箱
添加报警动作,一旦此触发器添加触发,添加报警邮件的标题和内容,默认操作步骤持续
时间(修改持续时间为 1h (一小时发送一次邮件)),添加操作(添加接收邮件的用户);
**默认标题:**故障{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}
添加操作(添加接收邮件的用户),步骤(指定邮件发送的次数),仅送到(选择创建的媒
介类型)
添加恢复操作(指故障恢复之后发送邮件的动作),具体步骤和添加操作相同
更新动作创建的完成**(同上)**
开始测试邮件报警
测试:,测试邮件报警情况
[root@agent ~]# dd if=/dev/zero of=/opt/1.txt bs=1G count=5
7、实现企业微信报警
7.1、先注册企业微信到官方注册省略…
7.2、注册好之后需要创建应用
加入成员
查看部门ID号
**AgentId:**1000003
**Secret :**SiaRe_eMY9zKb4qQ0-LKhAvwgaS7Od_6LC43Kcuiblc
查看企业ID
准备完成后编写脚本在zabbix服务器上
[root@zabbix ~]# vim /usr/local/zabbix/share/zabbix/alertscripts/1.sh
#!/bin/bash
#set -x
CorpID="........." #上面有查看过 我的企业 ==> 企业ID
Secret="........." #应用管理中查看 Secret
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
#echo $Token
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
function body(){
local int agentid=1000002 #改为AgentId的ID号 之前查看的信息
local UserID=$1 #发送的用户名称 位于$1的字符串
local PartyID=2 #之前查看的部门ID
local Msg=$(echo "$@" | cut -d" " -f3-)
printf '{\n'
printf '\t"touser": "'"$UserID"\"",\n"
printf '\t"toparty": "'"$PartyID"\"",\n"
printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'"$agentid"\"",\n"
printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n"
printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
``
保存
测试脚本
[root@zabbix ~]# cd /usr/local/zabbix/share/zabbix/alertscripts
[root@zabbix alertscripts]# chmod 777 1.sh
[root@zabbix alertscripts]# ./1.sh admin 测试 这是一条测试信息
{
"errcode":0,"errmsg":"ok","invaliduser":"admin","msgid":"mrVtVXE39it1tWVvd57npD6jUrq6gFySn7k5BWrwqgsEYHiEHLs42nHRhgOAhr
配置zabbix_server.conf
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
........
...
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #脚本位置如果已经有了就无需添加
保存退出
开始配置zabbix
选择报警媒介类型为刚刚创建的类型,并且输入接收邮件的地址,指定报警时间和报警级
别
创建动作
**默认标题:**故障{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}
**默认标题:**恢复{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}
测试
[root@agent ~]# ab -n 5000000 -c 100 -k http://192.168.2.13/
Ctrl+c 结束命令
测试完成企业微信报警完成了哈哈!!!!
8、自动发现主机
Nome visível: você pode escolher o nome do host, nome DNS, endereço IP
Endereços IP podem ser separados por vírgulas
Implante o agente2 para verificação
[root@agent2 ~]# vim /etc/hosts
......
192.168.2.12 zabbix
192.168.2.13 agent
192.168.2.14 agent2
保存
Adicionar placa de rede usando rede yum source
[root@agent2 ~]# systemctl restart network
[root@agent2 ~]# yum -y install wget
...........
....
[root@agent2 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@agent2 ~]# yum -y install ntpdate
............
.....
[root@agent2 ~]# ntpdate ntp1.aliyun.com
9 Jan 21:01:57 ntpdate[22908]: adjust time server 120.25.115.20 offset -0.004508 sec
[root@agent2 ~]# yum -y install net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel libevent libevent libevent-devel curl curl-devel mysql-devel snmp perl-DBI php-xml php-bcmath php-mbstring php-ldap php-xmlrpc httpd php php-mysql php-common php-gd php-odbc php-pear gcc* net-snmp libssh2 libssh2-devel mariadb-server mariadb mariadb-devel ntpdate
............................
................
......
[root@agent2 ~]# tar zxvf zabbix-4.4.7.tar.gz
[root@agent2 ~]# cd zabbix-4.4.7
[root@agent2 zabbix-4.4.7]# ./configure --prefix=/usr/local/zabbix --enable-agent --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
................
...........
[root@agent2 zabbix-4.4.7]# make && make install
...........
[root@agent2 zabbix-4.4.7]# groupadd zabbix
[root@agent2 zabbix-4.4.7]# useradd -r -g zabbix zabbix
[root@agent2 zabbix-4.4.7]# chown zabbix:zabbix /usr/local/zabbix -R
[root@agent2 zabbix-4.4.7]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
Server=192.168.2.12
ServerActive=192.168.2.12
Hostname=agent2
LogFile=/tmp/zabbix_agentd.log
保存
[root@agent2 zabbix-4.4.7]# /usr/local/zabbix/sbin/zabbix_agentd
[root@agent2 zabbix-4.4.7]# netstat -utpln|grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 42040/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 42040/zabbix_agentd
verificar
Meu negócio WeChat recebeu informações
Verifique se o host foi ingressado automaticamente; você pode definir a adesão automática ao implantar vários servidores
Caso não receba a mensagem, pode ser que o servidor não esteja conectado à rede externa, você pode reiniciar a placa de rede e receberá.
9. Instale e configure o Grafana
Ao executar o comando a seguir, primeiro execute ping no Baidu para ver se você consegue acessar a Internet; se uma placa de rede virtual estiver configurada, certifique-se de que você pode se comunicar.
[root@zabbix ~]# wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.3-1.x86_64.rpm
.....
[root@zabbix ~]# yum -y localinstall grafana-enterprise-8.3.3-1.x86_64.rpm
.......
..
[root@zabbix ~]# grafana-cli plugins install alexanderzobnin-zabbix-app #安装 zabbix 插件
installing alexanderzobnin-zabbix-app @ 4.0.1
from url: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/4.0.1/download
into: /var/lib/grafana/plugins
✔ Installed alexanderzobnin-zabbix-app successfully
Restart grafana after installing plugins . <service grafana-server restart>
[root@zabbix ~]# mkdir -p /opt/grafana/data/plugins/
[root@zabbix ~]# cp -r /var/lib/grafana/plugins/alexanderzobnin-zabbix-app/ /opt/grafana/data/plugins/
[root@zabbix ~]# ls /opt/grafana/data/plugins/
alexanderzobnin-zabbix-app
[root@zabbix ~]# systemctl start grafana-server
[root@zabbix ~]# netstat -utpln |grep 3000
tcp6 0 0 :::3000 :::* LISTEN 7875/grafana-server
Teste de acesso: http://192.168.2.14:3000
Defina a senha aqui 123.com
7.1. Configure a interface web do Grafana
Habilitar plug-in
Adicionar fonte de dados
Captura de tela tirada separadamente porque a tela é muito grande
Adicionar painel
Insira o nome da forma
Selecione a fonte de dados e os itens de host e monitoramento de host que precisam ser exibidos no gráfico.
Depois de criado, salve este painel e insira o nome do painel.
Adicione gráficos ao serviço zabbix existente
Verifique os gráficos finais de exibição do painel (o tamanho pode ser ajustado por você)
1. Descrição do problema
Após instalar o plug-in do zabbix , habilite-o em Plugins
Então, ao adicionar a fonte de dados, você descobrirá que o zabbix não pode ser encontrado
2. Solução
Modifique a configuração do grafana e permita a configuração do plug-in zabbix.
Encontre o item " ;allow_loading_unsigned_plugins = ", exclua " ; ", e adicione " alexanderzobnin-zabbix-datasource "
vim /etc/grafana/grafana.ini
allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource
Reinicie o serviço grafana
systemctl restart grafana-server
Reabra a página do grafana, adicione a fonte de dados e você poderá encontrar a fonte do zabbix.
Resumo: O processo experimental geral é relativamente simples. Você deve prestar atenção à versão ao instalar o grafana.