Grafana部署与Zabbix集成,搭建开源IT监控平台

Grafana部署与Zabbix集成

目前在一家公司主要是网络、运维、IT支持,每次需要检查服务器状态都是需要手动登录系统进行查看,因此想着部署一套监控系统,功能上需要实现监控、可视化、告警等。由于预算没有,服务器资源倒是有空闲的,自己琢磨搭建一套开源的监控系统。

初步想法是Zabbix监控、但是本身Zabbix的图形展示没有那么好看,因此看到了Grafana,一开始打算在grafana做监控告警但是发现比较复杂,还没有那水平,因此现在是Zabbix收集数据,配置告警,Grafana作图形展示。

Zabbix安装与部署见之前的教程:Zabbix6.4.8部署

本次是Grafana的部署与集成配置。

Grafana部署

这边使用纯净Centos8进行安装,配置好系统yum更新以及系统时间等,见之前的文章。

系统:Centos8

版本:Grafana v10.2.1

下载地址:Grafana下载 可以下载好rpm上传到服务器或者直接yum下载。
yum安装 安装完成

# yum 安装
yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.2.1-1.x86_64.rpm

# 使用systemctl进行管理
# 刷新缓存
systemctl daemon-reload

# 启动服务进程
systemctl start grafana-server.service

# 开机启动进程
systemctl enable grafana-server.service

# 查看服务状态
systemctl status grafana-server.service

默认配置文件:/etc/grafana/grafan.ini

默认程序主目录目录:/usr/share/grafana,内容如下:包含主程序目录等,但是默认配置文件在以及PID目录在/etc/grafana/grafan.ini中定义。

drwxr-xr-x.  10 root root   210 11月 17 14:04 .
drwxr-xr-x. 103 root root  4096 11月 17 14:34 ..
drwxr-xr-x.   2 root root    62 11月 17 10:31 bin
drwxr-xr-x.   3 root root   107 11月 17 13:58 conf
drwxr-xr-x.   6 root root    73 11月 17 14:09 data
-rw-r--r--.   1 root root  5436 11月 14 18:15 Dockerfile
drwxr-xr-x.   3 root root    21 11月 17 10:31 docs
-rw-r--r--.   1 root root 12155 11月 14 18:15 LICENSE
-rw-r--r--.   1 root root   105 11月 14 18:15 NOTICE.md
drwxr-xr-x.   2 root root   254 11月 17 10:31 npm-artifacts
drwxr-xr-x.   6 root root    58 11月 17 10:31 packaging
drwxr-xr-x.   3 root root    78 11月 17 10:31 plugins-bundled
drwxr-xr-x.  16 root root   286 11月 17 10:31 public
-rw-r--r--.   1 root root  3157 11月 14 18:15 README.md
-rw-r--r--.   1 root root     8 11月 14 18:15 VERSION

插件和默认数据库目录:/var/lib/grafana,包含grafana.db数据库文件和plugins插件目录。

[root@grafana grafana]# ls -la
总用量 1164
drwxr-xr-x.  6 grafana grafana     111 11月 17 15:51 .
drwxr-xr-x. 42 root    root       4096 11月 17 10:31 ..
drwxr-x---.  3 grafana grafana      15 11月 17 10:32 alerting
drwx------.  2 grafana grafana       6 11月 17 10:32 csv
-rw-r-----.  1 grafana grafana 1183744 11月 17 13:53 grafana.db
-rw-r--r--.  1 root    root          0 11月 17 11:50 grafana.sql
drwxr-xr-x.  4 root    root         67 11月 23 11:27 plugins
drwx------.  2 grafana grafana       6 11月 17 10:32 png

默认使用sqlite作为数据库,使用端口3000访问网页服务。但是我还是想用mysql作为数据库存储较为稳定点,因此需要将原有的grafana.db转为sql文件再导入到mysql数据库中,而且我打算将grafana的数据库也存储在zabbix服务器的数据库上,省得麻烦了。

grafana数据库设置

登录zabbix服务器。

# 创建数据库
mysql> create database grafana character set utf8mb4 collate utf8mb4_bin;

# 创建一个数据库用户,账号是grafana,后面host写grafana的IP地址,否则不能正常访问
mysql> create user 'grafana'@'192.168.80.25' identified by 'E2Bsfdfq&jJWQN';

# 授予grafana用户grafana这个数据库的所有权限
mysql> grant all privileges on grafana.* to grafana@'192.168.80.25';

# 设置允许导入数据库语句
mysql> set global log_bin_trust_function_creators = 1;

# 刷新用户权限表
mysql> flush privileges;

# 退出数据库
mysql> exit;

数据库转换:

# 进入目录
/var/lib/grafana

# 转换数据
sqlite3 grafana.db .dump > grafana.sql

# yum安装mysql客户端
yum install mysql

# 导入数据库,指定zabbix服务器和数据库端口、用户、grafana,-D 导入数据库,回车输入密码
mysql -h 192.168.80.24 -u grafana -p -D grafana < grafana.sql

# 检查数据库及表是否导入成功
musql -h 192.168.80.24 -ugrafana -p

# 查看数据库
show databases;

# 进入数据库
use grafana;

# 查看数据表
show tables;

修改grafana.ini配置文件,修改为使用mysql存储。

