保姆级教程|Loki+Promtail+Grafana 集成Zabbix 7,统一日志监控门户(全套配置附)
在线答疑乐维社区前言本文详细讲解LokiPromtailGrafana整套日志采集、存储、可视化方案的完整部署流程并实现与 Zabbix 监控平台的菜单跳转集成。该方案部署简便、运维成本低适用于企业内部服务器日志的统一收集、查询与监控。部署完成后运维人员可通过 Zabbix 统一入口直接查看各类系统日志无需在多个平台间切换显著提升运维工作效率。本次配置已开启 Grafana 匿名只读访问日常使用中请严格管控服务器网络权限保障日志数据安全。1.安装与下载1.1安装Loki以及Promtail可以在https://github.com/grafana/loki/releases中下载安装包解压Loki及promtail至指定目录创建目录mkdir /data/loki创建目录mkdir /data/promtail解压文件unzip loki-linux-amd64.zip解压文件unzip promtail-linux-amd64.zip1.2添加Loki配置文件编辑文件vim /data/loki/etc/loki.yaml配置内容如下# 认证配置auth_enabled: false# 端口配置server:# 监听的端口http_listen_port: 3100ingester:lifecycler:address: 127.0.0.1ring:kvstore:store: inmemoryreplication_factor: 1final_sleep: 0schunk_idle_period: 5mchunk_retain_period: 30sschema_config:configs:- from: 2020-07-29store: boltdbobject_store: filesystemschema: v11index:prefix: index_period: 168h# 存储位置配置storage_config:# 流文件存储地址boltdb:# 自定义boltdb目录directory: /data/software/loki/data/index# 索引存储地址filesystem:# 自定义filesystem目录directory: /data/software/loki/data/chunks# 采集限制配置limits_config:reject_old_samples: truereject_old_samples_max_age: 168h# 修改每用户摄入速率限制即每秒样本量默认值为4Mingestion_rate_mb: 30# 修改每用户摄入速率限制即每秒样本量默认值为6Mingestion_burst_size_mb: 15allow_structured_metadata: false# 日志回看配置chunk_store_config:# max_look_back_period: 0s# 回看日志行的最大时间只适用于即时日志7天# 表的保留期配置# #table_manager:# retention_deletes_enabled: false# retention_period: 0stable_manager:# 日志保留周期开关默认falseretention_deletes_enabled: true# 日志保留周期retention_period: 168h1.3启动Loki并查看端口及进程启动命令nohup /data/loki/bin/loki-linux-amd64 -config.file/data/loki/etc/loki.yaml 查看端口命令ss -lnt查看进程命令ps -ef |grep loki1.4添加Promtail配置文件vim /data/promtail/etc/promtail.yamlVim /data/PL/etc/promtail.yaml# 端口配置server:http_listen_port: 9080grpc_listen_port: 0# 记录游标位置positions:# 游标记录上一次同步位置filename: /data/promtail/etc/positions.yaml #根据实际路径进行修改# 每10秒同步一次sync_period: 10s# Loki服务器地址clients:- url: http://Loki部署主机IP:3100/loki/api/v1/push #根据实际路径进行修改# 日志文件配置scrape_configs:- job_name: zabbix_server #可以根据需要进行修改名称如Nginx日志可写nginxstatic_configs:- targets:- localhostlabels:job: zabbix_server #建议与job_name保持一致以便区分app: zabbix_server #建议与job_name保持一致以便区分env: test #标签log_type: web #日志类型__path__: /usr/local/zabbix/logs/zabbix_server.log #Zabbix日志所在路径注若需配置多个日志需从“- job_name:”开始完整复制且缩进需与上述“- job_name”保持一致启动Promtailnohup /data/promtail/bin/promtail-linux-amd64 -config.file/data/promtail/etc/promtail.yaml 注每次修改Promtail配置文件后均需重启服务2.Grafana下载及配置2.1下载Grafana可通过官网下载或使用以下链接下载sudo yum install -y https://dl.grafana.com/grafana-enterprise/release/12.2.0/grafana-enterprise_12.2.0_17949786146_linux_amd64.rpm 通过上述链接进行下载安装完成后输入部署主机IP:3000即可访问2.2数据源以及语言配置2.2.1中文配置完成上述操作后选择旁边的“Save”进行保存以下是可在界面上显示数据的配置2.2.2配置数据源按照图片步骤进行配置输入URL后点击“保存并测试”出现以下界面表示成功2.3Grafana日志监控配置点击“Show logs”后即可在面板中查看日志还可在查询区域根据字段匹配所需查看的日志上述设置仅实现日志查看功能若需保存配置请按以下步骤操作可在仪表盘处进行设置将需要监控的日志在仪表盘处创建2.4仪表盘配置点击“仪表盘”并选择“新建仪表盘选择刚才新增的“Loki-1选择“新建仪表盘”后点击“添加可视化点击“可视化”后按照以下步骤配置面板最后点击“保存仪表盘”即可完成配置下次查看日志时直接点击相应面板即可3.Zabbix配置3.1添加配置文件1.在Zabbix默认路径/usr/share/zabbix/modules/下创建目录目录名称可自定义此处示例命名为zdymk。随后在zdymk目录下分别创建controllers目录、views目录并创建manifest.json和Module.php两个配置文件具体配置内容如下1.1 manifest.json配置文件内容{manifest_version: 2, // Zabbix 7.0 模块格式必须设置为2id: zdymk, // 模块唯一标识必须与目录名称一致type: module, // module表示功能模块widget表示仪表盘小部件name: 日志监控, // 模块列表中显示的名称namespace: Zdymk, // PHP命名空间Zabbix用于拼接类名Modules\Zdymk\Controllers\MainViewversion: 1.0.0, // 模块版本号author: 日志监控, // 作者信息仅用于显示description: Custom menu module, // 描述信息仅用于显示controllers: {zdymk.main: { // 路由名称对应菜单中的setAction(zdymk.main)class: MainView // 控制器类名对应controllers/MainView.php文件}},assets: {js: [], // 自动加载的JS文件为空则不加载css: [] // 自动加载的CSS文件为空则不加载}}1.2 Module.php配置文件内容?phpdeclare(strict_types0); // 关闭严格类型检查namespace Modules\Zdymk; // 命名空间必须与manifest.json中的namespace一致use Zabbix\Core\CModule; // 引入Zabbix模块基类class Module extends CModule { // 空类定义必须存在Zabbix通过此类识别模块}2 在controllers目录下创建MainView.php配置文件配置内容如下?phpdeclare(strict_types0);namespace Modules\Zdymk\Controllers; // 命名空间manifest.json将按此路径拼接查找该文件use CController; // 引入Zabbix控制器基类class MainView extends CController { // 继承基类必须实现以下三个方法protected function checkInput(): bool {return true; // 不校验任何参数直接放行}protected function checkPermissions(): void {$this-validateLogin(); // 验证用户是否登录未登录跳转登录页}protected function doAction(): void {$this-setResponse(new CControllerResponseData([], true) // 生成响应// [] 不传任何数据给视图// true 不用 Zabbix 默认模板直接用视图文件渲染);}}3.于Views目录下添加配置文件zdymk.main.view.php其内容如下?phpdeclare(strict_types0); // 关闭严格类型检查(new CHtmlPage()) // 创建一个 Zabbix 页面对象-setTitle(_(zdymk)) // 设置页面标题为 zdymk-setBody(scriptwindow.location.hrefhttp://10.1.1.223:3000/?orgId1fromnow-6htonowtimezonebrowser;/script)// 页面内容就一行 JS浏览器直接跳转到 Grafana-show(); // 输出整个 HTML 页面给浏览器4.需对Zabbix的配置文件进行相应修改以下采用默认路径在/usr/share/zabbix/include/classes/helpers/CMenuHelper.php文件中添加以下内容// 在 Reports 菜单后面添加约161行$menu-add((new CMenuItem(_(zdymk)))-setAction(zdymk.main));5.在grafana.ini配置文件中修改以下内容路径为/etc/grafana/grafana.ini[auth.anonymous]enabled true # 允许匿名访问不登录也能看org_role Viewer # 匿名用户只有只读权限[security]allow_embedding true # 允许被 iframe 嵌入cookie_samesite none # 允许跨站嵌入Zabbix 和 Grafana 不同域名/端口完成以上配置后需进一步配置Zabbix的Web界面3.2启用新增模块1.以下为Zabbix 7版本的配置方法6版本操作类似在管理设置中找到模块点击模块后于右上角点击扫描目录即可发现前述新增目录点击启用目录即可3.3跳转验证启用后刷新界面日志监控将显示于菜单中点击日志监控会自动跳转至Grafana监控界面点击Dashboards即可查看上述监控的日志信息此方法建议采用匿名访问模式用户无需登录即可查看数据但仅具备读取权限不拥有写入权限。在此过程中需特别注意数据安全防护哦以上就是今天的内容了觉得不错的记得点赞哦