一,mtail的用途?

mtail :从应用程序日志中提取指标以导出到时间序列数据库或时间序列计算器
它是一个google开发的日志提取工具,用途就是:
实时读取应用程序的日志、
再通过自己编写的脚本进行分析、
最终生成时间序列指标
 

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

 

二,下载mtail

1,mtail的官方站:
https://github.com/google/mtail
2,下载:
[root@SearchCacheServer ~]# cd /usr/local/source/
[root@SearchCacheServer source]# mkdir mtail
[root@SearchCacheServer source]# cd mtail/
[root@SearchCacheServer mtail]# wget https://github.com/google/mtail/releases/download/v3.0.0-rc35/mtail_v3.0.0-rc35_linux_amd64

三,安装mtail

1,增加可执行权限
[root@SearchCacheServer mtail]# chmod 744 mtail_v3.0.0-rc35_linux_amd64
2,把mtail可执行程序移动到安装目录
[root@SearchCacheServer mtail]# mkdir /usr/local/soft/mtail_v3.0.0-rc35_linux_amd64
[root@SearchCacheServer mtail]# mv mtail_v3.0.0-rc35_linux_amd64 /usr/local/soft/mtail_v3.0.0-rc35_linux_amd64/mtail
3,测试程序是否可以运行?查看mtail版本
[root@SearchCacheServer mtail]# /usr/local/soft/mtail_v3.0.0-rc35_linux_amd64/mtail --version
mtail version v3.0.0-rc35 git revision a33283598c4b7a70fc2f113680318f29d5826cca go version go1.14 go arch amd64 go os linux

四,运行mtail

1,创建目录,保存mtail程序
[root@SearchCacheServer phplogs]# mkdir -p /data/mtail/prog
[root@SearchCacheServer phplogs]# cd /data/mtail/prog/
[root@SearchCacheServer prog]# vi error_count.mtail
内容:
counter error_count

/ERROR/ {
error_count++
}

说明:error_count变量值统计了包含ERROR字串的行

说明:
mtail的例子,请参考:
https://github.com/google/mtail/tree/master/examples
2,运行mtail
[root@SearchCacheServer prog]# nohup /usr/local/soft/mtail_v3.0.0-rc35_linux_amd64/mtail -logtostderr -progs /data/mtail/prog/error_count.mtail -logs /data/logs/phplogs/prd_mobile_php_errors.log &
3,检查启动是否成功
[root@SearchCacheServer prog]# ss -lntp | grep mtail
LISTEN 0 128 *:3903 *:* users:(("mtail",27642,11))
已经守护在了3903
 
4,查看mtail的相关信息
http://121.122.123.118:3903/
mtail输出的metrics
http://121.122.123.118:3903/metrics

五,配置prometheus

[root@blog ~]# cd /usr/local/soft/prometheus-2.18.1.linux-amd64/
[root@blog prometheus-2.18.1.linux-amd64]# vi prometheus.yml
在scrape_configs下新增一个job
  - job_name: '118mtail'
static_configs:
- targets: ['121.122.123.118:3903'] 
 
重启prometheus服务
[root@blog prometheus-2.18.1.linux-amd64]# systemctl restart prometheus.service
我们可以通过prometheus查询error_count的值:
访问:注意把ip换成自己机器的ip
http://121.122.123.47:9090/graph
如图:
 
 

六,增加对alertmanager报警的配置

1,在rule文件中增加新的报警配置
[root@blog rules]# pwd
/data/prometheus/rules
[root@blog rules]# vi rule.yml
内容:
  - alert: ErrorlogStatus # alert 名字
expr: error_count{job="118mtail"} > 0 # 判断条件
for: 10s # 条件保持 10s 才会发出 alter
labels: # 设置 alert 的标签
severity: "critical"
annotations: # alert 的其他标签,但不用于标识 alert
description: php log error more than 20s
summary: php have error

说明:error_count>0是触发报警的条件

 
2,检查配置:
[root@blog prometheus-2.18.1.linux-amd64]# ./promtool check config prometheus.yml
Checking prometheus.yml
SUCCESS: 1 rule files found Checking /data/prometheus/rules/rule.yml
SUCCESS: 2 rules found
说明:也可以只检查rule配置文件:
[root@blog prometheus-2.18.1.linux-amd64]# ./promtool check rules /data/prometheus/rules/rule.yml
Checking /data/prometheus/rules/rule.yml
SUCCESS: 2 rules found
3,重启prometheus服务
[root@blog rules]# systemctl restart prometheus.service   
配置alertmanager部分请参考这一篇:
https://www.cnblogs.com/architectforest/p/13065262.html

七,查看prometheus的版本

[root@blog ~]# /usr/local/soft/prometheus-2.18.1.linux-amd64/prometheus --version
prometheus, version 2.18.1 (branch: HEAD, revision: ecee9c8abfd118f139014cb1b174b08db3f342cf)
build user: root@2117a9e64a7e
build date: 20200507-16:51:47
go version: go1.14.2

八,查看linux的版本

[root@blog ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

最新文章

  1. java多线程系类:JUC线程池:06之Callable和Future(转)
  2. 一个不错的vue表单验证插件
  3. php基础教程-输出Hello World
  4. IOS常用第三方开源类库&组件
  5. 【CodeForces 604B】F - 一般水的题1-More Cowbe
  6. keepalived +mysql 实战
  7. 去除hadoop启动时的警告
  8. EF中使用SQL语句或存储过程
  9. 智能指针(三):unique_ptr使用简介
  10. 用宏定义封装LoadLibrary,方便的动态加载dll
  11. canvas总结:元素大小与绘图表面大小
  12. 【IOS学习基础】归档和解档
  13. crontab定时任务(centos)
  14. vue 源代码创建tabs
  15. 实验二 Java面向对象程序设计实验报告
  16. POJ 3070(求斐波那契数 矩阵快速幂)
  17. Python基础-python数据类型(四)
  18. SDN2017 期末作业验收
  19. 支线任务2-Basic Calculator
  20. 对JDK、JRE和JVM的一些浅薄理解

热门文章

  1. 老男孩教育python全栈第22期Day15笔记
  2. 如何使用 TDengine 2.0 最新开源的集群功能?
  3. 月薪20k的java面试题他来了
  4. 预科班D9
  5. 分布式系统监视zabbix讲解四之可视化
  6. 吾日三省吾身 java核心代码 高并发集群 spring源码&思想
  7. 第二篇 配置wcf
  8. 手撸Mysql原生语句--增删改查
  9. VMware虚拟机ubuntu下安装VMware Tools步骤
  10. Spring Boot第二弹,配置文件怎么造?