Zabbix+Grafana, Prometheus
搭建
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
- 备份数据
mysqldump -u root -p --all-databases > alldb.sql
- 删除
systemctl stop mariadbyum remove mariadb*
yum clean all && yum makecache && yum repolist && yum list| grep mariadb
- 安装
yum -y install MariaDB-server MariaDB-clientsystemctl enable --now mariadb# mysqld mysql 均可
- 升级系统表
mysql_upgrade -h 127.0.0.1 -u root -p
- 查看版本和旧的数据库是否存在
mysql -Vmysql -uroot -pselect user,host from mysql.user;show databases;
zabbix部分
- 创建数据库
create database zabbix charset utf8 collate utf8_bin;grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
导入数据表
cd zabbix-6.0.5/database/mysql/mysql -uroot -p zabbix <schema.sqlmysql -uroot -p zabbix <images.sqlmysql -uroot -p zabbix <data.sqlmysql -uroot -p zabbix <double.sqlmysql -uroot -p zabbix <history_pk_prepare.sql
编译安装 for centos 7
依赖安装
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编译安装(配置
./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-libpcremake install
make installecho $0
- 配置服务端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
- 配置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
- 获取客户端,监控自己
```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
- 启动
systemctl enable --now zabbix-agent2.service
- 替换字体
# /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—》停用的
企业微信报警
报警机器人