# 进入配置文件目录
cd /etc/grafana/

# 备份配置文件
mv grafana.ini grafana.ini.bak

# 编辑文件
vim/etc/grafana/grafana.ini

# 找到[database]块,修改为对应的账号密码
[database]
type = mysql
host = 192.168.80.24:3306
name = grafana
user = grafana
password =E2BuFety&jJWQN

:wq保存文件

# 重启服务
systemctl restart grafana-server

开启防火墙,默认端口3000。

# 开启端口
firewall-cmd --zone=public --add-port=3000/tcp --permanent

# 刷新防火墙状态
firewall-cmd --reload

Grafana前端设置

http://192.168.80.25:3000登录首页,默认账号密码:admin/admin

默认是英文,设置中文显示,但是吧汉化似乎也不全,有一些没完成汉化。
设置中文 新建仪表板

grafana的大概思路是在一个仪表板展示所有数据,仪表板里面的pannel面板选择具体的监控数据,如内存指标、CPU指标、网络流量等。

我这边主要是从zabbix读取监控指标,grafana默认是不支持的,需要安装插件,有在线安装或者离线下载再上传到grafana服务器的方式安装插件。 在线安装:

# 进入主程序目录
cd /usr/share/grafana/bin

# 搜索插件
grafana-cli plugins list-remote|grep zabbix

# 安装
grafana-cli plugins install alexanderzobnin-zabbix-app

# 重启服务
systemctl restart grafana-server.service

离线方式: 下载地址:zabbix插件下载 下载完成上传到/var/lib/grafana/plugins目录,修改下权限。

默认安装完成的插件是禁用状态,需要手动开启,找到管理--插件--zabbix
插件 启用插件

URL填写Zabbix地址后面api_jsonrpc.php不用修改 http://192.168.80.24/api_jsonrpc.php

类型选择browser,下面认证填写Zabbix的登录账号密码,保存测试成功即可。

仪表板设置

有多种方式添加仪表板:手动创建、从grafana导入模版。

手动创建:首页--仪表板--创建新仪表板

数据源使用zabbix,然后选择对应的展示模式,有时序图、折线图、stat状态板。

group:主机群组 host:主机 item tag:监控项标签 item:监控项

通过创建多个可视化面板实现一个仪表板监控一台主机或者多个主机的指标展示在一个仪表板上。
展示

使用nginx代理grafana

原本想着修改grafana的默认3000端口为80,但是好像不行改低级别的端口,因此只能使用nginx代理了。

# 下载nginx包
wget https://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.24.0-1.el8.ngx.x86_64.rpm

# 安装
yum localinstall nginxxxxx.rpm

# 启动
systemctl start nginx

# 设置开机启动
systemctl enable nginx

# 修改nginx配置文件
vim /etc/nginx/nginx.conf

# 在http块添加如下内容:
http{
  map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
        }


}

# 在conf.d文件夹下新建grafana.conf配置文件添加server块
vim conf.d/grafana.conf

# 内容如下,修改对应地址
server {
    listen       80;
    server_name  192.168.80.25;
    #root   /usr/share/nginx/html;
    #index  index.html index.htm;
    access_log  /var/log/nginx/host.access.log  main;

    location / {
        #root   /usr/share/nginx/html;
        #index  index.html index.htm;
        #proxy_set_header Host $http_host;
        proxy_pass http://192.168.80.25:3000;
    }

    location /grafana/api/live/ws {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Host $http_host;
        proxy_set_header Connection $connection_upgrade;
        proxy_pass http://192.168.80.25:3000/;
  }
  
# 修改完成保存文件,重启nginx
systemctl restart nginx

# 放通防火墙端口和关闭selinux
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

# 修改selinux配置文件,注释enforcing,添加一行
vim /etc/sysconfig/selinux
#SELINUX=enforcing
SELINUX=disabled


# 重启服务器生效
reboot

到此就实现了Grafana+Zabbix的集成展示了,并且使用了nginx80端口代理。如果中间遇到问题需要一个个解决。

本文由mdnice多平台发布

相关推荐
行則独善其身31 分钟前
计算机网络-VPN虚拟专用网络概述
程序人生
行則独善其身6 小时前
华为无线AC+AP组网实际应用小结
程序人生
AI_小站1 天前
RAG 示例:使用 langchain、Redis、llama.cpp 构建一个 kubernetes 知识库问答
人工智能·程序人生·langchain·kubernetes·llama·知识库·rag
MapleLea1f1 天前
26届JAVA 学习日记——Day14
java·开发语言·学习·tcp/ip·程序人生·学习方法
我爱学Python!1 天前
解决复杂查询难题:如何通过 Self-querying Prompting 提高 RAG 系统效率?
人工智能·程序人生·自然语言处理·大模型·llm·大语言模型·rag
糊涂君-Q2 天前
Python小白学习教程从入门到入坑------习题课3(基础巩固)
python·学习·程序人生·职场和发展·学习方法·程序员创富·改行学it
吾店云建站2 天前
9个最佳WordPress PDF插件(查看器、嵌入和下载)
程序人生·pdf·创业创新·流量运营·程序员创富·教育电商
诸葛悠闲2 天前
《操作系统 - 清华大学》4 -3:非连续内存分配:页表——概述、TLB
linux·程序人生