目前在一家公司主要是网络、运维、IT支持,每次需要检查服务器状态都是需要手动登录系统进行查看,因此想着部署一套监控系统,功能上需要实现监控、可视化、告警等。由于预算没有,服务器资源倒是有空闲的,自己琢磨搭建一套开源的监控系统。
初步想法是Zabbix监控、但是本身Zabbix的图形展示没有那么好看,因此看到了Grafana,一开始打算在grafana做监控告警但是发现比较复杂,还没有那水平,因此现在是Zabbix收集数据,配置告警,Grafana作图形展示。
Zabbix安装与部署见之前的教程:Zabbix6.4.8部署
本次是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服务器的数据库上,省得麻烦了。
登录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
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的登录账号密码,保存测试成功即可。
手动创建:首页--仪表板--创建新仪表板
数据源使用zabbix,然后选择对应的展示模式,有时序图、折线图、stat状态板。
group:主机群组 host:主机 item tag:监控项标签 item:监控项
通过创建多个可视化面板实现一个仪表板监控一台主机或者多个主机的指标展示在一个仪表板上。
展示原本想着修改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 多平台发布