Zabbix+Grafana, Prometheus

架构图:
image.png

搭建

LNMP部分

php和nginx参考lnmp部分,搭建出一个前端页面 下载 wget -P /server/tools https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.5.tar.gz 把ui目录丢进/app/code即可

数据库部分

需要升级一下已有的mariadb

  1. 备份数据

mysqldump -u root -p --all-databases > alldb.sql

  1. 删除

systemctl stop mariadb
yum remove mariadb*

  1. 配yum源

yum clean all && yum makecache && yum repolist && yum list| grep mariadb

  1. 安装

yum -y install MariaDB-server MariaDB-client
systemctl enable --now mariadb# mysqld mysql 均可

  1. 升级系统表

mysql_upgrade -h 127.0.0.1 -u root -p

  1. 查看版本和旧的数据库是否存在

mysql -V
mysql -uroot -p
select user,host from mysql.user;
show databases;

zabbix部分

  1. 创建数据库

create database zabbix charset utf8 collate utf8_bin;
grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';

  1. 导入数据表

    1. cd zabbix-6.0.5/database/mysql/
    2. mysql -uroot -p zabbix <schema.sql
    3. mysql -uroot -p zabbix <images.sql
    4. mysql -uroot -p zabbix <data.sql
    5. mysql -uroot -p zabbix <double.sql
    6. mysql -uroot -p zabbix <history_pk_prepare.sql

    编译安装 for centos 7

  2. 依赖安装

    yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel
    
  3. 编译安装(配置

    ./configure --sysconfdir=/etc/zabbix/ \
    --enable-server \
    --with-mysql \
    --with-net-snmp \
    --with-libxml2 \
    --with-ssh2 \
    --with-openipmi \
    --with-zlib \
    --with-libpthread \
    --with-libevent \
    --with-openssl \
    --with-ldap \
    --with-libcurl \
    --with-libpcre
    
  4. make install

make install
echo $0

  1. 配置服务端zabbix配置文件 ```bash vim /etc/zabbix/zabbix_server.conf

ListenPort=10051 LogFile=/var/log/zabbix_server.log DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix

Timeout=4 LogSlowQueries=3000 StatsAllowedIP=127.0.0.1


5. 启动zabbix
```bash
# 创建日志文件,虚拟用户
touch /var/log/zabbix_server.log
useradd -s /sbin/nologin -M zabbix
chown zabbix.zabbix /var/log/zabbix_server.log
# 启动
zabbix_server 
ss -lntup|grep 10051
ps -ef |grep zabbix
  1. 配置systemctl ```bash pkill zabbix ps -ef | grep zabbix

vim /usr/lib/systemd/system/zabbix-server.service

[Unit] Description=Zabbix Server with MySQL DB After=syslog.target network.target mysqld.service [Service] Type=simple ExecStart=/usr/local/sbin/zabbix_server -f User=zabbix [Install] WantedBy=multi-user.target

systemctl daemon-reload systemctl enable —now zabbix-server systemctl status zabbix-server


7. 页面安装
```bash
# 更具页面提示安装缺少的插件并配置php
yum install -y php72w-bcmath php72w-ldap

vim /etc/php.ini

systemctl restart php-fpm

# 登陆密码
Admin
zabbix
  1. 获取客户端,监控自己 ```bash

    安完会多一个repo文件

    rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-1.el7.noarch.rpm

    替换源

    sed -i ‘s#https:repo.zabbix.com/zabbix#https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/#g‘ /etc/yum.repos.d/zabbix.repo

yum list | grep agent2 yum install -y zabbix-agent2


9. 配置客户端
```bash
vim /etc/zabbix/zabbix_agent2.conf

PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0

Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf

ControlSocket=/tmp/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
  1. 启动

systemctl enable --now zabbix-agent2.service

  1. 替换字体
    # /app/code/zabbix/assets/fonts/DejaVuSans.ttf
    # 找一个中文字体替换成同名的
    

    配置使用

    | 服务端文件和目录 | | | —- | —- | | /etc/zabbix/zabbix_server.conf | 配置文件 | | /var/log/zabbix/zabbix_server.log | 日志文件 | | /usr/lib/systemd/system/zabbix-server.service | 手写的systemctl管理文件如果yum、rpm安装自带 | | /usr/local/share/zabbix/alertscripts/ | 用于实现告警的脚本。 |
客户端配置文件和目录
/etc/zabbix/zabbix_agent2.conf 配置文件
/etc/zabbix/zabbix_agent2.d/ 子配置文件,自定义监控
/var/log/zabbix 日志

手动添加主机

首先安装客户端,步骤同上。
页面操作配置—》主机—》创建主机
表单填写{
主机名称: “ip或者可解析的主机名”
可见名称: “最好是主机名”
模板: “默认选择Linux by agent”
群组: “Linux Server + 自己创建的”
添加: “客户端”
{
IP地址: “ip写内网外网取决于客户端配置文件中的ip”
}
已启用: “√”
}点击添加

自定义监控项

vim /etc/zabbix/zabbix_agent2.d/web.conf

UserParameter=check.ngx,ss -lntup|grep -w 80|wc -l

# 重启并测试
systemctl restart zabbix-agent2 && zabbix_agent2 -t check.ngx

# 服务端测试
yum install -y zabbix-get
zabbix_get -s localhost -p 10050 -k check.ngx

页面操作配置—》主机—》监控项—》创建监控项
表单填写{
名称: “nginx服务80端口状态”
键值: “与配置文件中的键一样”
更新间隔可长、历史时长可短、趋势时间可长、我就不改了!
}点击测试点击添加

监控项可以添加标记,方便查找

触发器

页面操作配置—》主机—》触发器—》创建触发器
表单填写{
名称: “nginx 80 端口没了”
严重性: “严重”
点击添加{
结果: 0
}
允许手动关闭、已启用: √
}

触发器函数
—— 常用键值参考75

last() 最新值
nodata() 有无数据
diff() 变化,配合md5check()
avg()
min()
max()

手动添加图形

页面操作配置—》主机—》图形—》创建图形

自定义模版

页面操作配置—》模板—》创建模板
模版也分组,但意义不大,看着选就行
宏:{$变量}
复制监控项、触发器、图形到模版
页面操作配置—》主机—》批量更新—》模板链接√—》选择—》更新
复制配置文件到对应机器上,重启客户端

报警

邮件

页面操作管理—》报警媒介类型—》创建媒体类型
表单填写{
名称: “邮件报警”
类型: “电子邮件”
SMTP服务器: “smtp.exmail.qq.com”
端口: “465”
SMTP HELO: “exmail.qq.com”
SMTP电邮: “chenlongquan@azisamememe.shop”
安全连接: “SSL/TLS”
认证: “用户名和密码”
用户名称: “邮箱地址”
密码: “授权码” # work.exmail.qq.com 设置,邮箱绑定,生成新密码
Message fromat: “文本”
已启用: √
Message templates问题{
主题:
故障名称: {EVENT.NAME}
消息:
故障始于 时间: {EVENT.TIME}日期: {EVENT.DATE}
故障名称: {EVENT.NAME}
故障主机: {H0ST.NAME}
严重程度: {EVENT.SEVERITY}
额外信息: {EVENT.0PDATA}
故障ID: {EVENT.ID}
触发器地址: {TRIGGER.URL}
}
Message templates Problem recovery{
主题: 故障解决 in {EVENT.DURATION}∶{EVENT.NAME}
消息:
故障已经解决 时间: {EVENT.RECOVERY.TIME}
日期: {EVENT.RECOVERY.DATE}
故障名称: {EVENT.NAME}
故障持续时间: {EVENT.DURATION}
故障主机: {HOST.NAME}
故障级别: {EVENT.SEVERITY}
故障ID: {EVENT.ID}
触发器地址: {TRIGGER.URL}
}
}点击添加

添加报警用户

页面操作user setting—》profile—》报警媒介—》添加—》更新

配置触发器动作

页面操作配置—》动作—》Trigger actions—》停用的

企业微信报警

报警机器人

其他监控

java监控